JP2005025563A - 仮想現実感生成方法 - Google Patents

仮想現実感生成方法 Download PDF

Info

Publication number
JP2005025563A
JP2005025563A JP2003191124A JP2003191124A JP2005025563A JP 2005025563 A JP2005025563 A JP 2005025563A JP 2003191124 A JP2003191124 A JP 2003191124A JP 2003191124 A JP2003191124 A JP 2003191124A JP 2005025563 A JP2005025563 A JP 2005025563A
Authority
JP
Japan
Prior art keywords
viewpoint
user
image
virtual reality
space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2003191124A
Other languages
English (en)
Inventor
Tomoyuki Isonuma
伴幸 磯沼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2003191124A priority Critical patent/JP2005025563A/ja
Publication of JP2005025563A publication Critical patent/JP2005025563A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)

Abstract

【課題】仮想現実感生成システムにおいて、視点追従機能を一時停止させ、それを再び開始させる場合に、視界を停止直前の状態に滑らかに復帰させ、快適で効率的な操作性を提供する。
【解決手段】仮想現実感生成システムにおいて、コントローラ106によって、視点追従動作の停止要求と再開要求を行わせ、視点追従動作停止要求時に、レシーバ102で検出するユーザの視点状態を記憶して復帰視点状態とし、その後視点追従動作を停止させ、視点追従動作再開要求後、レシーバ102によってユーザの視点状態を監視し続け、現在のユーザの視点状態が復帰視点状態に近くなった状態で初めて視点追従動作を再開させる。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明は、仮想現実感を提供する方法と装置、およびその方法を実現するためのプログラムに関するものである。
【0002】
【従来の技術】
従来の技術a
近年、コンピュータグラフィックス(以下CGと記す)を利用して仮想現実感を提供するシステムが普及し始めている。このような仮想現実感生成システムではCGによって仮想的な三次元空間の画像をリアルタイムに生成し、仮想現実感を実現している。CG画像の表示にヘッドマウントディスプレイ(以下HMDと記す)を利用した手法は、臨場感のある仮想現実感を実現できる手法として普及している。また、視点を検出するためのセンサをユーザに取り付け、視点変化をトラッキングし、その情報をCG画像生成時の視点情報に反映させれば、ユーザの視点変化に追従したCG画像を生成することができる。これによって、よりリアリティのある仮想現実感が提供できる。ユーザの視点情報を検出する手法には、磁気式位置センサによって頭部位置の運動をトラッキングする手法などが知られている。
【0003】
従来の技術b
近年、コンピュータグラフィックスを利用して仮想現実感を提供するシステムが普及し始めている。このような仮想現実感生成システムではCGによって仮想的な三次元空間の画像をリアルタイムに生成し、仮想現実感を実現している。CG画像の表示にHMDを利用した手法は、臨場感のある仮想現実感を実現できる手法として普及している。また、視点を検出するためのセンサをユーザに取り付け、視点変化をトラッキングし、その情報をCG画像生成時の視点情報に反映させれば、ユーザの視点変化に追従したCG画像を生成することができる。これによって、よりリアリティのある仮想現実感が提供できる。ユーザの視点情報を検出する手法には、磁気式位置センサを頭部に取り付け、頭部位置の運動をトラッキングする手法が知られている。また、HMD以外の表示装置を利用したシステムとして、CAVEと呼ばれるシステムも知られている。このシステムでは、ユーザを取り囲むように配置された複数のスクリーンに映像を投影することにより、広い視野角に基づく高い臨場感が実現できる。このシステムを使う場合にも、頭部位置検出機構により、ユーザの視点に応じて適切な視界を提供することが行われている。
【0004】
従来の技術c
近年、コンピュータグラフィックスを利用して仮想現実感を提供するシステムが普及し始めている。このような仮想現実感生成システムではCGによって仮想的な三次元空間の画像をリアルタイムに生成し、仮想現実感を実現している。CG画像の表示にヘッドマウントディスプレイを利用した手法は、臨場感のある仮想現実感を実現できる手法として普及している。また、視点を検出するためのセンサをユーザに取り付け、視点変化をトラッキングし、その情報をCG画像生成時の視点情報に反映させれば、ユーザの視点変化に追従したCG画像を生成することができる。これによって、よりリアリティのある仮想現実感が提供できる。
【0005】
ユーザの視点情報を検出する手法には、磁気式位置センサを頭部に取り付け、頭部位置の運動をトラッキングする手法が知られている。また、HMD以外の表示装置を利用したシステムとして、CAVEと呼ばれるシステムも知られている。
【0006】
このシステムでは、ユーザを取り囲むように配置された複数のスクリーンに映像を投影することにより、広い視野角に基づく高い臨場感が実現できる。このシステムを使う場合にも、頭部位置検出機構により、ユーザの視点に応じて適切な視界を提供することが行われている。
【0007】
このような視点追従型の仮想現実感生成システムでは、ユーザが頭を動かし周りを見渡すことにより、実質的に全方位、または広い方位の空間を観察することができる。また、ユーザの位置を仮想空間中で移動させることができるものも存在し、その場合、ユーザ位置の移動はユーザの手元のコントローラによって制御される。
【0008】
従来の技術d
近年、コンピュータグラフィックスを利用して仮想現実感を提供するシステムが普及し始めている。このような仮想現実感生成システムではCGによって仮想的な三次元空間の画像をリアルタイムに生成し、仮想現実感を実現している。CG画像の表示にヘッドマウントディスプレイを利用した手法は、臨場感のある仮想現実感を実現できる手法として普及している。また、視点を検出するためのセンサをユーザに取り付け、視点変化をトラッキングし、その情報をCG画像生成時の視点情報に反映させれば、ユーザの視点変化に追従したCG画像を生成することができる。これによって、よりリアリティのある仮想現実感が提供できる。ユーザの視点情報を検出する手法には、磁気式位置センサによって頭部位置の運動をトラッキングする手法などが知られている。
【0009】
従来の技術を示す文献としては、下記特許文献1,2がある。
【0010】
【特許文献1】
特開平8−160349号公報
【特許文献2】
特開平10−334274号公報
【0011】
【発明が解決しようとする課題】
前記従来の技術aについての課題
前述の従来の技術aに記載のような視点追従型の仮想現実感生成システムでは、場合によって、システム稼働中に視点追従機能を一時的に停止させたり、再度開始させたりしたい場合がある。そのような例として、システムの開発作業において、仮想空間中の特定の物体属性をキーボードやマウスを用いて調整するような場合が考えられる。
【0012】
その手順は次のようになる。
【0013】
まず、操作者は視点追従型の仮想現実感生成システムを実際に体験しながら、空間を見渡し問題物体を探す。問題物体を見つけると、物体を視界に収めた状態で視点追従機能を停止させ視界を固定する。そこで、HMDを外し、HMDに表示される映像と同じ映像を外部モニタで確認しながら、机上のキーボードやマウスなどを使って調整を行う。調整が終わると実際のシステム稼働中での様子を確認すべく、HMDを再び装着し視点追従機能を再開する。ここで、調整作業中はHMDを外したが、そうしなくとも、HMDのシースルー機能(HMD表示映像と外界視界の重畳機能)を利用し、HMDの脱着なしに同様の作業を行う場合も考えられる。
【0014】
このような視点追従機能の一時停止、および再開について考えると、一時停止を行う場合は、単に視点追従機能を停止させるだけでよいが、再開を行う場合には問題がある。視点追従を一時停止させ何らかの作業を行った後は、ユーザの視点は視点追従を一時停止させた状態とは異なる状態になっており、この状態で、単に視点追従を再開させると、ユーザに提供される仮想空間の視界は不連続に変化する。これはユーザに不快感を与えるだけでなく、問題となっていた物体を見失うことにもなる。よって、視点追従機能の一時停止、および再開を行う場合は、このような視界の不連続変化を低減させる対策が必要である。
【0015】
しかしながら、従来のシステムにおいて視点追従機能の一時停止、および再開を行う場合、視界の不連続変化に対処した操作手法が提供されていなかった。
【0016】
本発明は、このような状況のもとでなされたもので、仮想現実感生成システムにおいて、視点追従機能を一時停止させ、それを再び開始させる場合に、視界を停止直前の状態に滑らかに復帰させ、快適で効率的な操作性を提供することを第1の課題とするものである。
【0017】
前記従来の技術bについての課題
前記従来の技術bに記載のような視点追従型の仮想現実感生成システムでは、CG画像生成処理に多くのコンピュータ資源を使い電力を消費する。また、HMDに画像を出力し続けることはHMDの液晶の劣化を早めることにもなる。よって、システムが使用されていない場合はコンピュータによるCG画像生成処理やHMDへの出力を停止させ、資源の節約を行う事が好ましい。
【0018】
しかし、従来のシステムにおいて、CG画像生成の動作を停止、または開始させる場合、ユーザ、若しくは補助オペレータによる何らかの手動操作が必要であった。よって、資源の節約を行うためには、ユーザ自身に余分な操作を要求するか、補助オペレータを必要とするか、若しくは資源の節約を諦め連続運転させる必要があった。
【0019】
本発明は、このような状況のもとでなされたもので、仮想現実感生成システムにおいて、煩雑な操作なく待機中の資源の節約を可能にすることを第2の課題とするものである。
【0020】
前記従来の技術cについての課題
前述の従来の技術cに記載のような視点追従型の仮想現実感生成システムでは、ユーザが自然な直視状態から様々な角度に頭を傾け、全方位、または広い方位の空間を観察することができる。この時、ユーザは場合によって、頭を傾けた状態で見える物体に関心を持ち、その物体の詳細な観察を行う場合が考えられる。例えば、星座の観察シミュレーションを実行した場合、ユーザは暫く天空を概略的に観察した後、上方に見える特定の星座に興味を持つ、という状況が考えられる。この場合、仮想現実感の本来の目的に基づき、ユーザには実際の星座観察と同等の体験を強い、不自然な姿勢での観察を行わせてもよい。しかし、それよりはユーザの快適性を重視し、空間自体をユーザの都合に合わせて移動させ、ユーザの見易い自然な直視状態で注目物体が観察できるようにした方が好ましい。
【0021】
このように仮想現実感生成システムでは、現実と同じように、固定された空間中にユーザを置き仮想現実を体験させるという手法を備えた上で、さらに、ユーザの視点に合わせて空間を移動させ、ユーザの視界位置を調整するという手法も備えた方が好ましい。
【0022】
しかしながら、従来の視点追従型の仮想現実感生成システムにおいて、ユーザ視点位置に対する空間の移動、または等価なことであるが空間に対するユーザ視点位置の移動は、ユーザの視点追従機構とは独立したコントローラで行われていた。このようなコントローラを使う場合、ユーザは通常HMDを注視した状態で手元のコントローラを操作する。このため、コントローラの構造は単純で、かつその操作方法も簡単なものでなければならない。その結果、空間を移動させるような操作、または視界位置を調整するような操作を正確に行うことは難しかった。
【0023】
本発明は、このような状況のもとでなされたもので、仮想現実感生成システムにおいて、ユーザが注目物体を正面の視界に収めるべく空間配置を調整する際に、ユーザの体感する仮想現実感を、より快適な操作性とともに実現することを第3の課題とするものである。
【0024】
従来の技術dについての課題
前述の従来の技術dに記載のようなHMDを用いた仮想現実体験では、ユーザは頭部にHMDを装着する。この場合、ユーザの視界は外界から遮蔽され、HMDの表示画面のみが見えるようになる。これによって仮想現実体験の没入感を高めることができる。HMDとして、シースルー機能、すなわちHMD表示映像と外界視界の重畳機能を持つものを利用し、仮想と現実の複合現実感体験を行う場合もある。しかし、仮想空間にユーザを没入させることが目的である場合は、通常、HMDの装着によって外界の視界は遮断され、HMDの表示画面のみが提供される。このため、ユーザがHMDを装着した場合、ユーザの視界は現実の外界視界から、仮想空間視界へと突然に変化し、この急激な変化はユーザにとって好ましくない。
【0025】
例えば、仮想現実体験を行う体験スペース(部屋など)が明るい場所であり、仮想現実で提供される空間が暗いものであった場合、HMD装着時、あるいは外した時の視界の不連続性は、ユーザに違和感、または不快感を与える。さらに、視点追従機構が付加されたシステムでは、ユーザは体験開始直後、システムの視点追従動作に慣れるべく、自分の頭部(視点)を適度に動かし仮想空間映像の視点変化を確認する。この時、ユーザは、今まで見ていた現実視界とは大きく異なる仮想空間の映像を見ることになるため、視点追従動作への順応が迅速に行われない。
【0026】
このように、HMDを用いた仮想現実感生成システムでは体験開始時の現実視界と仮想空間視界の差異が問題となるが、従来、この問題に対する適切な対策が行われていなかった。
【0027】
本発明は、このような状況のもとでなされたもので、仮想現実感生成システムにおいて、仮想現実への移行が滑らかに行われ快適な仮想現実感を提供することを第4の課題とするものである。
【0028】
【課題を解決するための手段】
前記第1ないし第4の課題を解決するため、本発明では、仮想現実感生成方法を次の(1)ないし(4)、(7)〜(9)、(12)〜(17)、(20)〜(22)のとおりに構成し、仮想現実感生成システムを次の(5),(10),(18),(23)のとおりに構成し、プログラムを次の(6),(11),(19),(24)のとおりに構成する。
【0029】
(1)三次元空間の可視化画像をコンピュータグラフィックスすなわちCGによって生成する仮想現実感生成方法において、
ユーザの視点変化を視点検出機構により逐次検出し、その変化をCG画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、
ユーザの制御によって、視点追従動作の停止要求と再開要求を行わせ、視点追従動作停止要求時に、ユーザの視点状態を記憶して復帰視点状態とし、その後視点追従動作を停止させ、視点追従動作再開要求後、ユーザの視点状態を監視し続け、現在のユーザの視点状態が復帰視点状態に近くなった状態で初めて視点追従動作を再開させる、ことを特徴とする仮想現実感生成方法。
【0030】
(2)前記(1)に記載の仮想現実感生成方法において、
前記視点検出機構として、ユーザの頭部に三次元位置回転センサを装着することによって、ユーザの視点検出を行うことを特徴とする仮想現実感生成方法。
【0031】
(3)前記(1)または(2)に記載の仮想現実感生成方法において、
ユーザにヘッドマウントディスプレイを装着させ、CG画像を該ヘッドマウントディスプレイに表示させることを特徴とする仮想現実感生成方法。
【0032】
(4)前記(1)ないし(3)のいずれかに記載の仮想現実感生成方法において、
前記現在のユーザの視点状態が復帰視点状態に近くなった状態は、視点の状態を、視点位置を表す三次元座標と視点方向を表す三次元回転角から構成される多次元ベクトルで表し、二つの視点状態ベクトルについて、各成分の差全てが閾値以下であれば近くなった状態と判断する、ことを特徴とする仮想現実感生成方法。
【0033】
(5)三次元空間の可視化画像をコンピュータグラフィックスすなわちCGによって生成する仮想現実感生成システムにおいて、
ユーザの視点変化を逐次検出する視点検出機構と、
ユーザより視点追従動作の停止要求と再開要求を受ける要求受理手段と、
前記視点検出機構で検出した視点変化をCG画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、前記要求受理手段が視点追従動作の停止要求を受けたときに、ユーザの視点状態を記憶して復帰視点状態とし、その後視点追従動作を停止させ、前記要求受理手段が視点追従動作の再開要求を受けたときに、前記視点検出機構でユーザの視点状態を監視し続け、現在のユーザの視点状態が記憶していた復帰視点状態に近くなった状態で初めて視点追従動作を再開させるように制御する制御手段と、を備えたことを特徴とする仮想現実感生成システム。
【0034】
(6)前記(1)ないし(4)のいずれかに記載の仮想現実感生成方法を実現するためのプログラム。
【0035】
(7)視点検出機構として、ユーザの頭部に装着された三次元位置回転センサを利用し、三次元空間の可視化画像をコンピュータグラフィックスすなわちCGによって生成する仮想現実感生成方法において、
ユーザの視点変化を前記視点検出機構により逐次検出し、その変化をCG画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、
システム未使用中は前記三次元位置回転センサを特別の状態で配置し、該三次元位置回転センサの情報によってシステムが使用中か未使用中かを自動判別し、未使用中はCG画像生成処理を停止させることを特徴とする仮想現実感生成方法。
【0036】
(8)前記(7)に記載の仮想現実感生成方法において、
ユーザにヘッドマウントディスプレイを装着させ、CG画像を該ヘッドマウントディスプレイに表示させることを特徴とする仮想現実感生成方法。
【0037】
(9)前記(7)または(8)に記載の仮想現実感生成方法において、
前記特別な状態は、前記三次元位置回転センサを、特定の場所に置くか、または特定の向きに置くか、またはその両方であることを特徴とする仮想現実感生成方法。
【0038】
(10)ユーザの頭部に装着された三次元位置回転センサを利用して視点検出を行う視点検出機構を備え、システム未使用中は該三次元位置回転センサを特別の状態で配置するようにした、三次元空間の可視化画像をコンピュータグラフィックスすなわちCGによって生成する仮想現実感生成システムにおいて、
ユーザの視点変化を前記視点検出機構により逐次検出し、その変化をCG画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、前記三次元位置回転センサの情報によってシステムが使用中か未使用中かを自動判別し、未使用中はCG画像生成処理を停止させるように制御する制御手段を備えたことを特徴とする仮想現実感生成システム。
【0039】
(11)前記(7)ないし(9)のいずれかに記載の仮想現実感生成方法を実現するためのプログラム。
【0040】
(12)三次元空間の可視化画像をコンピュータグラフィックスすなわちCGによって生成する仮想現実感生成方法において、
ユーザの視点変化を視点検出機構により逐次検出し、その変化をCG画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、
CG画像生成の視点設定とユーザの視点変化の対応付けを、視界補正用の変換を介して行い、
ユーザの視点にCG画像の視界が追従する通常観察状態と、視界位置の調整を行う視界調整状態の二つの動作状態を設け、二つの状態をユーザの意図的操作により切り替えさせ、視界調整状態中に行われたユーザの視点変化量を視界補正用の変換に反映させようにし、視界調整状態中のユーザの視点変更動作によって、三次元空間画像の視界基準点を調整できるようにしたことを特徴とする仮想現実感生成方法。
【0041】
(13)前記(12)に記載の仮想現実感生成方法において、
前記視点検出機構として、ユーザの頭部に三次元位置回転センサを装着することによって、ユーザの視点検出を行うことを特徴とする仮想現実感生成方法。
【0042】
(14)前記(12)または(13)に記載の仮想現実感生成方法において、ユーザにヘッドマウントディスプレイを装着させ、CG画像をヘッドマウントディスプレイに表示させることを特徴とする仮想現実感生成方法。
【0043】
(15)前記(12)ないし(14)のいずれかに記載の仮想現実感生成方法において、
ユーザの意図的操作はボタンの押下であることを特徴とする仮想現実感生成方法。
【0044】
(16)前記(12)ないし(15)のいずれかに記載の仮想現実感生成方法において、
前記視界調整状態中はCG画像の視界変化を停止させることを特徴とする仮想現実感生成方法。
【0045】
(17)前記(12)ないし(16)のいずれかに記載の仮想現実感生成方法において、
物体が配置される物体空間から視点を基準にした視界空間への座標変換である物体視界変換を用い、三次元空間を定義する物体座標に、物体視界変換を作用させCG画像生成を行い、
通常観察状態から視界調整状態に変わった場合に、その時でのユーザの視点状態を第一視点状態として記憶し、
視界調整状態から通常観察状態に変わった場合に、その時点のユーザの視点状態を第二視点状態として、第二視点状態に対応する物体視界変換に、視界補正用の変換を施した結果が、第一視点状態に対応する物体視界変換に等しくなるよう視界補正用変換を求めることを特徴とする仮想現実感生成方法。
【0046】
(18)ユーザの視点変化を検出する視点検出機構と、ユーザの視点にCG画像の視界が追従する通常観察状態と視界位置の調整を行う視界調整状態の二つの動作状態を切り替える切り替え手段とを備え、三次元空間の可視化画像をコンピュータグラフィックスすなわちCGによって生成する仮想現実感生成システムにおいて、
前記視点検出機構によりユーザの視点変化を逐次検出し、その変化をCG画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、
CG画像生成の視点設定とユーザの視点変化の対応付けを、視界補正用の変換を介して行い、
前記切り替え手段により通常観察状態から視界調整状態に切り替えたとき、視界調整状態中に行われたユーザの視点変化量を視界補正用の変換に反映させようにし、視界調整状態中のユーザの視点変更動作によって、三次元空間画像の視界基準点を調整できるようにしたことを特徴とする仮想現実感生成システム。
【0047】
(19)前記(12)ないし(17)のいずれかに記載の仮想現実感生成方法を実現するためのプログラム。
【0048】
(20)三次元空間の可視化画像をコンピュータグラフィックスすなわちCGによって生成する仮想現実感生成方法において、
ユーザにヘッドマウントディスプレイを装着させ、CG画像をヘッドマウントディスプレイに表示させ、
主たる可視化対象となる第一の三次元空間データと、体験を行う実在空間を模擬した第二の三次元空間データを用い、
第一の三次元空間の仮想体験を行う前に、第二の三次元空間を実在の体験者位置の視点で可視化し模擬実在体験空間の予備体験を行わせ、その後、第一の三次元空間の可視化による主たる三次元空間の仮想体験を行わせることを特徴とする仮想現実感生成方法。
【0049】
(21)前記(20)に記載の仮想現実感生成方法において、
ユーザの視点変化を視点検出機構により逐次検出し、その変化をCG画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成することを特徴とする仮想現実感生成方法。
【0050】
(22)前記(20)または(21)に記載の仮想現実感生成方法であって、主たる三次元空間の仮想体験の前に行われる予備体験において、第二の三次元空間物体の透過率を徐々に上げ、同時に第一の三次元空間物体の透過率を徐々に下げながら、第一と第二の三次元空間を同時に可視化し、予備体験から主たる仮想体験に遷移させることを特徴とする仮想現実感生成方法。
【0051】
(23)三次元空間の可視化画像をコンピュータグラフィックスすなわちCGによって生成し、ユーザにヘッドマウントディスプレイを装着させ、生成したCG画像をヘッドマウントディスプレイに表示させる仮想現実感生成システムにおいて、
主たる可視化対象となる第一の三次元空間データと、体験を行う実在空間を模擬した第二の三次元空間データを用い、第一の三次元空間の仮想体験を行う前に、第二の三次元空間を実在の体験者位置の視点で可視化し模擬実在体験空間の予備体験を行わせ、その後、第一の三次元空間の可視化による主たる三次元空間の仮想体験を行わせるように制御する制御手段を備えたことを特徴とする仮想現実感生成方法。
【0052】
(24)前記(20)ないし(22)のいずれかに記載の仮想現実感生成方法を実現するためのプログラム。
【0053】
【発明の実施の形態】
以下本発明の実施の形態を、仮想現実感生成システムの実施例により詳しく説明する。なお、本発明は、システムの形に限らず、実施例の説明に裏付けられて、方法の形で、さらにこの方法を実現するためのプログラムの形で実施することができる。
【0054】
【実施例】
(実施例1)
実施例1である“仮想現実感生成システム”を図1〜図4を用いて説明する。
【0055】
(全体構成)
図1は本実施例の装置構成の概念図である。
【0056】
コンピュータ103はCG画像を生成し、その映像はHMD101に出力される。ユーザはHMD101を装着し、コンピュータ103から出力される映像を仮想空間として体験する。ユーザは、手元に置かれたコントローラ106を操作して必要に応じてシステムを調整作業モードにし、調整作業を行う。HMD101はシースルー機能が付いておりHMD101に付いたボタンによって、表示映像のみが鑑賞できる状態と、表示映像に外界視界を重畳させて鑑賞できる状態を切り替えられる。これによって、HMD101を外さずに手元の調整機器を使った作業ができるようになる。ただし、HMD101にシースルー機能が無くとも、HMD表示映像を補助的なディスプレイで確認できるようにし、HMD101を外して調整作業をしてもよい。
【0057】
本実施例ではユーザの視点を検知する手法として磁気式位置センサ用いる。磁気式位置センサは製品(ポヒマス社製品など)が存在し、公知の機器であるため詳細な説明は省略する。磁気式位置センサは磁場を生成するトランスミッタ105、誘導電流を検出するレシーバ102、および制御用の位置センサコントローラ104から構成される。レシーバ102はユーザの頭部に装着され、トランスミッタ105はレシーバ102との相対位置を考慮して、適宜な位置に配置される。通常、レシーバ102はHMD101に取り付けHMDと一体化する場合が多い。これによってHMD101の装着とレシーバ102の装着が同時に行われるため便利である。本実施例でもレシーバ102とHMD101を一体化させる。
【0058】
レシーバ102には、トランスミッタ105に対するレシーバ102の相対変位に応じた電流が発生し、位置センサコントローラ104ではこれを解析し、位置データを算出する。位置センサコントローラ104はコンピュータ103に接続され、位置データがコンピュータ103に送られる。位置センサコントローラ104とコンピュータ103間のデータ通信にはシリアル通信が用いられる。以後、頭部位置検出用磁気式位置センサを単に位置センサとよぶ。また、位置センサのデータは位置情報と回転情報の両方を含むが、単に位置データとよぶことにする。
【0059】
(コンピュータの構成)
図2は本実施例に使われるコンピュータ103の構成を示したものである。コンピュータ103の記憶装置204には、本実施例の仮想現実感を生成するためのプログラムが格納される。また、仮想空間を構成する三次元物体データ等もコンピュータ103の記憶装置204に格納される。この三次元物体データとは、頂点座標情報と、各頂点の連結によって定義されるポリゴンのデータである。記憶装置204に格納されたプログラムはコンピュータ103のCPU202によって実行され、画像メモリ205にCG画像が生成される。ただし、最近のコンピュータでは、CG画像をCPUによってのみ生成するのではなく、専用のハードウェアを併用して生成する場合が多い。206はそのようなCG画像生成専用のハードウェアである。画像メモリ205に生成されたCG画像は、コンピュータ103に接続されたHMD101に出力される。コンピュータ103にはコントローラ210が接続され、視点追従停止・再開操作に使われる。コントローラ210には視点追従停止用と再開用の二つのボタンが付いている。コンピュータ103には、周辺機器としてキーボード208やマウス209が接続され、コンピュータ103の操作に利用される。これらのキーボード208やマウス209をコントローラ210の変わりに使用してもよい。コンピュータ103のシリアル通信装置203には位置センサコントローラ104が接続され、位置センサ104からの位置データがコンピュータ103に取り込まれる。
【0060】
(処理手順の説明)
図3のフローチャートは本実施例の処理手順を表している。以下、図3を用いて本実施例の処理手順を説明して行く。
【0061】
最初に、処理手順の概略を述べておく。
【0062】
処理全体の動作は大きく三つの動作モードに分かれる。三つの動作モードとは「実行中」、「一時停止」、および「復帰待ち」である。動作モードが「実行中」の場合は通常の視点追従動作が行われる。動作モードが「実行中」の状態で、ユーザが調整作業を希望する場合、ユーザは手に持ったコントローラ106の「一時停止ボタン」を押下して、「動作モード」を「一時停止」に変える。この時、ユーザの視点状態を記憶しておく。動作モードが「一時停止」になると、視点追従動作が停止し、ユーザは静止した仮想空間の画面を見ながら調整作業を行うことができる。調整作業終了後、通常の視点追従動作を再開する場合、ユーザは手に持ったコントローラの「再開ボタン」を押下する。この時、動作モードを一旦「復帰待ち」状態に遷し、視点追従動作の開始を保留する。動作モードが「復帰待ち」の場合は、ユーザの視点を監視し続け、ユーザの視点が記憶した「一時停止ボタン」押下時の状態と等しいか、または近い状態になった時に初めて、動作モードを「実行中」に変え、視点追従動作を再開する。これによって、視点追従動作が実際に再開された場合、今まで停止していた仮想空間の視界が不連続に変化することなく、滑らかに視点追従が開始される。
【0063】
以下、図3の各処理を説明する。
【0064】
処理全体にわたり使用する変数として、前述の動作モードに対応した変数「動作モード」を用意する。
【0065】
プログラムが開始されると、ステップ301(図では301と略記する、以下同様)の初期化処理を行い、ステップ302において終了要求が発生するまで、ステップ302以下の処理を繰り返す。
【0066】
ステップ301の初期化処理では、「動作モード」変数を「実行中」に設定しておく。
【0067】
ステップ302における終了要求とは、ユーザがキーボード208、またはマウス209を使ってプログラムの終了を要求することである。
【0068】
ステップ303以下の流れは「動作モード」の値に応じて三つに分かれる。
【0069】
まず「動作モード」が「実行中」の場合を説明する。
【0070】
ステップ304ではコントローラ106の一時停止ボタンが押下されたかどうかを調べ、もし、押下された場合は動作を切り替えるべくステップ305に進み、押下されていない場合は、通常の視点追従動作を行うべくステップ307に進む。
【0071】
ステップ307に進んだ場合を説明する。ステップ307に進んだ場合は、位置センサコントローラ104から送られてくる位置データを読み取る。位置センサコントローラ104から送られてくる位置データには、位置センサレシーバ102のトランスミッタに対する変位情報が記され、次の6成分のデータが順番に並んでいる。すなわち、レシーバ102のトランスミッタに対する並進成分のX座標、Y座標、およびZ座標、さらに、レシーバ102のトランスミッタに対する回転を表す第一回転角、第二回転角、および第三回転角である。ただし、三つの回転角は、X軸、Y軸、およびZ軸周りのオイラー角で表現される。
【0072】
ステップ308では、センサから得た位置データに基づき、ユーザの視点に追従するようCG画像を生成し、その画像をHMD101に出力する。CG画像の生成方法は後述の「CG画像生成」にて説明することにし、ここでは全体の流れを先に説明してしまう。
【0073】
ステップ308を終えると、処理を繰り返すべくステップ302に戻る。
【0074】
ステップ304においてステップ305に進んだ場合は、まず、「動作モード」を「一時停止」に設定する。続いて、ステップ306において位置センサから位置データを取得し、これを「復帰視点データ」として記憶し、次の処理を繰り返すべくステップ302に戻る。
【0075】
次に、「動作モード」が「一時停止」であった場合のステップ303以降の流れを説明する。
【0076】
ステップ309ではコントローラ106の再開ボタンが押下されたかどうかを調べ、もし、押下された場合は動作を切り替えるべく「動作モード」を「復帰待ち」に設定しステップ302に戻る。
【0077】
ステップ309においてコントローラ106の再開ボタンが押下されていない場合は、調整処理のステップ311を行う。調整処理としては、仮想空間中の着目物体の属性を変えるような操作が考えられる。その場合、調整処理の内容としては、キーボード208やマウス209の入力を調べ、それら入力に応じて物体の色や大きさを変更するような処理を行えばよい。調整処理において物体属性を変えた場合は、その結果を表示画面に反映させるべく、ステップ312のCG画像生成処理を行う。このステップ312は前記ステップ308と同じものであり、後述の「CG画像生成」にて説明する。
【0078】
次に、「動作モード」が「復帰待ち」であった場合のステップ303以降の流れを説明する。
【0079】
ステップ313では位置センサからの位置データを読み取る。この処理のステップ313は前記ステップ307と同じである。
【0080】
読み取った位置データが特定の復帰条件を満たす場合は、「動作モード」を「実行中」に設定しステップ302に戻り、視点追従動作を再開する。位置データが復帰条件を満たさない場合は何もせず、位置データの監視を繰り返すべくステップ302に戻る。ここで、復帰条件とは、現在の位置データがステップ306にて記憶した「復帰視点データ」に十分近い場合に条件を満たすものとする。二つの位置データの近さ判別は、位置データの6成分それぞれについて、その差を調べ、全てが適度な値以下であれば十分近いと判断すればよい。
【0081】
(CG画像生成)
最後に、ステップ308とステップ312にて行われるCG画像生成処理の内容を説明する。
【0082】
CG画像生成処理では位置センサから得た位置データに基づき、描画の視点設定を変え、描画を行う。
【0083】
まず、CG画像生成における描画方法と視点設定の方法について説明する。
【0084】
図4は、CG計算により三次元物体データを二次元画像化、すなわちレンダリングする方法を示している。CG計算のアルゴリズムは複数存在するが、ここではリアルタイム処理の分野で広く用いられているポリゴン単位の計算方法(以降、ポリゴンレンダリング)を取り上げる。ポリゴンレンダリングは、物体を構成する各ポリゴンに対し、図4に示したステップ402〜405の行程を施すことによって行われる。
【0085】
すなわち、まず、絶対的空間、いわゆるワールド座標系に配置されたポリゴン401を、視点に相対な空間、いわゆるカメラ座標系に変換する(ステップ402)。このステップ402の変換を以後、ワールド/カメラ座標変換とよぶ。続いて、ポリゴンに陰影を付けるための照明計算(ステップ403)を行う。続いて、三次元座標から二次元座標への投影変換と画素座標へのマッピング(ステップ404)を行う。この時、ポリゴンの三次元座標には投影行列による変換が施され、視体積へのクリッピングと投影処理が行われる。また、ビューポート変換によって投影面上の座標が実際の描画画素座標へマッピングされる。最後に、ポリゴン像の塗りつぶし、すなわちラスタライズ処理(ステップ405)を施し、最終的にポリゴンのレンダリング画像406が得られる。これらの各工程の内容は広く知られたものであり、また、レンダリングエンジンによって実行されるものである。よって、本実施例の視点変更に関わる部分以外、詳細な説明は省略する。
【0086】
前記ポリゴンレンダリングにおいて、CG画像の視点を変化させるためにはステップ402のワールド/カメラ座標変換の設定を変更すればよい。そして、CG画像の視点をユーザの視点変化に追従させるためには、ユーザ視点情報、すなわち位置センサのデータに応じてワールド/カメラ座標変換を変更しレンダリングすればよい。
【0087】
以下、ワールド/カメラ座標変換の変更方法について説明する。
【0088】
CGの一般的な考え方では、レンダリング視点を決める要因を、実世界のメカニズムと対応させ、カメラという概念で表現する。ワールド座標系からカメラ座標系への座標変換は、ワールド座標系にカメラ(カメラ座標系)がどのように配置されているかという情報で表現できる。カメラの配置はカメラの位置と回転によって表現できる。よって、ワールド/カメラ座標変換は希望する視点に置かれたカメラの位置と回転情報から計算される。
【0089】
(ワールド/カメラ座標変換の計算方法)
ワールド/カメラ座標変換は通常、同次座標を用いて表される。すなわち、ワールド座標系の任意の一点(x,y,z,1)は、ワールド/カメラ座標変換Mによって、対応するカメラ座標系の一点(x’,y’,z’,1)に変換され、(式1)のように表すことができる。(式1)の3×3部分行列、m11〜m33は回転成分を表しており、この部分をRwcとする。また、(式1)のTx、Ty、Tzは並進成分を表している。
【0090】
(式1)
Figure 2005025563
【0091】
ワールド/カメラ座標変換の逆変換である、カメラ座標系からワールド座標系への変換、すなわちカメラ/ワールド座標変換も(式1)と同様な形式として、(式2)で表すことができる。ここで、(式2)のRcwはワールド座標におけるカメラの回転を表しており、(Cx,Cy,Cz)はカメラの位置を表している。
【0092】
(式2)
Figure 2005025563
【0093】
カメラの位置と回転情報からワールド/カメラ座標変換を計算するには、一旦、カメラ/ワールド座標変換を求め、その逆変換を求めることによって行う。通常カメラの回転は、ワールド座標で表現される回転軸とその周りの回転角で表現される。今、回転軸を(Xa,Ya,Za)とし、回転角をθラジアンとすると、カメラ/ワールド座標変換行列の回転成分Rcwは、(式3)で計算される。
【0094】
(式3)
Figure 2005025563
【0095】
カメラの回転が複数の回転の合成である場合は、個々の回転に対応した(式3)の行列を全て掛け合わせればよい。本実施例で使用する位置センサの回転データは、空間固定のX軸、Y軸、Z軸に関する三つのオイラー角(θx,θy,θz)である。よって、各オイラー角から(式3)で回転行列を求め、それらを掛け合わせればよい。便宜の為、(θx,θy,θz)を入力とし回転行列Rcwを出力するこれらの計算過程をFと表し、Rcwの計算を(式4)の形で略記する。
【0096】
(式4)
Rcw←F(θx,θy,θz)
(式3)のワールド/カメラ座標変換行列のRwcは、Rcwの逆行列として求まるが、ここではRcwが回転成分しか持たないので、単にRcwの転置行列をRwcとすればよい。すなわち、(式5)でRwcが求まる。
【0097】
(式5)
Figure 2005025563
【0098】
さらに、Rwcが求まれば、ワールド座標におけるカメラの位置(Cx,Cy,Cz)から、(式1)のTx、Ty、Tzが(式6)によって求められる。ここで、カメラの位置(Cx,Cy,Cz)には位置センサからの位置データを割り当てる。
【0099】
(式6)
Figure 2005025563
【0100】
よって、RcwからRwc求まり、さらにRwcと(Cx,Cy,Cz)から(Tx,Ty,Tz)が求まり、最終的に(式1)のM、すなわち、ワールド/カメラ座標変換行列が求まる。ただし、仮想現実感生成システムではユーザの視点位置の変化よりも視点方向の変化の方が重要であり、視点位置の変化、すなわち(Cx,Cy,Cz)の変化を仮想空間に反映させない場合も多い。その場合、(Cx,Cy,Cz)には適度な定数を使用すればよい。便宜の為、Rwc、(Cx,Cy,Cz)を入力としMを出力するこれらの計算過程をGと表し、Mの計算を(式7)の形で略記する。
【0101】
(式7)
M←G(Rcw,Cx,Cy,Cz)
結局、ワールド/カメラ座標変換を設定するための必要な計算は、位置センサの回転データをカメラの回転(θx,θy,θz)に割り当て、また位置センサの位置データをカメラの位置(Cx,Cy,Cz)に割り当て、(式4)と(式7)の計算を行うことである。これらの計算を図3のステップ308やステップ312において行い、求めたMをレンダリングエンジンに設定し描画を実行する。ただし、図3のステップ312では視点追従は停止しているので視点変更に関わる計算は省略してよい。なお、位置データをCGのカメラ位置に使用する場合、CG空間を表す論理的な長さ単位に適合するよう、位置データに適度なスケール変換を施して使用する。
【0102】
以上説明したように、本実施例では、再開ボタンが押されると、ユーザの視点が、先に記憶した「一時停止ボタン」押下時の状態と等しいか、または近い状態になった時に初めて、動作モードを「実行中」に変え、視点追従動作を再開する。これによって、視点追従動作が実際に再開された場合、今まで停止していた仮想空間の視界が不連続に変化することなく、滑らかに視点追従が開始される。すなわち、視点追従を一時停止させた後で再開させる場合に、視界を滑らかに復帰させることが可能となり、仮想現実感生成システムを快適で効率的なものにすることができる。
【0103】
(実施例2)
実施例2である“仮想現実感生成システム”を図5〜図9を用いて説明する。
【0104】
(全体構成)
図5は本実施例の概念図である。
【0105】
コンピュータ103はCG画像を生成し、その映像はHMD101に出力される。ユーザはHMD101を装着し、コンピュータ103から出力される映像を仮想空間として体験する。本実施例ではユーザの視点を検知する手法として磁気式位置センサ用いる。磁気式位置センサは製品(ポヒマス社製品など)が存在し、公知の機器であるため詳細な説明は省略する。磁気式位置センサは磁場を生成するトランスミッタ105、誘導電流を検出するレシーバ102、および制御用のコントローラ104から構成される。レシーバ102はユーザの頭部に装着され、トランスミッタ105はレシーバ102との相対位置を考慮して、適宜な位置に配置される。通常、レシーバ102はHMD101に取り付けHMD101と一体化する場合が多い。これによってHMD101の装着とレシーバ102の装着が同時に行われるため便利である。本実施例でもレシーバ102とHMD101を一体化させる。レシーバ102には、トランスミッタ105に対するレシーバ102の相対変位に応じた電流が発生し、位置センサコントローラ104ではこれを解析し、位置データを算出する。位置センサコントローラ104はコンピュータ103に接続され、位置データがコンピュータ103に送られる。位置センサコントローラ104とコンピュータ103間のデータ通信にはシリアル通信が用いられる。以後、頭部位置検出用磁気式位置センサを単に位置センサとよぶ。
【0106】
(コンピュータの構成)
図6は本実施例に使われるコンピュータの構成を示したものである。コンピュータ103の記憶装置204には、本実施例の仮想現実感を生成するためのプログラムが格納される。また、仮想空間を構成する三次元物体データ等もコンピュータ103の記憶装置204に格納される。この三次元物体データとは、頂点座標情報と、各頂点の連結によって定義されるポリゴンのデータである。記憶装置204に格納されたプログラムはコンピュータ103のCPU202によって実行され、画像メモリ205にCG画像が生成される。ただし、最近のコンピュータでは、CG画像をCPUによってのみ生成するのではなく、専用のハードウェアを併用して生成する場合が多い。206はそのようなCG画像生成専用のハードウェアである。画像メモリ205に生成されたCG画像は、コンピュータ103に接続されたHMD101に出力される。コンピュータ103には、周辺機器としてキーボード208やマウス209が接続され、コンピュータ103の操作に利用される。コンピュータ103のシリアル通信装置203には位置センサコントローラ104が接続され、位置センサからの位置データがコンピュータ103に取り込まれる。
【0107】
(処理手順の説明)
図7〜図9のフローチャートは本実施例の処理手順を表している。以下、図7,図8を用いて本実施例の処理手順を説明して行く。
【0108】
図7は本実施例の処理手順を表すメインのフローチャートである。
【0109】
処理全体にわたり使用する変数として、CG画像生成の稼働中と停止中を区別する「動作モード」変数を用意する。
【0110】
プログラムが開始されると、ステップ701の初期化処理を行い、ステップ702において終了要求が発生するまで、ステップ703からステップ709までの処理を繰り返す。ステップ702における終了要求とは、ユーザがキーボード208、またはマウス209を使ってプログラムの終了を要求することである。
【0111】
ステップ703からステップ709が繰り返されることによって、ユーザ視点に追従した仮想空間画像が生成され、HMD101に出力される。ただし、「動作モード」が「停止中」の場合は、ステップ708とステップ709が実行されず、仮想空間の画像生成は停止する。
【0112】
ステップ701の初期化処理では、「動作モード」変数を「停止中」に設定しておく。
【0113】
ステップ703では、位置センサコントローラ104から送られてくる位置データを読み取る。位置センサコントローラ104から送られてくる位置データには、位置センサレシーバ102のトランスミッタ105に対する変位情報が記され、次の6成分のデータが順番に並んでいる。すなわち、レシーバ102のトランスミッタに対する並進成分のX座標、Y座標、およびZ座標、さらに、レシーバ102のトランスミッタに対する回転を表す第一回転角、第二回転角、および第三回転角である。ただし、三つの回転角は、X軸、Y軸、およびZ軸周りのオイラー角で表現される。
【0114】
ステップ703では、位置データがあった場合に限り、ステップ705の動作モード変更処理サブルーチンを実行する。
【0115】
図8はステップ705の動作モード変更処理サブルーチンを表すフローチャートである。図8を用いて動作モード変更処理サブルーチンの説明を行う。
【0116】
ステップ801では、ステップ703で取得した位置データを判別し、待機位置かどうかを調べる。この判別は次のように行われる。ユーザがシステムを使用している場合、ユーザはセンサ付きのHMD101を頭部に装着するため、位置センサのデータはユーザの頭部近辺を示す。また、ユーザがシステムを使用していない場合、HMD101はユーザから外されて特定の場所、例えば机の上などに置かれている。よって、HMD101がユーザに装着され使用される場所に対し、それとは明確に位置を区別できるHMD101待機位置を設け、HMD未使用時はHMD101をHMD待機位置に置かせるようにする。これにより、位置センサが示す位置データが、HMD待機位置に等しいか、もしくは近傍であるかどうかを調べることによって、システムが使用中か未使用かを判別できる。あるいは、HMD101の位置情報だけでなく回転情報も利用し、ユーザ装着時の通常の使用では起こり得ない回転、例えば正面から上方に向けて90度(真上)以上回転させた状態を待機配置とし、未使用時はその状態に配置させるようにしてもよい。
【0117】
ステップ801にてHMD101の配置が待機位置と判別された場合は、ステップ802に進み、そうでない場合はステップ805に進む。
【0118】
ステップ802では現在の「動作モード」が既に停止中であった場合は何もしない。「動作モード」が稼働中であった場合には、「動作モード」を「停止中」に設定する(ステップ803)。さらに、HMD表示デバイスの劣化防止や電力節約のため、表示画面の輝度を低下させる(ステップ804)。このステップ804の処理として、表示画面全体に黒色を出力してもよいし、コンピュータ103からHMD101への出力を遮断するような機構を設け、HMD101に映像が出力されないようにしてもよい。
【0119】
ステップ805では現在の「動作モード」が既に稼働中であった場合は何もしない。「動作モード」が停止中であった場合には、システムを稼働させるべく「動作モード」を「稼働中」に設定する(ステップ806)。
再び図7の説明に戻る。
【0120】
ステップ705のサブルーチンを終えるとステップ706に進む。
【0121】
ステップ706では現在の「動作モード」を調べ、「稼働中」であった場合はCG画像生成を行うべくステップ707に進む。「停止中」であった場合は、CG画像生成を行う必要がないのでCG画像生成に関わる処理を全て省略し、ステップ702に戻る。
【0122】
ステップ707以降は、CG画像生成に関わる処理である。リアルタイムにCG画像を生成する場合、通常、レンダリングエンジンとよばれるCG専用のハードウェア、またはソフトウェアを利用することが多い。本実施例でもそのようなレンダリングエンジンを使用する。CG画像生成の処理は、レンダリングエンジン(レンダリングプロセス)に対する描画動作設定の処理と、レンダリングエンジンによる描画実行によって行われる。ステップ708が動作設定の処理、ステップ709が描画実行の処理となる。
【0123】
ステップ708の動作設定処理は、ユーザ視点変化に応じて随時変更する必要があるが、視点変化が無い場合は不要である。よってステップ707にて、先に行われたステップ703の結果を判断し、新しい位置データが無かった場合は、ステップ708を省略してステップ709を実行する。
【0124】
ステップ708では、ステップ703で得た位置・回転データ、すなわちユーザ視点情報に基づきレンダリングエンジンの設定処理を行い、ステップ709ではレンダリングエンジンによる描画を実行する。ステップ709の処理が終わると次のCG画像を生成すべく、ステップ702にもどりステップ703からステップ709までの一連の処理を繰り返す。
【0125】
最後に、ステップ708とステップ709にて行われるCG画像生成処理の内容であるが、実施例1のステップ308,309のCG画像生成処理と同様なので、その「(CG画像生成)、(ワールド/カメラ座標変換の計算方法)」の説明を援用し、ここでの説明を省略する。図15は、本実施例における、CG計算により三次元物体データを二次元画像化、すなわちレンダリングする方法を示しているが、実施例1と同様なので同一符号を付し説明を省略する。
【0126】
以上説明したように、本実施例によれば、視線追従型の仮想現実感を生成する場合において、待機中の資源の節約を自動的に行う、効率的な仮想現実感システムが実現される。
【0127】
(実施例3)
実施例3である“仮想現実感生成システム”を図10〜図16を用いて説明する。
【0128】
最初に、本発明における空間操作、または視界操作の概略を述べておく。
【0129】
まず、コンピュータのGUI環境において二次元画像を表示する場合を考える。この場合、ユーザが表示画像の位置を操作する手法として、マウスによるドラッグ操作がよく用いられる。すなわち、マウスボタンを押下した状態でマウスを動かし、マウスの移動に連動させて画像表示位置を変える。本実施例が提供する空間操作、または視界操作の原理は、このようなマウスドラッグ操作に例えることができる。すなわち、本実施例ではマウスボタンに対応する入力デバイスを使い、ドラッグ中と非ドラッグ中の状態を区別する。そして、ドラッグ中の状態において、頭部運動に連動させ空間位置、または視界位置を移動させる。これによって、本実施例における空間位置、または視界位置の調整が行われる。
【0130】
前述のGUI環境におけるマウスドラッグとの類似性から、本実施例が提供する空間位置、または視界位置の調整操作を以降、視界ドラッグ操作とよぶことにする。
【0131】
(全体構成)
図10は本実施例の概念図である。
【0132】
コンピュータ103はCG画像を生成し、その映像はHMD101に出力される。ユーザはHMD101を装着し、コンピュータ103から出力される映像を仮想空間として体験する。この時ユーザは、必要に応じて手元に置かれたコントローラ106と頭部運動により視界ドラッグ操作を行う。本実施例ではユーザの視点を検知する手法として、頭部位置変化を磁気式位置センサによって検知する手法を用いる。磁気式位置センサは製品(ポヒマス社製品など)が存在し、公知の機器であるため詳細な説明は省略する。磁気式位置センサは磁場を生成するトランスミッタ105、誘導電流を検出するレシーバ102、および制御用のコントローラ104から構成される。レシーバ102はユーザの頭部に装着され、トランスミッタ105はレシーバ102との相対位置を考慮して、適度な位置に配置される。レシーバ102には、トランスミッタ105に対するレシーバ102の相対変位に応じた電流が発生し、コントローラ104ではこれを解析し、位置データを算出する。コントローラ104はコンピュータ103に接続され、位置データがコンピュータ103に送られる。コントローラ104とコンピュータ103間のデータ通信にはシリアル通信が用いられる。以後、頭部位置検出用磁気式位置センサを単に位置センサとよぶ。
【0133】
ユーザの視点変化の検出には磁気式位置センサに限らずとも、超音波センサや光センサを使ってもよい。
【0134】
(コンピュータの構成)
図11は本実施例に使われるコンピュータの構成を示したものである。コンピュータ103の記憶装置203には、本実施例の仮想現実感を生成するためのプログラムが格納される。また、仮想空間を構成する三次元物体データ等もコンピュータ103の記憶装置204に格納される。この三次元物体データとは、頂点座標情報と、各頂点の連結によって定義されるポリゴン情報から構成されるデータである。記憶装置204に格納されたプログラムはコンピュータ103のCPU202によって実行され、画像メモリ205にCG画像が生成される。ただし、最近のコンピュータでは、CG画像をCPUによってのみ生成するのではなく、専用のハードウェアを併用して生成する場合が多い。206はそのようなCG画像生成専用のハードウェアである。画像メモリ205に生成されたCG画像は、コンピュータ103に接続されたHMD101に出力される。コンピュータ103にはコントローラ106が接続され、視界ドラッグ操作に使われる。コントローラ106にはON/OFFの二状態を区別する少なくとも一つのボタンが付いている。コンピュータ103には、周辺機器としてキーボード208やマウス209が接続され、コンピュータ103の操作に利用される。これらのキーボード208やマウス209をコントローラ106の変わりに使用してもよい。コンピュータ103のシリアル通信装置203には位置センサコントローラ104が接続され、位置センサからの位置データがコンピュータ103に取り込まれる。
【0135】
(処理手順の説明)
図12〜図14のフローチャートは本実施例の処理手順を表している。以下、図12〜図14を用いて本実施例の処理手順を説明して行く。
【0136】
図12は本実施例の処理手順を表すメインのフローチャートである。
【0137】
処理全体にわたり使用する変数として、現在の操作が視界ドラッグ中かどうかを区別する「ドラッグ中」変数を用意する。また、CG計算に使う変数も必要となるが、それについては計算方法の説明の中で適宜説明する。
【0138】
プログラムが開始されると、ステップ1201の初期化処理を行い、ステップ1202において終了要求が発生するまで、ステップ1203から1207までの処理を繰り返す。ステップ1202における終了要求とは、ユーザがコントローラ106、またはキーボード208、またはマウス209を使ってプログラムの終了を要求することである。ステップ1203から1207までの処理が一フレーム分(一時刻分)のCG画像生成の処理単位である。この処理単位が繰り返されることによって、ユーザ視点に応じてリアルタイムに変化する仮想空間の映像が生成される。
【0139】
ステップ1201の初期化処理では、「ドラッグ中」変数を「偽」に設定しておく。また、CG計算に必要な情報もここで初期化するが、個々の説明は以降、計算方法を説明して行く中で適宜行う。
【0140】
ステップ1203は、ドラッグ操作切り替え処理を行うサブルーチンである。このドラッグ操作切り替え処理ではコントローラ106のボタンの状態を調べ、それに応じて視界ドラッグを開始、または終了し、後続のCG計算のための計算を行う。サブルーチン内部の説明はCG画像の生成方法と関連するため、後述の(CG画像生成)の後に行う。
【0141】
ステップ1204では、位置センサコントローラ104から送られてくる位置データを読み取る。位置データが無い場合、ステップ1206をスキップし、ステップ1207に進んでCG描画処理を行う。視点変化が無い場合(位置データが無い場合)にも、ステップ1207でCG画像を再描画する理由は、例えば、物体をアニメーションさせるような場合、CG画像の変更要因が視点変化以外にも存在するからである。もし、視点変化以外にCG画像の変更要因が無い場合は、CG画像描画処理もスキップしてよい。すなわち、ステップ1205から1202に戻ってよい。
【0142】
位置センサコントローラ104から送られてくる位置データには、位置センサレシーバ102のトランスミッタ105に対する変位情報が記され、次の6成分のデータが順番に並んでいる。すなわち、レシーバ102のトランスミッタ105に対する並進成分のX座標、Y座標、およびZ座標。さらに、レシーバ102のトランスミッタ105に対する回転を表す第一回転角、第二回転角、および第三回転角である。ただし、三つの回転角は、X軸、Y軸、およびZ軸周りのオイラー角で表現される。
【0143】
ステップ1206とステップ1207では、CG画像生成に関わる処理を行う。リアルタイムにCG画像を生成する場合、通常、レンダリングエンジンとよばれるCG専用のハードウェア、またはソフトウェアを利用することが多い。本実施例でもそのようなレンダリングエンジンを使用する。その場合、CG画像生成の処理は、レンダリングエンジン(レンダリングプロセス)に対する描画動作設定の処理と、レンダリングエンジンによる描画実行によって行われる。図12のフローチャートではステップ1206のサブルーチンが動作設定の処理、ステップ1207が描画実行の処理となる。
【0144】
ステップ1206のサブルーチンでは、ステップ1204で得た位置・回転データ、すなわちユーザ視点情報に基づきレンダリングエンジンの設定処理を行う。このサブルーチンの内部の説明はCG画像の生成方法と関連するので、後述の(CG画像生成)の後で行う。ステップ1207ではレンダリングエンジンによる描画を実行する。ステップ1207の処理が終わると次のCG画像を生成すべく、ステップ1202にもどりステップ1203から1207までの一連の処理を繰り返す。
【0145】
以上が、本実施例のフローチャートの説明である。次に保留にしたステップ1203と1206のサブルーチンの詳細を説明すべく、CG画像生成に関する説明を行う。
【0146】
(CG画像生成)
まず、CG画像生成における描画方法と視点設定の方法について説明する。
【0147】
図15は、CG計算により三次元物体データを二次元画像化、すなわちレンダリングする方法を示している。CG計算のアルゴリズムは複数存在するが、ここではリアルタイム処理の分野で広く用いられているポリゴン単位の計算方法(以降、ポリゴンレンダリング)を取り上げる。ポリゴンレンダリングは、物体を構成する各ポリゴンに対し、図15に示したステップ402〜405の行程を施すことによって行われる。
【0148】
すなわち、まず、絶対的空間、いわゆるワールド座標系に配置されたポリゴン401を、視点に相対な空間、いわゆるカメラ座標系に変換する(ステップ402)。このステップ402の変換を以後、ワールド/カメラ座標変換とよぶ。続いて、ポリゴンに陰影を付けるための照明計算(ステップ403)を行う。続いて、三次元座標から二次元座標への投影変換と画素座標へのマッピング(ステップ404)を行う。この時、ポリゴンの三次元座標には投影行列による変換が施され、視体積へのクリッピングと投影処理が行われる。また、ビューポート変換によって投影面上の座標が実際の描画画素座標へマッピングされる。最後に、ポリゴン像の塗りつぶし、すなわちラスタライズ処理(ステップ405)を施し、最終的にポリゴンのレンダリング画像406が得られる。これらの各工程の内容は広く知られたものであり、また、レンダリングエンジンによって実行されるものである。よって、本実施例の視点変更に関わる部分以外、詳細な説明は省略する。
【0149】
前記ポリゴンレンダリングにおいて、CG画像の視点を変化させるためには402のワールド/カメラ座標変換の設定を変更すればよい。さらに、ユーザの視点変化に追従してCG画像の視点を変化させるためには、ユーザ視点情報、すなわち位置センサのデータに応じてワールド/カメラ座標変換を変更し、レンダリングすればよい。そこで、まずワールド/カメラ座標変換の変更方法について説明する。
【0150】
CGの一般的な考え方では、レンダリング視点を決める要因を、実世界のメカニズムと対応させ、カメラという概念で表現する。ワールド座標系からカメラ座標系への座標変換は、ワールド座標系にカメラ(カメラ座標系)がどのように配置されているかという情報で表現できる。カメラの配置はカメラの位置と回転によって表現できる。よって、ワールド/カメラ座標変換は希望する視点に置かれたカメラの位置と回転情報から計算される。
【0151】
(ワールド/カメラ座標変換の計算方法)
ワールド/カメラ座標変換は通常、同次座標を用いて表される。すなわち、ワールド座標系の任意の一点(x,y,z,1)は、ワールド/カメラ座標変換Mによって、対応するカメラ座標系の一点(x’,y’,z’,1)に変換され、(式1)のように表すことができる。(式1)の3×3部分行列、m11〜m33は回転成分を表しており、この部分をRwcとする。また、(式1)のTx、Ty、Tzは並進成分を表している。
【0152】
(式1)
Figure 2005025563
【0153】
ワールド/カメラ座標変換の逆変換である、カメラ座標系からワールド座標系への変換、すなわちカメラ/ワールド座標変換も(式1)と同様な形式として、(式2)で表すことができる。ここで、(式2)のRcwはワールド座標におけるカメラの回転を表しており、(Cx,Cy,Cz)はカメラの位置を表している。
【0154】
(式2)
Figure 2005025563
【0155】
カメラの位置と回転情報からワールド/カメラ座標変換を計算するには、一旦、カメラ/ワールド座標変換を求め、その逆変換を求めることによって行う。通常カメラの回転は、ワールド座標で表現される回転軸とその周りの回転角で表現される。今、回転軸を(Xa,Ya,Za)とし、回転角をθラジアンとすると、カメラ/ワールド座標変換行列の回転成分Rcwは、(式3)で計算される。
【0156】
(式3)
Figure 2005025563
【0157】
カメラの回転が複数の回転の合成である場合は、個々の回転に対応した(式3)の行列を全て掛け合わせればよい。本発明で使用する位置センサの回転データは、空間固定のX軸、Y軸、Z軸に関する三つのオイラー角(θx,θy,θz)である。よって、各オイラー角から(式3)で回転行列を求め、それらを掛け合わせればよい。便宜の為、(θx,θy,θz)を入力とし回転行列Rcwを出力するこれらの計算過程をFと表し、Rcwの計算を(式4)の形で略記する。
【0158】
(式4)
Rcw←F(θx,θy,θz)
(式3)のワールド/カメラ座標変換行列のRwcは、Rcwの逆行列として求まるが、ここではRcwが回転成分しか持たないので、単にRcwの転置行列をRwcとすればよい。すなわち、(式5)でRwcが求まる。
【0159】
(式5)
Figure 2005025563
【0160】
さらに、Rwcが求まれば、ワールド座標におけるカメラの位置(Cx,Cy,Cz)から、(式1)のTx、Ty、Tzが(式6)によって求められる。ここで、カメラの位置(Cx,Cy,Cz)には位置センサからの位置データを割り当てる。
【0161】
(式6)
Figure 2005025563
【0162】
よって、RcwからRwc求まり、さらにRwcと(Cx,Cy,Cz)から(Tx,Ty,Tz)が求まり、最終的に(式1)のM、すなわち、ワールド/カメラ座標変換行列が求まる。ただし、仮想現実システムではユーザの視点位置の変化よりも視点方向の変化の方が重要であり、視点位置の変化、すなわち(Cx,Cy,Cz)の変化を仮想空間に反映させない場合も多い。その場合、(Cx,Cy,Cz)には適度な定数を使用すればよい。便宜の為、Rwc、(Cx,Cy,Cz)を入力としMを出力するこれらの計算過程をGと表し、Mの計算を(式7)の形で略記する。
【0163】
(式7)
M←G(Rcw,Cx,Cy,Cz)
結局、位置センサの回転データをカメラの回転(θx,θy,θz)に割り当て、また位置センサの位置データをカメラの位置(Cx,Cy,Cz)に割り当て、(式4)と(式7)の計算を行うことによってMが求まる。そして、このMをレンダリングエンジンに設定し描画を行うことによって、CG画像の視点が変更される。なお、位置データをCGのカメラ位置に使用する場合、CG空間を表す論理的な長さ単位に適合するよう、位置データに適度なスケール変換を施して使用する。
【0164】
(視界ドラッグを考慮したCG計算)
以上が、ユーザの視点変化に追従させCG画像の視点を変化させるための基本計算である。本実施例の視界ドラッグを実現するためには、前述の計算過程を次のように変更する。すなわち、(式4)の後にRcwを補正する計算を入れ、全体として次の(式8)の計算を行う。
【0165】
(式8)
ステップ1:Rcw←F(θx,θy,θz)
ステップ2:Rcw←Rcw×Ra
ステップ3:M←G(Rcw,Cx,Cy,Cz)
(式8)のステップ2はCG画像に反映される視点変化に、実際のユーザ頭部回転量より余分の回転を加え、視界を補正することを意味している。(式8)のステップ2に使われるRaの計算方法を説明する。まず、視界ドラッグの目的とする動作は次のようになる。
【0166】
(視界ドラッグ動作1)
視界ドラッグ開始時、現在の視界を固定する。
【0167】
(視界ドラッグ動作2)
視界ドラッグ中は、ユーザ視点の変化に関わらず、(視界ドラッグ動作1)にて固定された視界を維持する。
【0168】
(視界ドラッグ動作3)
ドラッグ終了時、(視界ドラッグ動作1)にて固定された視界を最初の視界とし、以後、その視界を基準にユーザ視点への追従を再開する。
【0169】
前記視界ドラッグ動作1〜3を実現するための計算を、図16を使って考える。今、ユーザの視点として、正面以外の異なる二つの方向を考え、その視点のオイラー角をそれぞれ、Φ1=(φx1,φy1,φz1)、Φ2=(φx2,φy2,φz2)とする。さらに、Φ1に対し、(式8)のステップ1、2から計算される回転行列RcwをR1とする。また、Φ2に対し(式8)のステップ1から計算される回転行列RcwをR2とする。ただし、初期状態では(式8)のステップ2のRaは恒等変換とする。今、ユーザはΦ1の位置に見える物体に着目し、Φ1の状態から視界ドラッグを開始してΦ2の状態で終了したとする。この時、視界ドラッグ中はΦ1の視界を維持する必要があるため、視界ドラッグ開始時、(式8)の計算にて一度Mを求めて記憶し、以後ドラッグが継続される間は(式8)の計算を行わず、Mを更新しない。一方、視界ドラッグ終了後は、(式8)の計算を再開し、ユーザ視点に追従した視界の変化を開始させる。ただし、視界ドラッグ終了直後、ユーザ視点はΦ2の状態であり、かつ、Φ1の視界をドラッグしてきたためにユーザにはΦ1の視界が提供されなければならない。すなわち、視界ドラッグ終了直後に(式8)の計算を実行した場合、得られる結果は、Φ1の視界が提供されるようなものでなければならない。そのためには、(式8)のステップ2のRaは次の関係
R1=R2×Ra
を満たさなければならない。何故ならこれによって(式8)が、Φ2(R2)の入力によってΦ1(R1)の視界を出力するようになるからである。よって、Raは、前記で定義したドラッグ開始時と終了時の回転行列R1とR2から次のように求められる。ただし、ここでR2−1はR2の逆行列を表す。
【0170】
(式9)
Ra=R2−1×R1
ここで少し補足説明を加える。ドラッグ終了後から開始される視点追従では、以前の視界ドラッグの影響をオフセットとして常に加算しなければならない。よって、ドラッグ終了時(式9)にてRaを求めた後、その値を以後の(式8)の計算で使い続ける。また、新たなドラッグが開始された場合、そのドラッグの終了時に必要になるR1の値は、(式8)のステップ1のみから計算されるのではなく、(式8)ステップ1、2から計算されることに注意する。何故なら、視界ドラッグが繰り返されるたびに、補正回転Raが累積される必要があるからである。逆にR2は補正する対象そのものなので、計算は単に(式8)のステップ1で求めてよい。
【0171】
以上、ユーザ視点に追従するCG画像の計算方法、および視界ドラッグの為の補正計算の方法を説明した。
【0172】
図12のメインのフローチャートに戻り、保留にしたステップ1203とステップ1206のサブルーチンの説明を行う。
【0173】
図13はステップ1203のドラッグ操作切り替え処理サブルーチンを表すフローチャートである。図13を用いてドラッグ操作切り替え処理の詳細説明を行う。
【0174】
まず、ステップ1301にてコントローラ106のドラッグボタンの状態を調べる。ドラッグボタンがONの場合はステップ1302に進み、OFFの場合はステップ1305に進む。
【0175】
ステップ1302に進むと、「ドラッグ中」変数が「偽」である場合(現在、ドラッグ中でない場合)、ステップ1303とステップ1304を実行し、「ドラッグ中」変数が「真」である場合は何もしない。
【0176】
ステップ1303と1304はドラッグ開始時の処理である。ステップ1303では「ドラッグ中」変数に「真」を設定し、視界ドラッグを開始したことを記録する。ステップ1304では(式8)の計算を一旦実行し、その結果得られたRcwとMをそれぞれR1、Mdとして記憶する。このR1とMdは、ドラッグ中、およびドラッグ終了時に利用される。(式8)のRaは初期化処理(図12のステップ1201)にて単位行列に設定しておく。
【0177】
一方、ステップ1305に進むと、「ドラッグ中」変数が「真」である場合(現在、ドラッグ中である場合)、ステップ1306と1307を実行し、「ドラッグ中」変数が「偽」である場合は何もしない。
【0178】
ステップ1306と1307はドラッグ終了時の処理である。ステップ1306では「ドラッグ中」変数に「偽」を設定し、視界ドラッグを終了したことを記録する。ステップ1307では(式9)の計算を実行し、視界補正用の回転行列Raを再計算する。
【0179】
図14は図12のステップ1206のレンダリング設定処理サブルーチンを表すフローチャートである。図14を用いてレンダリング設定処理サブルーチンの説明を行う。
【0180】
ステップ1401にて、変数「ドラッグ中」を調べ、値が「偽」である場合、すなわちドラッグ中でない場合、ステップ1402に進み(式8)の計算を行い、Mを求めレンダリングエンジンに設定する。変数「ドラッグ中」が「真」である場合、すなわちドラッグ中である場合はステップ1403に進み、視界を維持すべく、図13のステップ1304にて記憶されたMdをMとし、レンダリングエンジンに設定する。ステップ1403の場合、不変なMdをレンダリングエンジンに毎回設定する処理は冗長である。しかし、座標変換の異なるレンダリングを本サブルーチンの後に実行するような場合は、ステップ1403を毎回実行する必要がある。本実施例では、そのような場合を想定してステップ1403を毎回実行する。
【0181】
以上により、本実施例が実現される。
【0182】
以上説明したように、本実施例によれば、視線追従型の仮想現実感を生成する場合において、ユーザの視界位置を容易に調整でき、その結果として自然な状態での着目対象の観察が可能となり、快適な仮想現実感が実現される。
【0183】
(実施例4)
前記実施例3は、視界ドラッグをユーザの頭部回転によってのみ行うものであった。これは、多くの仮想現実感生成システムがユーザの体験位置を変えず(例えば着席したまま)、視点方向の変化によってのみ仮想空間を体験させる、という点を考慮したものである。
【0184】
しかし、仮想現実感生成システムの中にはユーザを広い体験スペースの中に置き、ユーザの体験スペース内での移動を許すものも存在する。その場合、ユーザの視点変化として、視点方向((式4)の(θx,θy,θz))だけでなく視点位置((式7)の(Cx,Cy,C))の変化も利用し、視点方向と視点位置両方に追従した仮想空間を提供する場合がある。そのような場合は、視点位置の移動を使った視界ドラッグができると便利である。よって、ユーザの視点方向と視点位置両方を使った視界ドラッグの実施例を、実施例4の”仮想現実感生成システム“として説明する。
【0185】
本実施例では実施例3に比べCG計算の部分がより一般化される。本実施例と、実施例3の違いは、図13のステップ1304、ステップ1307、および図14のステップ1402の計算が変更されることである。
【0186】
(変更点1)
まず、図13のステップ1304の変更点を説明する。
【0187】
実施例3のステップ1304では(式8)の計算を実行し、その時のRcwとMを、それぞれR1とMdとして記憶するものであった。本実施例では、(式8)の計算を次の(式10)のように変更し、その結果得られるMをMdとして記憶する(図13のステップ1304のR1の記憶はもはや不要となる)。
【0188】
(式10)
ステップ1:Rcw←F(θx,θy,θz)
ステップ2:M←G(Rcw,Cx,Cy,Cz)
ステップ3:M←M×Ma
(式10)のステップ3のMaにより回転の補正だけでなく、位置を含めた補正を行う。Maは初期化処理(図12のステップ1201)にて4×4単位行列に設定され、ドラッグ終了時に修正される。
【0189】
(変更点2)
図13のステップ1307の変更点を説明する。
【0190】
本実施例では、図13のステップ1307の位置において次の計算を行う。
ドラッグ終了時の視点方向、視点位置から一旦(式10)のステップ1、2の計算を行い、Mを求めM2とする。続いて、前記(変更点1)で記憶したMdと今求めたM2を使って、次の(式11)によりMaを求める。
【0191】
(式11)
Ma=M2−1×Md
(変更点3)
図14のステップ1402の計算は(式10)に置き換えられる。
【0192】
(実施例5)
実施例5である“仮想現実感生成システム”について図17〜図21を用いて説明する。
【0193】
(全体構成)
図17は本実施例の概念図である。
【0194】
コンピュータ103はCG画像を生成し、その映像はHMD101に出力される。ユーザはHMD101を装着し、コンピュータ103から出力される映像を仮想空間として体験する。本実施例ではユーザの視点を検知する手法として磁気式位置センサ用いる。磁気式位置センサは製品(ポヒマス社製品など)が存在し、公知の機器であるため詳細な説明は省略する。磁気式位置センサは磁場を生成するトランスミッタ105、誘導電流を検出するレシーバ102、および制御用の位置センサコントローラ104から構成される。レシーバ102はユーザの頭部に装着され、トランスミッタ105はレシーバ102との相対位置を考慮して、適宜な位置に配置される。通常、レシーバ102はHMD101に取り付けHMD101と一体化する場合が多い。これによってHMD101の装着とレシーバ102の装着が同時に行われるため便利である。本実施例でもレシーバ102とHMD101を一体化させる。レシーバ102には、トランスミッタ105に対するレシーバ102の相対変位に応じた電流が発生し、位置センサコントローラ104ではこれを解析し、位置データを算出する。位置センサコントローラ104はコンピュータ103に接続され、位置データがコンピュータ103に送られる。位置センサコントローラ104とコンピュータ103間のデータ通信にはシリアル通信が用いられる。以後、頭部位置検出用磁気式位置センサを単に位置センサとよぶ。また、位置センサのデータは位置情報と回転情報の両方を含むが、単に位置データとよぶことにする。
【0195】
(コンピュータの構成)
図18は本実施例に使われるコンピュータの構成を示したものである。コンピュータ103の記憶装置204には、本実施例の仮想現実感を生成するためのプログラムが格納される。また、仮想空間を構成する三次元物体データ等もコンピュータの記憶装置204に格納される。この三次元物体データとは、頂点座標情報と、各頂点の連結によって定義されるポリゴンのデータである。記憶装置204に格納されたプログラムはコンピュータ103のCPU202によって実行され、画像メモリ205にCG画像が生成される。ただし、最近のコンピュータでは、CG画像をCPUによってのみ生成するのではなく、専用のハードウェアを併用して生成する場合が多い。206はそのようなCG画像生成専用のハードウェアである。画像メモリ205に生成されたCG画像は、コンピュータ103に接続されたHMD210に出力される。コンピュータ103には、周辺機器としてキーボード208やマウス209が接続され、コンピュータ103の操作に利用される。コンピュータ103のシリアル通信装置203には位置センサコントローラ104が接続され、位置センサからの位置データがコンピュータ103に取り込まれる。
【0196】
(データの説明)
本実施例に必要な三次元データの説明を行う。まず、仮想現実体験の本来の目的となる空間の三次元データを用意する。例えば、体験の目的が乗り物シミュレーションのようなものである場合は、ユーザが乗る乗り物の三次元モデルや、乗り物によって徘徊する空間の三次元モデルである。この空間を以後、「目的仮想空間」、そのデータを「目的仮想空間データ」とよぶことにする。三次元モデルはポリゴンから構成させるポリゴンモデルであるが、これについては現在広く知られるようになったので説明は省略する。
【0197】
目的仮想空間に加え、体験システムが配置される空間を模擬した三次元モデルを用意する。図21に示すように、実際の体験システムの様子が図21のAのようなものであった場合、この空間の三次元モデルとなる図21のBを用意する。この空間を以後、「システム模擬空間」、そのデータを「システム模擬空間データ」とよぶことにする。
【0198】
(処理手順の説明)
図19のフローチャートは本実施例の処理手順を表している。以下、図19を用いて本実施例の処理手順を説明して行く。
【0199】
最初に、処理手順の概略を述べておく。
【0200】
処理全体の動作は二つの動作モードに分かれる。一つは「通常」モードであり、「目的仮想空間」を表示する通常のモードである。もう一つは「遷移中」モードである。
【0201】
「遷移中」モードでは、「目的仮想空間」と「システム模擬空間」を混合して表示する。「遷移中」モードでは、最初に「システム模擬空間」のみを表示し、以後、徐々に「システム模擬空間」画像の強度を弱めつつ、同時に「目的仮想空間」画像の強度を高めながら混合していき、最終的に「目的仮想空間」のみが表示されるようにする。どちらのモードにおいてもユーザの視点変化を検出し、ユーザの視点変化に追従させてCG画像の視点設定を変化させる。体験開始時は、システムの動作は「遷移中」モードから始まる。このため、ユーザは今まで見ていた実際の体験空間と近い映像を最初に見ることになり、体験開始時の違和感が少ない。そして、その後、仮想空間の映像は「システム模擬空間」から「目的仮想空間」に徐々に変化し、目的の仮想空間体験を滑らかに始めることができる。
【0202】
以下、図19の各処理を説明する。
【0203】
処理に必要な変数として、前述の動作モードに対応した変数「動作モード」を用意する。また、「遷移中」モードで使用するカウンタ変数「遷移カウント」を用意し、「遷移カウント」に対する適度な最大値「遷移カウント最大値」を決めておく。
【0204】
プログラムが開始されると、ステップ1901の初期化処理を行い、ステップ1902において終了要求が発生するまで、ステップ1902以下の処理を繰り返す。
【0205】
ステップ1901の初期化処理では、「動作モード」変数を「遷移中」に設定しておく。また「遷移カウント」をゼロに設定する。
【0206】
ステップ1902における終了要求とは、ユーザがキーボード208、またはマウス209を使ってプログラムの終了を要求することである。
【0207】
ステップ1903において「動作モード」が「遷移中」の場合は、ステップ1904に進む。
【0208】
ステップ1904では「遷移カウント」を1増加させ、ステップ1905においてその値を判別する。
【0209】
ステップ1905において「遷移カウント」が定められた最大値に達した場合、ステップ1907に進み、「動作モード」を「通常」に変えステップ1902に戻る。
【0210】
ステップ1905において「遷移カウント」が定められた最大値に達していない場合と、ステップ1903において「動作モード」が「通常」の場合はステップ1908に進む。
【0211】
ステップ1908では、位置センサコントローラ104から送られてくる位置データを読み取る。位置センサコントローラ104から送られてくる位置データには、位置センサレシーバ102のトランスミッタ105に対する変位情報が記され、次の6成分のデータが順番に並んでいる。すなわち、レシーバ102のトランスミッタ105に対する並進成分のX座標、Y座標、およびZ座標、さらに、レシーバ102のトランスミッタ105に対する回転を表す第一回転角、第二回転角、および第三回転角である。ただし、三つの回転角は、X軸、Y軸、およびZ軸周りのオイラー角で表現される。
【0212】
ステップ1909では、センサから得た位置データに基づき、ユーザの視点に追従するようCG描画視点の設定を行う。描画視点設定方法の詳細は後述の「CG画像生成」にて、描画方法とまとめて行う。
【0213】
ステップ1910では、三次元空間データの描画を実行し、生成された仮想空間画像をHMD101に出力する。三次元空間データの描画は「動作モード」に応じて次のように行う。
【0214】
まず、「動作モード」が「通常」の場合は、単に「目的仮想空間」の三次元データのみを描画する。
【0215】
「動作モード」が「遷移中」の場合は、次のように行う。
【0216】
まず、「遷移カウント」の値を「遷移カウント最大値」で割り算し、その値を「α」とする。また、「1−α」の値を「β」とする。ここで遷移カウントの増加に伴いαは「0→1」と変化し、βは「1→0」と変化する。次に「目的仮想空間」の三次元データを透過率βで描画し、続けて「システム模擬空間」の三次元データを透過率αで描画しそれぞれが半透明合成されるようにする。ただし、ここでいう透過率は、値「0」では対象物体が完全に見え、背後の物体を全く透過させない状態を意味し、逆に値「1」が背後の物体を完全に透過させ、対象物体自体は見えなくなる状態を意味している。
【0217】
以上の方法では、体験開始時と同時に、「システム模擬空間」から「目的仮想空間」への遷移が始まる。これを、しばらくの間「システム模擬空間」のみが表示されるようにするには次のようにすればよい。まず、「遷移カウント最大値」より小さい適度な値、「初期カウント値」を設ける。そして、動作モード」が「遷移中」の場合において、「遷移カウント」が「初期カウント値」以下である場合は、「システム模擬空間」の描画のみを行い、「遷移カウント」が「初期カウント値」より大きければ、上記αの計算を以下に変更して「目的仮想空間」と「システム模擬空間」の描画を行えばよい。
【0218】
α=(遷移カウント−初期カウント値)÷(遷移カウント最大値−初期カウント値)
最後にCG画像生成に関わる部分を説明する。
【0219】
(CG画像生成)
CG画像生成における描画方法と視点設定の方法について説明する。
【0220】
図20は、CG計算により三次元物体データを二次元画像化、すなわちレンダリングする方法を示している。CG計算のアルゴリズムは複数存在するが、ここではリアルタイム処理の分野で広く用いられているポリゴン単位の計算方法(以降、ポリゴンレンダリング)を取り上げる。ポリゴンレンダリングは、物体を構成する各ポリゴンに対し、図20に示したステップ402〜405の行程を施すことによって行われる。
【0221】
すなわち、まず、絶対的空間、いわゆるワールド座標系に配置されたポリゴン401を、視点に相対な空間、いわゆるカメラ座標系に変換する(ステップ402)。このステップ402の変換を以後、ワールド/カメラ座標変換とよぶ。続いて、ポリゴンに陰影を付けるための照明計算(ステップ403)を行う。続いて、三次元座標から二次元座標への投影変換と画素座標へのマッピング(ステップ404)を行う。この時、ポリゴンの三次元座標には投影行列による変換が施され、視体積へのクリッピングと投影処理が行われる。また、ビューポート変換によって投影面上の座標が実際の描画画素座標へマッピングされる。最後に、ポリゴン像の塗りつぶし、すなわちラスタライズ処理(ステップ405)を施し、最終的にポリゴンのレンダリング画像406が得られる。これらの各工程の内容は広く知られたものであり、また、レンダリングエンジンによって実行されるものである。よって、本発明の視点変更に関わる部分以外、詳細な説明は省略する。
【0222】
前記ポリゴンレンダリングにおいて、CG画像の視点を変化させるためにはステップ402のワールド/カメラ座標変換の設定を変更すればよい。そして、CG画像の視点をユーザの視点変化に追従させるためには、ユーザ視点情報、すなわち位置センサのデータに応じてワールド/カメラ座標変換を変更しレンダリングすればよい。
【0223】
以下、ワールド/カメラ座標変換の変更方法について説明する。
【0224】
CGの一般的な考え方では、レンダリング視点を決める要因を、実世界のメカニズムと対応させ、カメラという概念で表現する。ワールド座標系からカメラ座標系への座標変換は、ワールド座標系にカメラ(カメラ座標系)がどのように配置されているかという情報で表現できる。カメラの配置はカメラの位置と回転によって表現できる。よって、ワールド/カメラ座標変換は希望する視点に置かれたカメラの位置と回転情報から計算される。
【0225】
(ワールド/カメラ座標変換の計算方法)
ワールド/カメラ座標変換は通常、同次座標を用いて表される。すなわち、ワールド座標系の任意の一点(x,y,z,1)は、ワールド/カメラ座標変換Mによって、対応するカメラ座標系の一点(x’,y’,z’,1)に変換され、(式1)のように表すことができる。(式1)の3×3部分行列、m11〜m33は回転成分を表しており、この部分をRwcとする。また、(式1)のTx、Ty、Tzは並進成分を表している。
【0226】
(式1)
Figure 2005025563
【0227】
ワールド/カメラ座標変換の逆変換である、カメラ座標系からワールド座標系への変換、すなわちカメラ/ワールド座標変換も(式1)と同様な形式として、(式2)で表すことができる。ここで、(式2)のRcwはワールド座標におけるカメラの回転を表しており、(Cx,Cy,Cz)はカメラの位置を表している。
【0228】
(式2)
Figure 2005025563
【0229】
カメラの位置と回転情報からワールド/カメラ座標変換を計算するには、一旦、カメラ/ワールド座標変換を求め、その逆変換を求めることによって行う。通常カメラの回転は、ワールド座標で表現される回転軸とその周りの回転角で表現される。今、回転軸を(Xa,Ya,Za)とし、回転角をθラジアンとすると、カメラ/ワールド座標変換行列の回転成分Rcwは、(式3)で計算される。
【0230】
(式3)
Figure 2005025563
【0231】
カメラの回転が複数の回転の合成である場合は、個々の回転に対応した(式3)の行列を全て掛け合わせればよい。本発明で使用する位置センサの回転データは、空間固定のX軸、Y軸、Z軸に関する三つのオイラー角(θx,θy,θz)である。よって、各オイラー角から(式3)で回転行列を求め、それらを掛け合わせればよい。便宜の為、(θx,θy,θz)を入力とし回転行列Rcwを出力するこれらの計算過程をFと表し、Rcwの計算を(式4)の形で略記する。
【0232】
(式4)
Rcw←F(θx,θy,θz)
(式3)のワールド/カメラ座標変換行列のRwcは、Rcwの逆行列として求まるが、ここではRcwが回転成分しか持たないので、単にRcwの転置行列をRwcとすればよい。すなわち、(式5)でRwcが求まる。
【0233】
(式5)
Figure 2005025563
【0234】
さらに、Rwcが求まれば、ワールド座標におけるカメラの位置(Cx,Cy,Cz)から、(式1)のTx、Ty、Tzが(式6)によって求められる。ここで、カメラの位置(Cx,Cy,Cz)には位置センサからの位置データを割り当てる。
【0235】
(式6)
Figure 2005025563
【0236】
よって、RcwからRwc求まり、さらにRwcと(Cx,Cy,Cz)から(Tx,Ty,Tz)が求まり、最終的に(式1)のM、すなわち、ワールド/カメラ座標変換行列が求まる。ただし、仮想現実システムではユーザの視点位置の変化よりも視点方向の変化の方が重要であり、視点位置の変化、すなわち(Cx,Cy,Cz)の変化を仮想空間に反映させない場合も多い。その場合、(Cx,Cy,Cz)には適度な定数を使用すればよい。また、位置データをCGのカメラ位置に使用する場合、CG空間を表す論理的な長さ単位に適合するよう、位置データに適度なスケール変換を施して使用する。便宜の為、Rwc、(Cx,Cy,Cz)を入力としMを出力するこれらの計算過程をGと表し、Mの計算を(式7)の形で略記する。
【0237】
(式7)
M←G(Rcw,Cx,Cy,Cz)
結局、ワールド/カメラ座標変換を設定するための必要な計算は、位置センサの回転データをカメラの回転(θx,θy,θz)に割り当て、また位置センサの位置データをカメラの位置(Cx,Cy,Cz)に割り当て、(式4)と(式7)の計算を行うことである。これらの計算を図19のステップ1909において行い、求めたMをレンダリングエンジンに設定する。続いてステップ1910において、適切な三次元空間データに対してレンダリングエンジンによる描画を実行する。ただし、「動作モード」が「遷移中」の場合は、「目的仮想空間」と「システム模擬空間」のそれぞれの三次元データを、透過率を変えて描画し半透明合成する。半透明合成効果を付けた描画処理については既に公知の技術であり、レンダリングエンジンによって実行される部分であるため説明は省略する。
【0238】
以上により、本実施例が実現される。
【0239】
以上説明したように、本実施例によれば、視線追従型の仮想現実感生成システムにおいて、体験システム模擬空間を経由して仮想現実への移行が滑らかに行われ、快適な仮想現実感体験が可能となる。
【0240】
【発明の効果】
以上説明したように、本発明によれば、視線追従型の仮想現実感生成システムにおいて、視点追従を一時停止させた後で再開させる場合に、視界を滑らかに復帰させることが可能となり、仮想現実感生成システムを快適で効率的なものにすることができる。
【図面の簡単な説明】
【図1】実施例1の概念図
【図2】実施例1で用いるコンピュータの構成を示すブロック図
【図3】実施例1の動作を示すフローチャート
【図4】CG計算の概要を示す図
【図5】実施例2の概念図
【図6】実施例2で用いるコンピュータの構成を示すブロック図
【図7】実施例2の動作を示すフローチャート
【図8】動作モード変更処理サブルーチンを示すフローチャート
【図9】CG計算の概要を示す図
【図10】実施例3の概念図
【図11】実施例3で用いるコンピュータの構成を示すブロック図
【図12】実施例3の動作を示すフローチャート
【図13】ドラッグ操作切り替え処理サブルーチンを示すフローチャート
【図14】レンダリング設定処理サブルーチンを示すフローチャート
【図15】CG計算の概要を示す図
【図16】視界を補正する手法の説明図
【図17】実施例5の概念図
【図18】実施例5で用いるコンピュータの構成を示すブロック図
【図19】実施例5の動作を示すフローチャート
【図20】CG計算の概要を示す図
【図21】体験システムの例を示す図
【符号の説明】
101 HMD
102 位置センサレシーバ
103 コンピュータ
104 位置センサコントローラ
105 位置センサトランスミッタ

Claims (1)

  1. 三次元空間の可視化画像をコンピュータグラフィックスすなわちCGによって生成する仮想現実感生成方法において、
    ユーザの視点変化を視点検出機構により逐次検出し、その変化をCG画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、
    ユーザの制御によって、視点追従動作の停止要求と再開要求を行わせ、視点追従動作停止要求時に、ユーザの視点状態を記憶して復帰視点状態とし、その後視点追従動作を停止させ、視点追従動作再開要求後、ユーザの視点状態を監視し続け、現在のユーザの視点状態が復帰視点状態に近くなった状態で初めて視点追従動作を再開させる、ことを特徴とする仮想現実感生成方法。
JP2003191124A 2003-07-03 2003-07-03 仮想現実感生成方法 Withdrawn JP2005025563A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003191124A JP2005025563A (ja) 2003-07-03 2003-07-03 仮想現実感生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003191124A JP2005025563A (ja) 2003-07-03 2003-07-03 仮想現実感生成方法

Publications (1)

Publication Number Publication Date
JP2005025563A true JP2005025563A (ja) 2005-01-27

Family

ID=34188830

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003191124A Withdrawn JP2005025563A (ja) 2003-07-03 2003-07-03 仮想現実感生成方法

Country Status (1)

Country Link
JP (1) JP2005025563A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015007835A (ja) * 2013-06-24 2015-01-15 キヤノン株式会社 画像処理装置、画像処理方法
JP2016502201A (ja) * 2012-11-29 2016-01-21 マイクロソフト テクノロジー ライセンシング,エルエルシー ヘッドマウントディスプレイのリソース管理
JP2017148530A (ja) * 2013-09-30 2017-08-31 株式会社ソニー・インタラクティブエンタテインメント 物理オブジェクトの画像をフェードアウトする方法
JP2018102588A (ja) * 2016-12-26 2018-07-05 株式会社コーエーテクモゲームス ゲームプログラム、記録媒体、ゲーム処理方法
JP2018130212A (ja) * 2017-02-14 2018-08-23 株式会社コナミアミューズメント ゲーム機
JP6410378B1 (ja) * 2017-06-30 2018-10-24 Mxモバイリング株式会社 Vrを用いた消火体験シミュレーションシステム、体験用消火器、及びプログラム
JP6470374B1 (ja) * 2017-10-03 2019-02-13 株式会社コロプラ 仮想現実を提供するためにコンピュータで実行されるプログラムおよび情報処理装置
JP2019067456A (ja) * 2019-01-17 2019-04-25 株式会社コロプラ 仮想現実を提供するためにコンピュータで実行されるプログラムおよび情報処理装置
JP2019531822A (ja) * 2017-01-18 2019-11-07 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 仮想キャラクタの方位確定方法、装置及び記憶媒体

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016502201A (ja) * 2012-11-29 2016-01-21 マイクロソフト テクノロジー ライセンシング,エルエルシー ヘッドマウントディスプレイのリソース管理
US9851787B2 (en) 2012-11-29 2017-12-26 Microsoft Technology Licensing, Llc Display resource management
JP2015007835A (ja) * 2013-06-24 2015-01-15 キヤノン株式会社 画像処理装置、画像処理方法
US9684169B2 (en) 2013-06-24 2017-06-20 Canon Kabushiki Kaisha Image processing apparatus and image processing method for viewpoint determination
JP2017148530A (ja) * 2013-09-30 2017-08-31 株式会社ソニー・インタラクティブエンタテインメント 物理オブジェクトの画像をフェードアウトする方法
JP2018102588A (ja) * 2016-12-26 2018-07-05 株式会社コーエーテクモゲームス ゲームプログラム、記録媒体、ゲーム処理方法
JP2019531822A (ja) * 2017-01-18 2019-11-07 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 仮想キャラクタの方位確定方法、装置及び記憶媒体
US10825261B2 (en) 2017-01-18 2020-11-03 Tencent Technology (Shenzhen) Company Limited Method and device for determining and adjusting spatial attribute of virtual character in virtual reality applications
JP7070843B2 (ja) 2017-01-18 2022-05-18 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 仮想キャラクタの方位確定方法、装置及びコンピュータプログラム
JP2018130212A (ja) * 2017-02-14 2018-08-23 株式会社コナミアミューズメント ゲーム機
JP6410378B1 (ja) * 2017-06-30 2018-10-24 Mxモバイリング株式会社 Vrを用いた消火体験シミュレーションシステム、体験用消火器、及びプログラム
JP2019012154A (ja) * 2017-06-30 2019-01-24 Mxモバイリング株式会社 Vrを用いた消火体験シミュレーションシステム、体験用消火器、及びプログラム
JP6470374B1 (ja) * 2017-10-03 2019-02-13 株式会社コロプラ 仮想現実を提供するためにコンピュータで実行されるプログラムおよび情報処理装置
JP2019067222A (ja) * 2017-10-03 2019-04-25 株式会社コロプラ 仮想現実を提供するためにコンピュータで実行されるプログラムおよび情報処理装置
JP2019067456A (ja) * 2019-01-17 2019-04-25 株式会社コロプラ 仮想現実を提供するためにコンピュータで実行されるプログラムおよび情報処理装置
JP7030726B2 (ja) 2019-01-17 2022-03-07 株式会社コロプラ 仮想現実を提供するためにコンピュータで実行されるプログラムおよび情報処理装置

Similar Documents

Publication Publication Date Title
Fuhrmann et al. Occlusion in collaborative augmented environments
US9927870B2 (en) Virtual reality system with control command gestures
US7952594B2 (en) Information processing method, information processing apparatus, and image sensing apparatus
EP3698231B1 (en) User interface discovery and interaction for three-dimensional virtual environments
JP4227561B2 (ja) 画像処理方法、画像処理装置
JP4533087B2 (ja) 画像処理方法、画像処理装置
JP4883774B2 (ja) 情報処理装置及びその制御方法、プログラム
US20130154913A1 (en) Systems and methods for a gaze and gesture interface
JP6002286B1 (ja) ヘッドマウントディスプレイ制御方法、および、ヘッドマウントディスプレイ制御プログラム
JP2009025918A (ja) 画像処理装置、画像処理方法
WO2019181263A1 (ja) 情報処理装置、情報処理方法およびプログラム
KR20220137880A (ko) 증강 현실에서 물리적 객체에 의한 가상 객체의 오클루전
US11545108B2 (en) Modifying rendered image data based on ambient light from a physical environment
JP2006285609A (ja) 画像処理方法、画像処理装置
JP2005025563A (ja) 仮想現実感生成方法
JP2015167349A (ja) 情報処理装置、情報処理システム、その制御方法及びプログラム
JP2005339377A (ja) 画像処理方法、画像処理装置
US20220300120A1 (en) Information processing apparatus, and control method
JP4217661B2 (ja) 画像処理方法、画像処理装置
JP2006343954A (ja) 画像処理方法、画像処理装置
JP2001209826A (ja) 仮想空間の編集方法、仮想空間の編集装置、コンピュータプログラム記憶媒体および仮想現実感提示装置
US11836871B2 (en) Indicating a position of an occluded physical object
JP2004013326A (ja) 画像処理装置及びその制御方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体
US11983810B1 (en) Projection based hair rendering
KR102542641B1 (ko) 핸드 트래킹을 이용한 재활 훈련 장치 및 작동 방법

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060905