(57)【要約】【課題】仮想現実感生成システムにおいて、視点追従機能を一時停止させ、それを再び開始させる場合に、視界を停止直前の状態に滑らかに復帰させ、快適で効率的な操作性を提供する。【解決手段】仮想現実感生成システムにおいて、コントローラ１０６によって、視点追従動作の停止要求と再開要求を行わせ、視点追従動作停止要求時に、レシーバ１０２で検出するユーザの視点状態を記憶して復帰視点状態とし、その後視点追従動作を停止させ、視点追従動作再開要求後、レシーバ１０２によってユーザの視点状態を監視し続け、現在のユーザの視点状態が復帰視点状態に近くなった状態で初めて視点追従動作を再開させる。【選択図】        図１
2005025563.tif 000002
【特許請求の範囲】
【請求項１】
三次元空間の可視化画像をコンピュータグラフィックスすなわちＣＧによって生成する仮想現実感生成方法において、
ユーザの視点変化を視点検出機構により逐次検出し、その変化をＣＧ画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、
ユーザの制御によって、視点追従動作の停止要求と再開要求を行わせ、視点追従動作停止要求時に、ユーザの視点状態を記憶して復帰視点状態とし、その後視点追従動作を停止させ、視点追従動作再開要求後、ユーザの視点状態を監視し続け、現在のユーザの視点状態が復帰視点状態に近くなった状態で初めて視点追従動作を再開させる、ことを特徴とする仮想現実感生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、仮想現実感を提供する方法と装置、およびその方法を実現するためのプログラムに関するものである。
【０００２】
【従来の技術】
従来の技術ａ
近年、コンピュータグラフィックス（以下ＣＧと記す）を利用して仮想現実感を提供するシステムが普及し始めている。このような仮想現実感生成システムではＣＧによって仮想的な三次元空間の画像をリアルタイムに生成し、仮想現実感を実現している。ＣＧ画像の表示にヘッドマウントディスプレイ（以下ＨＭＤと記す）を利用した手法は、臨場感のある仮想現実感を実現できる手法として普及している。また、視点を検出するためのセンサをユーザに取り付け、視点変化をトラッキングし、その情報をＣＧ画像生成時の視点情報に反映させれば、ユーザの視点変化に追従したＣＧ画像を生成することができる。これによって、よりリアリティのある仮想現実感が提供できる。ユーザの視点情報を検出する手法には、磁気式位置センサによって頭部位置の運動をトラッキングする手法などが知られている。
【０００３】
従来の技術ｂ
近年、コンピュータグラフィックスを利用して仮想現実感を提供するシステムが普及し始めている。このような仮想現実感生成システムではＣＧによって仮想的な三次元空間の画像をリアルタイムに生成し、仮想現実感を実現している。ＣＧ画像の表示にＨＭＤを利用した手法は、臨場感のある仮想現実感を実現できる手法として普及している。また、視点を検出するためのセンサをユーザに取り付け、視点変化をトラッキングし、その情報をＣＧ画像生成時の視点情報に反映させれば、ユーザの視点変化に追従したＣＧ画像を生成することができる。これによって、よりリアリティのある仮想現実感が提供できる。ユーザの視点情報を検出する手法には、磁気式位置センサを頭部に取り付け、頭部位置の運動をトラッキングする手法が知られている。また、ＨＭＤ以外の表示装置を利用したシステムとして、ＣＡＶＥと呼ばれるシステムも知られている。このシステムでは、ユーザを取り囲むように配置された複数のスクリーンに映像を投影することにより、広い視野角に基づく高い臨場感が実現できる。このシステムを使う場合にも、頭部位置検出機構により、ユーザの視点に応じて適切な視界を提供することが行われている。
【０００４】
従来の技術ｃ
近年、コンピュータグラフィックスを利用して仮想現実感を提供するシステムが普及し始めている。このような仮想現実感生成システムではＣＧによって仮想的な三次元空間の画像をリアルタイムに生成し、仮想現実感を実現している。ＣＧ画像の表示にヘッドマウントディスプレイを利用した手法は、臨場感のある仮想現実感を実現できる手法として普及している。また、視点を検出するためのセンサをユーザに取り付け、視点変化をトラッキングし、その情報をＣＧ画像生成時の視点情報に反映させれば、ユーザの視点変化に追従したＣＧ画像を生成することができる。これによって、よりリアリティのある仮想現実感が提供できる。
【０００５】
ユーザの視点情報を検出する手法には、磁気式位置センサを頭部に取り付け、頭部位置の運動をトラッキングする手法が知られている。また、ＨＭＤ以外の表示装置を利用したシステムとして、ＣＡＶＥと呼ばれるシステムも知られている。
【０００６】
このシステムでは、ユーザを取り囲むように配置された複数のスクリーンに映像を投影することにより、広い視野角に基づく高い臨場感が実現できる。このシステムを使う場合にも、頭部位置検出機構により、ユーザの視点に応じて適切な視界を提供することが行われている。
【０００７】
このような視点追従型の仮想現実感生成システムでは、ユーザが頭を動かし周りを見渡すことにより、実質的に全方位、または広い方位の空間を観察することができる。また、ユーザの位置を仮想空間中で移動させることができるものも存在し、その場合、ユーザ位置の移動はユーザの手元のコントローラによって制御される。
【０００８】
従来の技術ｄ
近年、コンピュータグラフィックスを利用して仮想現実感を提供するシステムが普及し始めている。このような仮想現実感生成システムではＣＧによって仮想的な三次元空間の画像をリアルタイムに生成し、仮想現実感を実現している。ＣＧ画像の表示にヘッドマウントディスプレイを利用した手法は、臨場感のある仮想現実感を実現できる手法として普及している。また、視点を検出するためのセンサをユーザに取り付け、視点変化をトラッキングし、その情報をＣＧ画像生成時の視点情報に反映させれば、ユーザの視点変化に追従したＣＧ画像を生成することができる。これによって、よりリアリティのある仮想現実感が提供できる。ユーザの視点情報を検出する手法には、磁気式位置センサによって頭部位置の運動をトラッキングする手法などが知られている。
【０００９】
従来の技術を示す文献としては、下記特許文献１，２がある。
【００１０】
【特許文献１】
特開平８−１６０３４９号公報
【特許文献２】
特開平１０−３３４２７４号公報
【００１１】
【発明が解決しようとする課題】
前記従来の技術ａについての課題
前述の従来の技術ａに記載のような視点追従型の仮想現実感生成システムでは、場合によって、システム稼働中に視点追従機能を一時的に停止させたり、再度開始させたりしたい場合がある。そのような例として、システムの開発作業において、仮想空間中の特定の物体属性をキーボードやマウスを用いて調整するような場合が考えられる。
【００１２】
その手順は次のようになる。
【００１３】
まず、操作者は視点追従型の仮想現実感生成システムを実際に体験しながら、空間を見渡し問題物体を探す。問題物体を見つけると、物体を視界に収めた状態で視点追従機能を停止させ視界を固定する。そこで、ＨＭＤを外し、ＨＭＤに表示される映像と同じ映像を外部モニタで確認しながら、机上のキーボードやマウスなどを使って調整を行う。調整が終わると実際のシステム稼働中での様子を確認すべく、ＨＭＤを再び装着し視点追従機能を再開する。ここで、調整作業中はＨＭＤを外したが、そうしなくとも、ＨＭＤのシースルー機能（ＨＭＤ表示映像と外界視界の重畳機能）を利用し、ＨＭＤの脱着なしに同様の作業を行う場合も考えられる。
【００１４】
このような視点追従機能の一時停止、および再開について考えると、一時停止を行う場合は、単に視点追従機能を停止させるだけでよいが、再開を行う場合には問題がある。視点追従を一時停止させ何らかの作業を行った後は、ユーザの視点は視点追従を一時停止させた状態とは異なる状態になっており、この状態で、単に視点追従を再開させると、ユーザに提供される仮想空間の視界は不連続に変化する。これはユーザに不快感を与えるだけでなく、問題となっていた物体を見失うことにもなる。よって、視点追従機能の一時停止、および再開を行う場合は、このような視界の不連続変化を低減させる対策が必要である。
【００１５】
しかしながら、従来のシステムにおいて視点追従機能の一時停止、および再開を行う場合、視界の不連続変化に対処した操作手法が提供されていなかった。
【００１６】
本発明は、このような状況のもとでなされたもので、仮想現実感生成システムにおいて、視点追従機能を一時停止させ、それを再び開始させる場合に、視界を停止直前の状態に滑らかに復帰させ、快適で効率的な操作性を提供することを第１の課題とするものである。
【００１７】
前記従来の技術ｂについての課題
前記従来の技術ｂに記載のような視点追従型の仮想現実感生成システムでは、ＣＧ画像生成処理に多くのコンピュータ資源を使い電力を消費する。また、ＨＭＤに画像を出力し続けることはＨＭＤの液晶の劣化を早めることにもなる。よって、システムが使用されていない場合はコンピュータによるＣＧ画像生成処理やＨＭＤへの出力を停止させ、資源の節約を行う事が好ましい。
【００１８】
しかし、従来のシステムにおいて、ＣＧ画像生成の動作を停止、または開始させる場合、ユーザ、若しくは補助オペレータによる何らかの手動操作が必要であった。よって、資源の節約を行うためには、ユーザ自身に余分な操作を要求するか、補助オペレータを必要とするか、若しくは資源の節約を諦め連続運転させる必要があった。
【００１９】
本発明は、このような状況のもとでなされたもので、仮想現実感生成システムにおいて、煩雑な操作なく待機中の資源の節約を可能にすることを第２の課題とするものである。
【００２０】
前記従来の技術ｃについての課題
前述の従来の技術ｃに記載のような視点追従型の仮想現実感生成システムでは、ユーザが自然な直視状態から様々な角度に頭を傾け、全方位、または広い方位の空間を観察することができる。この時、ユーザは場合によって、頭を傾けた状態で見える物体に関心を持ち、その物体の詳細な観察を行う場合が考えられる。例えば、星座の観察シミュレーションを実行した場合、ユーザは暫く天空を概略的に観察した後、上方に見える特定の星座に興味を持つ、という状況が考えられる。この場合、仮想現実感の本来の目的に基づき、ユーザには実際の星座観察と同等の体験を強い、不自然な姿勢での観察を行わせてもよい。しかし、それよりはユーザの快適性を重視し、空間自体をユーザの都合に合わせて移動させ、ユーザの見易い自然な直視状態で注目物体が観察できるようにした方が好ましい。
【００２１】
このように仮想現実感生成システムでは、現実と同じように、固定された空間中にユーザを置き仮想現実を体験させるという手法を備えた上で、さらに、ユーザの視点に合わせて空間を移動させ、ユーザの視界位置を調整するという手法も備えた方が好ましい。
【００２２】
しかしながら、従来の視点追従型の仮想現実感生成システムにおいて、ユーザ視点位置に対する空間の移動、または等価なことであるが空間に対するユーザ視点位置の移動は、ユーザの視点追従機構とは独立したコントローラで行われていた。このようなコントローラを使う場合、ユーザは通常ＨＭＤを注視した状態で手元のコントローラを操作する。このため、コントローラの構造は単純で、かつその操作方法も簡単なものでなければならない。その結果、空間を移動させるような操作、または視界位置を調整するような操作を正確に行うことは難しかった。
【００２３】
本発明は、このような状況のもとでなされたもので、仮想現実感生成システムにおいて、ユーザが注目物体を正面の視界に収めるべく空間配置を調整する際に、ユーザの体感する仮想現実感を、より快適な操作性とともに実現することを第３の課題とするものである。
【００２４】
従来の技術ｄについての課題
前述の従来の技術ｄに記載のようなＨＭＤを用いた仮想現実体験では、ユーザは頭部にＨＭＤを装着する。この場合、ユーザの視界は外界から遮蔽され、ＨＭＤの表示画面のみが見えるようになる。これによって仮想現実体験の没入感を高めることができる。ＨＭＤとして、シースルー機能、すなわちＨＭＤ表示映像と外界視界の重畳機能を持つものを利用し、仮想と現実の複合現実感体験を行う場合もある。しかし、仮想空間にユーザを没入させることが目的である場合は、通常、ＨＭＤの装着によって外界の視界は遮断され、ＨＭＤの表示画面のみが提供される。このため、ユーザがＨＭＤを装着した場合、ユーザの視界は現実の外界視界から、仮想空間視界へと突然に変化し、この急激な変化はユーザにとって好ましくない。
【００２５】
例えば、仮想現実体験を行う体験スペース（部屋など）が明るい場所であり、仮想現実で提供される空間が暗いものであった場合、ＨＭＤ装着時、あるいは外した時の視界の不連続性は、ユーザに違和感、または不快感を与える。さらに、視点追従機構が付加されたシステムでは、ユーザは体験開始直後、システムの視点追従動作に慣れるべく、自分の頭部（視点）を適度に動かし仮想空間映像の視点変化を確認する。この時、ユーザは、今まで見ていた現実視界とは大きく異なる仮想空間の映像を見ることになるため、視点追従動作への順応が迅速に行われない。
【００２６】
このように、ＨＭＤを用いた仮想現実感生成システムでは体験開始時の現実視界と仮想空間視界の差異が問題となるが、従来、この問題に対する適切な対策が行われていなかった。
【００２７】
本発明は、このような状況のもとでなされたもので、仮想現実感生成システムにおいて、仮想現実への移行が滑らかに行われ快適な仮想現実感を提供することを第４の課題とするものである。
【００２８】
【課題を解決するための手段】
前記第１ないし第４の課題を解決するため、本発明では、仮想現実感生成方法を次の（１）ないし（４）、（７）〜（９）、（１２）〜（１７）、（２０）〜（２２）のとおりに構成し、仮想現実感生成システムを次の（５），（１０），（１８），（２３）のとおりに構成し、プログラムを次の（６），（１１），（１９），（２４）のとおりに構成する。
【００２９】
（１）三次元空間の可視化画像をコンピュータグラフィックスすなわちＣＧによって生成する仮想現実感生成方法において、
ユーザの視点変化を視点検出機構により逐次検出し、その変化をＣＧ画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、
ユーザの制御によって、視点追従動作の停止要求と再開要求を行わせ、視点追従動作停止要求時に、ユーザの視点状態を記憶して復帰視点状態とし、その後視点追従動作を停止させ、視点追従動作再開要求後、ユーザの視点状態を監視し続け、現在のユーザの視点状態が復帰視点状態に近くなった状態で初めて視点追従動作を再開させる、ことを特徴とする仮想現実感生成方法。
【００３０】
（２）前記（１）に記載の仮想現実感生成方法において、
前記視点検出機構として、ユーザの頭部に三次元位置回転センサを装着することによって、ユーザの視点検出を行うことを特徴とする仮想現実感生成方法。
【００３１】
（３）前記（１）または（２）に記載の仮想現実感生成方法において、
ユーザにヘッドマウントディスプレイを装着させ、ＣＧ画像を該ヘッドマウントディスプレイに表示させることを特徴とする仮想現実感生成方法。
【００３２】
（４）前記（１）ないし（３）のいずれかに記載の仮想現実感生成方法において、
前記現在のユーザの視点状態が復帰視点状態に近くなった状態は、視点の状態を、視点位置を表す三次元座標と視点方向を表す三次元回転角から構成される多次元ベクトルで表し、二つの視点状態ベクトルについて、各成分の差全てが閾値以下であれば近くなった状態と判断する、ことを特徴とする仮想現実感生成方法。
【００３３】
（５）三次元空間の可視化画像をコンピュータグラフィックスすなわちＣＧによって生成する仮想現実感生成システムにおいて、
ユーザの視点変化を逐次検出する視点検出機構と、
ユーザより視点追従動作の停止要求と再開要求を受ける要求受理手段と、
前記視点検出機構で検出した視点変化をＣＧ画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、前記要求受理手段が視点追従動作の停止要求を受けたときに、ユーザの視点状態を記憶して復帰視点状態とし、その後視点追従動作を停止させ、前記要求受理手段が視点追従動作の再開要求を受けたときに、前記視点検出機構でユーザの視点状態を監視し続け、現在のユーザの視点状態が記憶していた復帰視点状態に近くなった状態で初めて視点追従動作を再開させるように制御する制御手段と、を備えたことを特徴とする仮想現実感生成システム。
【００３４】
（６）前記（１）ないし（４）のいずれかに記載の仮想現実感生成方法を実現するためのプログラム。
【００３５】
（７）視点検出機構として、ユーザの頭部に装着された三次元位置回転センサを利用し、三次元空間の可視化画像をコンピュータグラフィックスすなわちＣＧによって生成する仮想現実感生成方法において、
ユーザの視点変化を前記視点検出機構により逐次検出し、その変化をＣＧ画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、
システム未使用中は前記三次元位置回転センサを特別の状態で配置し、該三次元位置回転センサの情報によってシステムが使用中か未使用中かを自動判別し、未使用中はＣＧ画像生成処理を停止させることを特徴とする仮想現実感生成方法。
【００３６】
（８）前記（７）に記載の仮想現実感生成方法において、
ユーザにヘッドマウントディスプレイを装着させ、ＣＧ画像を該ヘッドマウントディスプレイに表示させることを特徴とする仮想現実感生成方法。
【００３７】
（９）前記（７）または（８）に記載の仮想現実感生成方法において、
前記特別な状態は、前記三次元位置回転センサを、特定の場所に置くか、または特定の向きに置くか、またはその両方であることを特徴とする仮想現実感生成方法。
【００３８】
（１０）ユーザの頭部に装着された三次元位置回転センサを利用して視点検出を行う視点検出機構を備え、システム未使用中は該三次元位置回転センサを特別の状態で配置するようにした、三次元空間の可視化画像をコンピュータグラフィックスすなわちＣＧによって生成する仮想現実感生成システムにおいて、
ユーザの視点変化を前記視点検出機構により逐次検出し、その変化をＣＧ画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、前記三次元位置回転センサの情報によってシステムが使用中か未使用中かを自動判別し、未使用中はＣＧ画像生成処理を停止させるように制御する制御手段を備えたことを特徴とする仮想現実感生成システム。
【００３９】
（１１）前記（７）ないし（９）のいずれかに記載の仮想現実感生成方法を実現するためのプログラム。
【００４０】
（１２）三次元空間の可視化画像をコンピュータグラフィックスすなわちＣＧによって生成する仮想現実感生成方法において、
ユーザの視点変化を視点検出機構により逐次検出し、その変化をＣＧ画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、
ＣＧ画像生成の視点設定とユーザの視点変化の対応付けを、視界補正用の変換を介して行い、
ユーザの視点にＣＧ画像の視界が追従する通常観察状態と、視界位置の調整を行う視界調整状態の二つの動作状態を設け、二つの状態をユーザの意図的操作により切り替えさせ、視界調整状態中に行われたユーザの視点変化量を視界補正用の変換に反映させようにし、視界調整状態中のユーザの視点変更動作によって、三次元空間画像の視界基準点を調整できるようにしたことを特徴とする仮想現実感生成方法。
【００４１】
（１３）前記（１２）に記載の仮想現実感生成方法において、
前記視点検出機構として、ユーザの頭部に三次元位置回転センサを装着することによって、ユーザの視点検出を行うことを特徴とする仮想現実感生成方法。
【００４２】
（１４）前記（１２）または（１３）に記載の仮想現実感生成方法において、ユーザにヘッドマウントディスプレイを装着させ、ＣＧ画像をヘッドマウントディスプレイに表示させることを特徴とする仮想現実感生成方法。
【００４３】
（１５）前記（１２）ないし（１４）のいずれかに記載の仮想現実感生成方法において、
ユーザの意図的操作はボタンの押下であることを特徴とする仮想現実感生成方法。
【００４４】
（１６）前記（１２）ないし（１５）のいずれかに記載の仮想現実感生成方法において、
前記視界調整状態中はＣＧ画像の視界変化を停止させることを特徴とする仮想現実感生成方法。
【００４５】
（１７）前記（１２）ないし（１６）のいずれかに記載の仮想現実感生成方法において、
物体が配置される物体空間から視点を基準にした視界空間への座標変換である物体視界変換を用い、三次元空間を定義する物体座標に、物体視界変換を作用させＣＧ画像生成を行い、
通常観察状態から視界調整状態に変わった場合に、その時でのユーザの視点状態を第一視点状態として記憶し、
視界調整状態から通常観察状態に変わった場合に、その時点のユーザの視点状態を第二視点状態として、第二視点状態に対応する物体視界変換に、視界補正用の変換を施した結果が、第一視点状態に対応する物体視界変換に等しくなるよう視界補正用変換を求めることを特徴とする仮想現実感生成方法。
【００４６】
（１８）ユーザの視点変化を検出する視点検出機構と、ユーザの視点にＣＧ画像の視界が追従する通常観察状態と視界位置の調整を行う視界調整状態の二つの動作状態を切り替える切り替え手段とを備え、三次元空間の可視化画像をコンピュータグラフィックスすなわちＣＧによって生成する仮想現実感生成システムにおいて、
前記視点検出機構によりユーザの視点変化を逐次検出し、その変化をＣＧ画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成し、
ＣＧ画像生成の視点設定とユーザの視点変化の対応付けを、視界補正用の変換を介して行い、
前記切り替え手段により通常観察状態から視界調整状態に切り替えたとき、視界調整状態中に行われたユーザの視点変化量を視界補正用の変換に反映させようにし、視界調整状態中のユーザの視点変更動作によって、三次元空間画像の視界基準点を調整できるようにしたことを特徴とする仮想現実感生成システム。
【００４７】
（１９）前記（１２）ないし（１７）のいずれかに記載の仮想現実感生成方法を実現するためのプログラム。
【００４８】
（２０）三次元空間の可視化画像をコンピュータグラフィックスすなわちＣＧによって生成する仮想現実感生成方法において、
ユーザにヘッドマウントディスプレイを装着させ、ＣＧ画像をヘッドマウントディスプレイに表示させ、
主たる可視化対象となる第一の三次元空間データと、体験を行う実在空間を模擬した第二の三次元空間データを用い、
第一の三次元空間の仮想体験を行う前に、第二の三次元空間を実在の体験者位置の視点で可視化し模擬実在体験空間の予備体験を行わせ、その後、第一の三次元空間の可視化による主たる三次元空間の仮想体験を行わせることを特徴とする仮想現実感生成方法。
【００４９】
（２１）前記（２０）に記載の仮想現実感生成方法において、
ユーザの視点変化を視点検出機構により逐次検出し、その変化をＣＧ画像生成の視点設定に反映させ、ユーザの視点変化に追従して視界の変わる三次元空間画像を生成することを特徴とする仮想現実感生成方法。
【００５０】
（２２）前記（２０）または（２１）に記載の仮想現実感生成方法であって、主たる三次元空間の仮想体験の前に行われる予備体験において、第二の三次元空間物体の透過率を徐々に上げ、同時に第一の三次元空間物体の透過率を徐々に下げながら、第一と第二の三次元空間を同時に可視化し、予備体験から主たる仮想体験に遷移させることを特徴とする仮想現実感生成方法。
【００５１】
（２３）三次元空間の可視化画像をコンピュータグラフィックスすなわちＣＧによって生成し、ユーザにヘッドマウントディスプレイを装着させ、生成したＣＧ画像をヘッドマウントディスプレイに表示させる仮想現実感生成システムにおいて、
主たる可視化対象となる第一の三次元空間データと、体験を行う実在空間を模擬した第二の三次元空間データを用い、第一の三次元空間の仮想体験を行う前に、第二の三次元空間を実在の体験者位置の視点で可視化し模擬実在体験空間の予備体験を行わせ、その後、第一の三次元空間の可視化による主たる三次元空間の仮想体験を行わせるように制御する制御手段を備えたことを特徴とする仮想現実感生成方法。
【００５２】
（２４）前記（２０）ないし（２２）のいずれかに記載の仮想現実感生成方法を実現するためのプログラム。
【００５３】
【発明の実施の形態】
以下本発明の実施の形態を、仮想現実感生成システムの実施例により詳しく説明する。なお、本発明は、システムの形に限らず、実施例の説明に裏付けられて、方法の形で、さらにこの方法を実現するためのプログラムの形で実施することができる。
【００５４】
【実施例】
（実施例１）
実施例１である“仮想現実感生成システム”を図１〜図４を用いて説明する。
【００５５】
（全体構成）
図１は本実施例の装置構成の概念図である。
【００５６】
コンピュータ１０３はＣＧ画像を生成し、その映像はＨＭＤ１０１に出力される。ユーザはＨＭＤ１０１を装着し、コンピュータ１０３から出力される映像を仮想空間として体験する。ユーザは、手元に置かれたコントローラ１０６を操作して必要に応じてシステムを調整作業モードにし、調整作業を行う。ＨＭＤ１０１はシースルー機能が付いておりＨＭＤ１０１に付いたボタンによって、表示映像のみが鑑賞できる状態と、表示映像に外界視界を重畳させて鑑賞できる状態を切り替えられる。これによって、ＨＭＤ１０１を外さずに手元の調整機器を使った作業ができるようになる。ただし、ＨＭＤ１０１にシースルー機能が無くとも、ＨＭＤ表示映像を補助的なディスプレイで確認できるようにし、ＨＭＤ１０１を外して調整作業をしてもよい。
【００５７】
本実施例ではユーザの視点を検知する手法として磁気式位置センサ用いる。磁気式位置センサは製品（ポヒマス社製品など）が存在し、公知の機器であるため詳細な説明は省略する。磁気式位置センサは磁場を生成するトランスミッタ１０５、誘導電流を検出するレシーバ１０２、および制御用の位置センサコントローラ１０４から構成される。レシーバ１０２はユーザの頭部に装着され、トランスミッタ１０５はレシーバ１０２との相対位置を考慮して、適宜な位置に配置される。通常、レシーバ１０２はＨＭＤ１０１に取り付けＨＭＤと一体化する場合が多い。これによってＨＭＤ１０１の装着とレシーバ１０２の装着が同時に行われるため便利である。本実施例でもレシーバ１０２とＨＭＤ１０１を一体化させる。
【００５８】
レシーバ１０２には、トランスミッタ１０５に対するレシーバ１０２の相対変位に応じた電流が発生し、位置センサコントローラ１０４ではこれを解析し、位置データを算出する。位置センサコントローラ１０４はコンピュータ１０３に接続され、位置データがコンピュータ１０３に送られる。位置センサコントローラ１０４とコンピュータ１０３間のデータ通信にはシリアル通信が用いられる。以後、頭部位置検出用磁気式位置センサを単に位置センサとよぶ。また、位置センサのデータは位置情報と回転情報の両方を含むが、単に位置データとよぶことにする。
【００５９】
（コンピュータの構成）
図２は本実施例に使われるコンピュータ１０３の構成を示したものである。コンピュータ１０３の記憶装置２０４には、本実施例の仮想現実感を生成するためのプログラムが格納される。また、仮想空間を構成する三次元物体データ等もコンピュータ１０３の記憶装置２０４に格納される。この三次元物体データとは、頂点座標情報と、各頂点の連結によって定義されるポリゴンのデータである。記憶装置２０４に格納されたプログラムはコンピュータ１０３のＣＰＵ２０２によって実行され、画像メモリ２０５にＣＧ画像が生成される。ただし、最近のコンピュータでは、ＣＧ画像をＣＰＵによってのみ生成するのではなく、専用のハードウェアを併用して生成する場合が多い。２０６はそのようなＣＧ画像生成専用のハードウェアである。画像メモリ２０５に生成されたＣＧ画像は、コンピュータ１０３に接続されたＨＭＤ１０１に出力される。コンピュータ１０３にはコントローラ２１０が接続され、視点追従停止・再開操作に使われる。コントローラ２１０には視点追従停止用と再開用の二つのボタンが付いている。コンピュータ１０３には、周辺機器としてキーボード２０８やマウス２０９が接続され、コンピュータ１０３の操作に利用される。これらのキーボード２０８やマウス２０９をコントローラ２１０の変わりに使用してもよい。コンピュータ１０３のシリアル通信装置２０３には位置センサコントローラ１０４が接続され、位置センサ１０４からの位置データがコンピュータ１０３に取り込まれる。
【００６０】
（処理手順の説明）
図３のフローチャートは本実施例の処理手順を表している。以下、図３を用いて本実施例の処理手順を説明して行く。
【００６１】
最初に、処理手順の概略を述べておく。
【００６２】
処理全体の動作は大きく三つの動作モードに分かれる。三つの動作モードとは「実行中」、「一時停止」、および「復帰待ち」である。動作モードが「実行中」の場合は通常の視点追従動作が行われる。動作モードが「実行中」の状態で、ユーザが調整作業を希望する場合、ユーザは手に持ったコントローラ１０６の「一時停止ボタン」を押下して、「動作モード」を「一時停止」に変える。この時、ユーザの視点状態を記憶しておく。動作モードが「一時停止」になると、視点追従動作が停止し、ユーザは静止した仮想空間の画面を見ながら調整作業を行うことができる。調整作業終了後、通常の視点追従動作を再開する場合、ユーザは手に持ったコントローラの「再開ボタン」を押下する。この時、動作モードを一旦「復帰待ち」状態に遷し、視点追従動作の開始を保留する。動作モードが「復帰待ち」の場合は、ユーザの視点を監視し続け、ユーザの視点が記憶した「一時停止ボタン」押下時の状態と等しいか、または近い状態になった時に初めて、動作モードを「実行中」に変え、視点追従動作を再開する。これによって、視点追従動作が実際に再開された場合、今まで停止していた仮想空間の視界が不連続に変化することなく、滑らかに視点追従が開始される。
【００６３】
以下、図３の各処理を説明する。
【００６４】
処理全体にわたり使用する変数として、前述の動作モードに対応した変数「動作モード」を用意する。
【００６５】
プログラムが開始されると、ステップ３０１（図では３０１と略記する、以下同様）の初期化処理を行い、ステップ３０２において終了要求が発生するまで、ステップ３０２以下の処理を繰り返す。
【００６６】
ステップ３０１の初期化処理では、「動作モード」変数を「実行中」に設定しておく。
【００６７】
ステップ３０２における終了要求とは、ユーザがキーボード２０８、またはマウス２０９を使ってプログラムの終了を要求することである。
【００６８】
ステップ３０３以下の流れは「動作モード」の値に応じて三つに分かれる。
【００６９】
まず「動作モード」が「実行中」の場合を説明する。
【００７０】
ステップ３０４ではコントローラ１０６の一時停止ボタンが押下されたかどうかを調べ、もし、押下された場合は動作を切り替えるべくステップ３０５に進み、押下されていない場合は、通常の視点追従動作を行うべくステップ３０７に進む。
【００７１】
ステップ３０７に進んだ場合を説明する。ステップ３０７に進んだ場合は、位置センサコントローラ１０４から送られてくる位置データを読み取る。位置センサコントローラ１０４から送られてくる位置データには、位置センサレシーバ１０２のトランスミッタに対する変位情報が記され、次の６成分のデータが順番に並んでいる。すなわち、レシーバ１０２のトランスミッタに対する並進成分のＸ座標、Ｙ座標、およびＺ座標、さらに、レシーバ１０２のトランスミッタに対する回転を表す第一回転角、第二回転角、および第三回転角である。ただし、三つの回転角は、Ｘ軸、Ｙ軸、およびＺ軸周りのオイラー角で表現される。
【００７２】
ステップ３０８では、センサから得た位置データに基づき、ユーザの視点に追従するようＣＧ画像を生成し、その画像をＨＭＤ１０１に出力する。ＣＧ画像の生成方法は後述の「ＣＧ画像生成」にて説明することにし、ここでは全体の流れを先に説明してしまう。
【００７３】
ステップ３０８を終えると、処理を繰り返すべくステップ３０２に戻る。
【００７４】
ステップ３０４においてステップ３０５に進んだ場合は、まず、「動作モード」を「一時停止」に設定する。続いて、ステップ３０６において位置センサから位置データを取得し、これを「復帰視点データ」として記憶し、次の処理を繰り返すべくステップ３０２に戻る。
【００７５】
次に、「動作モード」が「一時停止」であった場合のステップ３０３以降の流れを説明する。
【００７６】
ステップ３０９ではコントローラ１０６の再開ボタンが押下されたかどうかを調べ、もし、押下された場合は動作を切り替えるべく「動作モード」を「復帰待ち」に設定しステップ３０２に戻る。
【００７７】
ステップ３０９においてコントローラ１０６の再開ボタンが押下されていない場合は、調整処理のステップ３１１を行う。調整処理としては、仮想空間中の着目物体の属性を変えるような操作が考えられる。その場合、調整処理の内容としては、キーボード２０８やマウス２０９の入力を調べ、それら入力に応じて物体の色や大きさを変更するような処理を行えばよい。調整処理において物体属性を変えた場合は、その結果を表示画面に反映させるべく、ステップ３１２のＣＧ画像生成処理を行う。このステップ３１２は前記ステップ３０８と同じものであり、後述の「ＣＧ画像生成」にて説明する。
【００７８】
次に、「動作モード」が「復帰待ち」であった場合のステップ３０３以降の流れを説明する。
【００７９】
ステップ３１３では位置センサからの位置データを読み取る。この処理のステップ３１３は前記ステップ３０７と同じである。
【００８０】
読み取った位置データが特定の復帰条件を満たす場合は、「動作モード」を「実行中」に設定しステップ３０２に戻り、視点追従動作を再開する。位置データが復帰条件を満たさない場合は何もせず、位置データの監視を繰り返すべくステップ３０２に戻る。ここで、復帰条件とは、現在の位置データがステップ３０６にて記憶した「復帰視点データ」に十分近い場合に条件を満たすものとする。二つの位置データの近さ判別は、位置データの６成分それぞれについて、その差を調べ、全てが適度な値以下であれば十分近いと判断すればよい。
【００８１】
（ＣＧ画像生成）
最後に、ステップ３０８とステップ３１２にて行われるＣＧ画像生成処理の内容を説明する。
【００８２】
ＣＧ画像生成処理では位置センサから得た位置データに基づき、描画の視点設定を変え、描画を行う。
【００８３】
まず、ＣＧ画像生成における描画方法と視点設定の方法について説明する。
【００８４】
図４は、ＣＧ計算により三次元物体データを二次元画像化、すなわちレンダリングする方法を示している。ＣＧ計算のアルゴリズムは複数存在するが、ここではリアルタイム処理の分野で広く用いられているポリゴン単位の計算方法（以降、ポリゴンレンダリング）を取り上げる。ポリゴンレンダリングは、物体を構成する各ポリゴンに対し、図４に示したステップ４０２〜４０５の行程を施すことによって行われる。
【００８５】
すなわち、まず、絶対的空間、いわゆるワールド座標系に配置されたポリゴン４０１を、視点に相対な空間、いわゆるカメラ座標系に変換する（ステップ４０２）。このステップ４０２の変換を以後、ワールド／カメラ座標変換とよぶ。続いて、ポリゴンに陰影を付けるための照明計算（ステップ４０３）を行う。続いて、三次元座標から二次元座標への投影変換と画素座標へのマッピング（ステップ４０４）を行う。この時、ポリゴンの三次元座標には投影行列による変換が施され、視体積へのクリッピングと投影処理が行われる。また、ビューポート変換によって投影面上の座標が実際の描画画素座標へマッピングされる。最後に、ポリゴン像の塗りつぶし、すなわちラスタライズ処理（ステップ４０５）を施し、最終的にポリゴンのレンダリング画像４０６が得られる。これらの各工程の内容は広く知られたものであり、また、レンダリングエンジンによって実行されるものである。よって、本実施例の視点変更に関わる部分以外、詳細な説明は省略する。
【００８６】
前記ポリゴンレンダリングにおいて、ＣＧ画像の視点を変化させるためにはステップ４０２のワールド／カメラ座標変換の設定を変更すればよい。そして、ＣＧ画像の視点をユーザの視点変化に追従させるためには、ユーザ視点情報、すなわち位置センサのデータに応じてワールド／カメラ座標変換を変更しレンダリングすればよい。
【００８７】
以下、ワールド／カメラ座標変換の変更方法について説明する。
【００８８】
ＣＧの一般的な考え方では、レンダリング視点を決める要因を、実世界のメカニズムと対応させ、カメラという概念で表現する。ワールド座標系からカメラ座標系への座標変換は、ワールド座標系にカメラ（カメラ座標系）がどのように配置されているかという情報で表現できる。カメラの配置はカメラの位置と回転によって表現できる。よって、ワールド／カメラ座標変換は希望する視点に置かれたカメラの位置と回転情報から計算される。
【００８９】
（ワールド／カメラ座標変換の計算方法）
ワールド／カメラ座標変換は通常、同次座標を用いて表される。すなわち、ワールド座標系の任意の一点（ｘ，ｙ，ｚ，１）は、ワールド／カメラ座標変換Ｍによって、対応するカメラ座標系の一点（ｘ’，ｙ’，ｚ’，１）に変換され、（式１）のように表すことができる。（式１）の３×３部分行列、ｍ１１〜ｍ３３は回転成分を表しており、この部分をＲｗｃとする。また、（式１）のＴｘ、Ｔｙ、Ｔｚは並進成分を表している。
【００９０】
（式１）
2005025563.tif 000003
【００９１】
ワールド／カメラ座標変換の逆変換である、カメラ座標系からワールド座標系への変換、すなわちカメラ／ワールド座標変換も（式１）と同様な形式として、（式２）で表すことができる。ここで、（式２）のＲｃｗはワールド座標におけるカメラの回転を表しており、（Ｃｘ，Ｃｙ，Ｃｚ）はカメラの位置を表している。
【００９２】
（式２）
2005025563.tif 000004
【００９３】
カメラの位置と回転情報からワールド／カメラ座標変換を計算するには、一旦、カメラ／ワールド座標変換を求め、その逆変換を求めることによって行う。通常カメラの回転は、ワールド座標で表現される回転軸とその周りの回転角で表現される。今、回転軸を（Ｘａ，Ｙａ，Ｚａ）とし、回転角をθラジアンとすると、カメラ／ワールド座標変換行列の回転成分Ｒｃｗは、（式３）で計算される。
【００９４】
（式３）
2005025563.tif 000005
【００９５】
カメラの回転が複数の回転の合成である場合は、個々の回転に対応した（式３）の行列を全て掛け合わせればよい。本実施例で使用する位置センサの回転データは、空間固定のＸ軸、Ｙ軸、Ｚ軸に関する三つのオイラー角（θｘ，θｙ，θｚ）である。よって、各オイラー角から（式３）で回転行列を求め、それらを掛け合わせればよい。便宜の為、（θｘ，θｙ，θｚ）を入力とし回転行列Ｒｃｗを出力するこれらの計算過程をＦと表し、Ｒｃｗの計算を（式４）の形で略記する。
【００９６】
（式４）
Ｒｃｗ←Ｆ（θｘ，θｙ，θｚ）
（式３）のワールド／カメラ座標変換行列のＲｗｃは、Ｒｃｗの逆行列として求まるが、ここではＲｃｗが回転成分しか持たないので、単にＲｃｗの転置行列をＲｗｃとすればよい。すなわち、（式５）でＲｗｃが求まる。
【００９７】
（式５）
2005025563.tif 000006
【００９８】
さらに、Ｒｗｃが求まれば、ワールド座標におけるカメラの位置（Ｃｘ，Ｃｙ，Ｃｚ）から、（式１）のＴｘ、Ｔｙ、Ｔｚが（式６）によって求められる。ここで、カメラの位置（Ｃｘ，Ｃｙ，Ｃｚ）には位置センサからの位置データを割り当てる。
【００９９】
（式６）
2005025563.tif 000007
【０１００】
よって、ＲｃｗからＲｗｃ求まり、さらにＲｗｃと（Ｃｘ，Ｃｙ，Ｃｚ）から（Ｔｘ，Ｔｙ，Ｔｚ）が求まり、最終的に（式１）のＭ、すなわち、ワールド／カメラ座標変換行列が求まる。ただし、仮想現実感生成システムではユーザの視点位置の変化よりも視点方向の変化の方が重要であり、視点位置の変化、すなわち（Ｃｘ，Ｃｙ，Ｃｚ）の変化を仮想空間に反映させない場合も多い。その場合、（Ｃｘ，Ｃｙ，Ｃｚ）には適度な定数を使用すればよい。便宜の為、Ｒｗｃ、（Ｃｘ，Ｃｙ，Ｃｚ）を入力としＭを出力するこれらの計算過程をＧと表し、Ｍの計算を（式７）の形で略記する。
【０１０１】
（式７）
Ｍ←Ｇ（Ｒｃｗ，Ｃｘ，Ｃｙ，Ｃｚ）
結局、ワールド／カメラ座標変換を設定するための必要な計算は、位置センサの回転データをカメラの回転（θｘ，θｙ，θｚ）に割り当て、また位置センサの位置データをカメラの位置（Ｃｘ，Ｃｙ，Ｃｚ）に割り当て、（式４）と（式７）の計算を行うことである。これらの計算を図３のステップ３０８やステップ３１２において行い、求めたＭをレンダリングエンジンに設定し描画を実行する。ただし、図３のステップ３１２では視点追従は停止しているので視点変更に関わる計算は省略してよい。なお、位置データをＣＧのカメラ位置に使用する場合、ＣＧ空間を表す論理的な長さ単位に適合するよう、位置データに適度なスケール変換を施して使用する。
【０１０２】
以上説明したように、本実施例では、再開ボタンが押されると、ユーザの視点が、先に記憶した「一時停止ボタン」押下時の状態と等しいか、または近い状態になった時に初めて、動作モードを「実行中」に変え、視点追従動作を再開する。これによって、視点追従動作が実際に再開された場合、今まで停止していた仮想空間の視界が不連続に変化することなく、滑らかに視点追従が開始される。すなわち、視点追従を一時停止させた後で再開させる場合に、視界を滑らかに復帰させることが可能となり、仮想現実感生成システムを快適で効率的なものにすることができる。
【０１０３】
（実施例２）
実施例２である“仮想現実感生成システム”を図５〜図９を用いて説明する。
【０１０４】
（全体構成）
図５は本実施例の概念図である。
【０１０５】
コンピュータ１０３はＣＧ画像を生成し、その映像はＨＭＤ１０１に出力される。ユーザはＨＭＤ１０１を装着し、コンピュータ１０３から出力される映像を仮想空間として体験する。本実施例ではユーザの視点を検知する手法として磁気式位置センサ用いる。磁気式位置センサは製品（ポヒマス社製品など）が存在し、公知の機器であるため詳細な説明は省略する。磁気式位置センサは磁場を生成するトランスミッタ１０５、誘導電流を検出するレシーバ１０２、および制御用のコントローラ１０４から構成される。レシーバ１０２はユーザの頭部に装着され、トランスミッタ１０５はレシーバ１０２との相対位置を考慮して、適宜な位置に配置される。通常、レシーバ１０２はＨＭＤ１０１に取り付けＨＭＤ１０１と一体化する場合が多い。これによってＨＭＤ１０１の装着とレシーバ１０２の装着が同時に行われるため便利である。本実施例でもレシーバ１０２とＨＭＤ１０１を一体化させる。レシーバ１０２には、トランスミッタ１０５に対するレシーバ１０２の相対変位に応じた電流が発生し、位置センサコントローラ１０４ではこれを解析し、位置データを算出する。位置センサコントローラ１０４はコンピュータ１０３に接続され、位置データがコンピュータ１０３に送られる。位置センサコントローラ１０４とコンピュータ１０３間のデータ通信にはシリアル通信が用いられる。以後、頭部位置検出用磁気式位置センサを単に位置センサとよぶ。
【０１０６】
（コンピュータの構成）
図６は本実施例に使われるコンピュータの構成を示したものである。コンピュータ１０３の記憶装置２０４には、本実施例の仮想現実感を生成するためのプログラムが格納される。また、仮想空間を構成する三次元物体データ等もコンピュータ１０３の記憶装置２０４に格納される。この三次元物体データとは、頂点座標情報と、各頂点の連結によって定義されるポリゴンのデータである。記憶装置２０４に格納されたプログラムはコンピュータ１０３のＣＰＵ２０２によって実行され、画像メモリ２０５にＣＧ画像が生成される。ただし、最近のコンピュータでは、ＣＧ画像をＣＰＵによってのみ生成するのではなく、専用のハードウェアを併用して生成する場合が多い。２０６はそのようなＣＧ画像生成専用のハードウェアである。画像メモリ２０５に生成されたＣＧ画像は、コンピュータ１０３に接続されたＨＭＤ１０１に出力される。コンピュータ１０３には、周辺機器としてキーボード２０８やマウス２０９が接続され、コンピュータ１０３の操作に利用される。コンピュータ１０３のシリアル通信装置２０３には位置センサコントローラ１０４が接続され、位置センサからの位置データがコンピュータ１０３に取り込まれる。
【０１０７】
（処理手順の説明）
図７〜図９のフローチャートは本実施例の処理手順を表している。以下、図７，図８を用いて本実施例の処理手順を説明して行く。
【０１０８】
図７は本実施例の処理手順を表すメインのフローチャートである。
【０１０９】
処理全体にわたり使用する変数として、ＣＧ画像生成の稼働中と停止中を区別する「動作モード」変数を用意する。
【０１１０】
プログラムが開始されると、ステップ７０１の初期化処理を行い、ステップ７０２において終了要求が発生するまで、ステップ７０３からステップ７０９までの処理を繰り返す。ステップ７０２における終了要求とは、ユーザがキーボード２０８、またはマウス２０９を使ってプログラムの終了を要求することである。
【０１１１】
ステップ７０３からステップ７０９が繰り返されることによって、ユーザ視点に追従した仮想空間画像が生成され、ＨＭＤ１０１に出力される。ただし、「動作モード」が「停止中」の場合は、ステップ７０８とステップ７０９が実行されず、仮想空間の画像生成は停止する。
【０１１２】
ステップ７０１の初期化処理では、「動作モード」変数を「停止中」に設定しておく。
【０１１３】
ステップ７０３では、位置センサコントローラ１０４から送られてくる位置データを読み取る。位置センサコントローラ１０４から送られてくる位置データには、位置センサレシーバ１０２のトランスミッタ１０５に対する変位情報が記され、次の６成分のデータが順番に並んでいる。すなわち、レシーバ１０２のトランスミッタに対する並進成分のＸ座標、Ｙ座標、およびＺ座標、さらに、レシーバ１０２のトランスミッタに対する回転を表す第一回転角、第二回転角、および第三回転角である。ただし、三つの回転角は、Ｘ軸、Ｙ軸、およびＺ軸周りのオイラー角で表現される。
【０１１４】
ステップ７０３では、位置データがあった場合に限り、ステップ７０５の動作モード変更処理サブルーチンを実行する。
【０１１５】
図８はステップ７０５の動作モード変更処理サブルーチンを表すフローチャートである。図８を用いて動作モード変更処理サブルーチンの説明を行う。
【０１１６】
ステップ８０１では、ステップ７０３で取得した位置データを判別し、待機位置かどうかを調べる。この判別は次のように行われる。ユーザがシステムを使用している場合、ユーザはセンサ付きのＨＭＤ１０１を頭部に装着するため、位置センサのデータはユーザの頭部近辺を示す。また、ユーザがシステムを使用していない場合、ＨＭＤ１０１はユーザから外されて特定の場所、例えば机の上などに置かれている。よって、ＨＭＤ１０１がユーザに装着され使用される場所に対し、それとは明確に位置を区別できるＨＭＤ１０１待機位置を設け、ＨＭＤ未使用時はＨＭＤ１０１をＨＭＤ待機位置に置かせるようにする。これにより、位置センサが示す位置データが、ＨＭＤ待機位置に等しいか、もしくは近傍であるかどうかを調べることによって、システムが使用中か未使用かを判別できる。あるいは、ＨＭＤ１０１の位置情報だけでなく回転情報も利用し、ユーザ装着時の通常の使用では起こり得ない回転、例えば正面から上方に向けて９０度（真上）以上回転させた状態を待機配置とし、未使用時はその状態に配置させるようにしてもよい。
【０１１７】
ステップ８０１にてＨＭＤ１０１の配置が待機位置と判別された場合は、ステップ８０２に進み、そうでない場合はステップ８０５に進む。
【０１１８】
ステップ８０２では現在の「動作モード」が既に停止中であった場合は何もしない。「動作モード」が稼働中であった場合には、「動作モード」を「停止中」に設定する（ステップ８０３）。さらに、ＨＭＤ表示デバイスの劣化防止や電力節約のため、表示画面の輝度を低下させる（ステップ８０４）。このステップ８０４の処理として、表示画面全体に黒色を出力してもよいし、コンピュータ１０３からＨＭＤ１０１への出力を遮断するような機構を設け、ＨＭＤ１０１に映像が出力されないようにしてもよい。
【０１１９】
ステップ８０５では現在の「動作モード」が既に稼働中であった場合は何もしない。「動作モード」が停止中であった場合には、システムを稼働させるべく「動作モード」を「稼働中」に設定する（ステップ８０６）。
再び図７の説明に戻る。
【０１２０】
ステップ７０５のサブルーチンを終えるとステップ７０６に進む。
【０１２１】
ステップ７０６では現在の「動作モード」を調べ、「稼働中」であった場合はＣＧ画像生成を行うべくステップ７０７に進む。「停止中」であった場合は、ＣＧ画像生成を行う必要がないのでＣＧ画像生成に関わる処理を全て省略し、ステップ７０２に戻る。
【０１２２】
ステップ７０７以降は、ＣＧ画像生成に関わる処理である。リアルタイムにＣＧ画像を生成する場合、通常、レンダリングエンジンとよばれるＣＧ専用のハードウェア、またはソフトウェアを利用することが多い。本実施例でもそのようなレンダリングエンジンを使用する。ＣＧ画像生成の処理は、レンダリングエンジン（レンダリングプロセス）に対する描画動作設定の処理と、レンダリングエンジンによる描画実行によって行われる。ステップ７０８が動作設定の処理、ステップ７０９が描画実行の処理となる。
【０１２３】
ステップ７０８の動作設定処理は、ユーザ視点変化に応じて随時変更する必要があるが、視点変化が無い場合は不要である。よってステップ７０７にて、先に行われたステップ７０３の結果を判断し、新しい位置データが無かった場合は、ステップ７０８を省略してステップ７０９を実行する。
【０１２４】
ステップ７０８では、ステップ７０３で得た位置・回転データ、すなわちユーザ視点情報に基づきレンダリングエンジンの設定処理を行い、ステップ７０９ではレンダリングエンジンによる描画を実行する。ステップ７０９の処理が終わると次のＣＧ画像を生成すべく、ステップ７０２にもどりステップ７０３からステップ７０９までの一連の処理を繰り返す。
【０１２５】
最後に、ステップ７０８とステップ７０９にて行われるＣＧ画像生成処理の内容であるが、実施例１のステップ３０８，３０９のＣＧ画像生成処理と同様なので、その「（ＣＧ画像生成）、（ワールド／カメラ座標変換の計算方法）」の説明を援用し、ここでの説明を省略する。図１５は、本実施例における、ＣＧ計算により三次元物体データを二次元画像化、すなわちレンダリングする方法を示しているが、実施例１と同様なので同一符号を付し説明を省略する。
【０１２６】
以上説明したように、本実施例によれば、視線追従型の仮想現実感を生成する場合において、待機中の資源の節約を自動的に行う、効率的な仮想現実感システムが実現される。
【０１２７】
（実施例３）
実施例３である“仮想現実感生成システム”を図１０〜図１６を用いて説明する。
【０１２８】
最初に、本発明における空間操作、または視界操作の概略を述べておく。
【０１２９】
まず、コンピュータのＧＵＩ環境において二次元画像を表示する場合を考える。この場合、ユーザが表示画像の位置を操作する手法として、マウスによるドラッグ操作がよく用いられる。すなわち、マウスボタンを押下した状態でマウスを動かし、マウスの移動に連動させて画像表示位置を変える。本実施例が提供する空間操作、または視界操作の原理は、このようなマウスドラッグ操作に例えることができる。すなわち、本実施例ではマウスボタンに対応する入力デバイスを使い、ドラッグ中と非ドラッグ中の状態を区別する。そして、ドラッグ中の状態において、頭部運動に連動させ空間位置、または視界位置を移動させる。これによって、本実施例における空間位置、または視界位置の調整が行われる。
【０１３０】
前述のＧＵＩ環境におけるマウスドラッグとの類似性から、本実施例が提供する空間位置、または視界位置の調整操作を以降、視界ドラッグ操作とよぶことにする。
【０１３１】
（全体構成）
図１０は本実施例の概念図である。
【０１３２】
コンピュータ１０３はＣＧ画像を生成し、その映像はＨＭＤ１０１に出力される。ユーザはＨＭＤ１０１を装着し、コンピュータ１０３から出力される映像を仮想空間として体験する。この時ユーザは、必要に応じて手元に置かれたコントローラ１０６と頭部運動により視界ドラッグ操作を行う。本実施例ではユーザの視点を検知する手法として、頭部位置変化を磁気式位置センサによって検知する手法を用いる。磁気式位置センサは製品（ポヒマス社製品など）が存在し、公知の機器であるため詳細な説明は省略する。磁気式位置センサは磁場を生成するトランスミッタ１０５、誘導電流を検出するレシーバ１０２、および制御用のコントローラ１０４から構成される。レシーバ１０２はユーザの頭部に装着され、トランスミッタ１０５はレシーバ１０２との相対位置を考慮して、適度な位置に配置される。レシーバ１０２には、トランスミッタ１０５に対するレシーバ１０２の相対変位に応じた電流が発生し、コントローラ１０４ではこれを解析し、位置データを算出する。コントローラ１０４はコンピュータ１０３に接続され、位置データがコンピュータ１０３に送られる。コントローラ１０４とコンピュータ１０３間のデータ通信にはシリアル通信が用いられる。以後、頭部位置検出用磁気式位置センサを単に位置センサとよぶ。
【０１３３】
ユーザの視点変化の検出には磁気式位置センサに限らずとも、超音波センサや光センサを使ってもよい。
【０１３４】
（コンピュータの構成）
図１１は本実施例に使われるコンピュータの構成を示したものである。コンピュータ１０３の記憶装置２０３には、本実施例の仮想現実感を生成するためのプログラムが格納される。また、仮想空間を構成する三次元物体データ等もコンピュータ１０３の記憶装置２０４に格納される。この三次元物体データとは、頂点座標情報と、各頂点の連結によって定義されるポリゴン情報から構成されるデータである。記憶装置２０４に格納されたプログラムはコンピュータ１０３のＣＰＵ２０２によって実行され、画像メモリ２０５にＣＧ画像が生成される。ただし、最近のコンピュータでは、ＣＧ画像をＣＰＵによってのみ生成するのではなく、専用のハードウェアを併用して生成する場合が多い。２０６はそのようなＣＧ画像生成専用のハードウェアである。画像メモリ２０５に生成されたＣＧ画像は、コンピュータ１０３に接続されたＨＭＤ１０１に出力される。コンピュータ１０３にはコントローラ１０６が接続され、視界ドラッグ操作に使われる。コントローラ１０６にはＯＮ／ＯＦＦの二状態を区別する少なくとも一つのボタンが付いている。コンピュータ１０３には、周辺機器としてキーボード２０８やマウス２０９が接続され、コンピュータ１０３の操作に利用される。これらのキーボード２０８やマウス２０９をコントローラ１０６の変わりに使用してもよい。コンピュータ１０３のシリアル通信装置２０３には位置センサコントローラ１０４が接続され、位置センサからの位置データがコンピュータ１０３に取り込まれる。
【０１３５】
（処理手順の説明）
図１２〜図１４のフローチャートは本実施例の処理手順を表している。以下、図１２〜図１４を用いて本実施例の処理手順を説明して行く。
【０１３６】
図１２は本実施例の処理手順を表すメインのフローチャートである。
【０１３７】
処理全体にわたり使用する変数として、現在の操作が視界ドラッグ中かどうかを区別する「ドラッグ中」変数を用意する。また、ＣＧ計算に使う変数も必要となるが、それについては計算方法の説明の中で適宜説明する。
【０１３８】
プログラムが開始されると、ステップ１２０１の初期化処理を行い、ステップ１２０２において終了要求が発生するまで、ステップ１２０３から１２０７までの処理を繰り返す。ステップ１２０２における終了要求とは、ユーザがコントローラ１０６、またはキーボード２０８、またはマウス２０９を使ってプログラムの終了を要求することである。ステップ１２０３から１２０７までの処理が一フレーム分（一時刻分）のＣＧ画像生成の処理単位である。この処理単位が繰り返されることによって、ユーザ視点に応じてリアルタイムに変化する仮想空間の映像が生成される。
【０１３９】
ステップ１２０１の初期化処理では、「ドラッグ中」変数を「偽」に設定しておく。また、ＣＧ計算に必要な情報もここで初期化するが、個々の説明は以降、計算方法を説明して行く中で適宜行う。
【０１４０】
ステップ１２０３は、ドラッグ操作切り替え処理を行うサブルーチンである。このドラッグ操作切り替え処理ではコントローラ１０６のボタンの状態を調べ、それに応じて視界ドラッグを開始、または終了し、後続のＣＧ計算のための計算を行う。サブルーチン内部の説明はＣＧ画像の生成方法と関連するため、後述の（ＣＧ画像生成）の後に行う。
【０１４１】
ステップ１２０４では、位置センサコントローラ１０４から送られてくる位置データを読み取る。位置データが無い場合、ステップ１２０６をスキップし、ステップ１２０７に進んでＣＧ描画処理を行う。視点変化が無い場合（位置データが無い場合）にも、ステップ１２０７でＣＧ画像を再描画する理由は、例えば、物体をアニメーションさせるような場合、ＣＧ画像の変更要因が視点変化以外にも存在するからである。もし、視点変化以外にＣＧ画像の変更要因が無い場合は、ＣＧ画像描画処理もスキップしてよい。すなわち、ステップ１２０５から１２０２に戻ってよい。
【０１４２】
位置センサコントローラ１０４から送られてくる位置データには、位置センサレシーバ１０２のトランスミッタ１０５に対する変位情報が記され、次の６成分のデータが順番に並んでいる。すなわち、レシーバ１０２のトランスミッタ１０５に対する並進成分のＸ座標、Ｙ座標、およびＺ座標。さらに、レシーバ１０２のトランスミッタ１０５に対する回転を表す第一回転角、第二回転角、および第三回転角である。ただし、三つの回転角は、Ｘ軸、Ｙ軸、およびＺ軸周りのオイラー角で表現される。
【０１４３】
ステップ１２０６とステップ１２０７では、ＣＧ画像生成に関わる処理を行う。リアルタイムにＣＧ画像を生成する場合、通常、レンダリングエンジンとよばれるＣＧ専用のハードウェア、またはソフトウェアを利用することが多い。本実施例でもそのようなレンダリングエンジンを使用する。その場合、ＣＧ画像生成の処理は、レンダリングエンジン（レンダリングプロセス）に対する描画動作設定の処理と、レンダリングエンジンによる描画実行によって行われる。図１２のフローチャートではステップ１２０６のサブルーチンが動作設定の処理、ステップ１２０７が描画実行の処理となる。
【０１４４】
ステップ１２０６のサブルーチンでは、ステップ１２０４で得た位置・回転データ、すなわちユーザ視点情報に基づきレンダリングエンジンの設定処理を行う。このサブルーチンの内部の説明はＣＧ画像の生成方法と関連するので、後述の（ＣＧ画像生成）の後で行う。ステップ１２０７ではレンダリングエンジンによる描画を実行する。ステップ１２０７の処理が終わると次のＣＧ画像を生成すべく、ステップ１２０２にもどりステップ１２０３から１２０７までの一連の処理を繰り返す。
【０１４５】
以上が、本実施例のフローチャートの説明である。次に保留にしたステップ１２０３と１２０６のサブルーチンの詳細を説明すべく、ＣＧ画像生成に関する説明を行う。
【０１４６】
（ＣＧ画像生成）
まず、ＣＧ画像生成における描画方法と視点設定の方法について説明する。
【０１４７】
図１５は、ＣＧ計算により三次元物体データを二次元画像化、すなわちレンダリングする方法を示している。ＣＧ計算のアルゴリズムは複数存在するが、ここではリアルタイム処理の分野で広く用いられているポリゴン単位の計算方法（以降、ポリゴンレンダリング）を取り上げる。ポリゴンレンダリングは、物体を構成する各ポリゴンに対し、図１５に示したステップ４０２〜４０５の行程を施すことによって行われる。
【０１４８】
すなわち、まず、絶対的空間、いわゆるワールド座標系に配置されたポリゴン４０１を、視点に相対な空間、いわゆるカメラ座標系に変換する（ステップ４０２）。このステップ４０２の変換を以後、ワールド／カメラ座標変換とよぶ。続いて、ポリゴンに陰影を付けるための照明計算（ステップ４０３）を行う。続いて、三次元座標から二次元座標への投影変換と画素座標へのマッピング（ステップ４０４）を行う。この時、ポリゴンの三次元座標には投影行列による変換が施され、視体積へのクリッピングと投影処理が行われる。また、ビューポート変換によって投影面上の座標が実際の描画画素座標へマッピングされる。最後に、ポリゴン像の塗りつぶし、すなわちラスタライズ処理（ステップ４０５）を施し、最終的にポリゴンのレンダリング画像４０６が得られる。これらの各工程の内容は広く知られたものであり、また、レンダリングエンジンによって実行されるものである。よって、本実施例の視点変更に関わる部分以外、詳細な説明は省略する。
【０１４９】
前記ポリゴンレンダリングにおいて、ＣＧ画像の視点を変化させるためには４０２のワールド／カメラ座標変換の設定を変更すればよい。さらに、ユーザの視点変化に追従してＣＧ画像の視点を変化させるためには、ユーザ視点情報、すなわち位置センサのデータに応じてワールド／カメラ座標変換を変更し、レンダリングすればよい。そこで、まずワールド／カメラ座標変換の変更方法について説明する。
【０１５０】
ＣＧの一般的な考え方では、レンダリング視点を決める要因を、実世界のメカニズムと対応させ、カメラという概念で表現する。ワールド座標系からカメラ座標系への座標変換は、ワールド座標系にカメラ（カメラ座標系）がどのように配置されているかという情報で表現できる。カメラの配置はカメラの位置と回転によって表現できる。よって、ワールド／カメラ座標変換は希望する視点に置かれたカメラの位置と回転情報から計算される。
【０１５１】
（ワールド／カメラ座標変換の計算方法）
ワールド／カメラ座標変換は通常、同次座標を用いて表される。すなわち、ワールド座標系の任意の一点（ｘ，ｙ，ｚ，１）は、ワールド／カメラ座標変換Ｍによって、対応するカメラ座標系の一点（ｘ’，ｙ’，ｚ’，１）に変換され、（式１）のように表すことができる。（式１）の３×３部分行列、ｍ１１〜ｍ３３は回転成分を表しており、この部分をＲｗｃとする。また、（式１）のＴｘ、Ｔｙ、Ｔｚは並進成分を表している。
【０１５２】
（式１）
2005025563.tif 000008
【０１５３】
ワールド／カメラ座標変換の逆変換である、カメラ座標系からワールド座標系への変換、すなわちカメラ／ワールド座標変換も（式１）と同様な形式として、（式２）で表すことができる。ここで、（式２）のＲｃｗはワールド座標におけるカメラの回転を表しており、（Ｃｘ，Ｃｙ，Ｃｚ）はカメラの位置を表している。
【０１５４】
（式２）
2005025563.tif 000009
【０１５５】
カメラの位置と回転情報からワールド／カメラ座標変換を計算するには、一旦、カメラ／ワールド座標変換を求め、その逆変換を求めることによって行う。通常カメラの回転は、ワールド座標で表現される回転軸とその周りの回転角で表現される。今、回転軸を（Ｘａ，Ｙａ，Ｚａ）とし、回転角をθラジアンとすると、カメラ／ワールド座標変換行列の回転成分Ｒｃｗは、（式３）で計算される。
【０１５６】
（式３）
2005025563.tif 000010
【０１５７】
カメラの回転が複数の回転の合成である場合は、個々の回転に対応した（式３）の行列を全て掛け合わせればよい。本発明で使用する位置センサの回転データは、空間固定のＸ軸、Ｙ軸、Ｚ軸に関する三つのオイラー角（θｘ，θｙ，θｚ）である。よって、各オイラー角から（式３）で回転行列を求め、それらを掛け合わせればよい。便宜の為、（θｘ，θｙ，θｚ）を入力とし回転行列Ｒｃｗを出力するこれらの計算過程をＦと表し、Ｒｃｗの計算を（式４）の形で略記する。
【０１５８】
（式４）
Ｒｃｗ←Ｆ（θｘ，θｙ，θｚ）
（式３）のワールド／カメラ座標変換行列のＲｗｃは、Ｒｃｗの逆行列として求まるが、ここではＲｃｗが回転成分しか持たないので、単にＲｃｗの転置行列をＲｗｃとすればよい。すなわち、（式５）でＲｗｃが求まる。
【０１５９】
（式５）
2005025563.tif 000011
【０１６０】
さらに、Ｒｗｃが求まれば、ワールド座標におけるカメラの位置（Ｃｘ，Ｃｙ，Ｃｚ）から、（式１）のＴｘ、Ｔｙ、Ｔｚが（式６）によって求められる。ここで、カメラの位置（Ｃｘ，Ｃｙ，Ｃｚ）には位置センサからの位置データを割り当てる。
【０１６１】
（式６）
2005025563.tif 000012
【０１６２】
よって、ＲｃｗからＲｗｃ求まり、さらにＲｗｃと（Ｃｘ，Ｃｙ，Ｃｚ）から（Ｔｘ，Ｔｙ，Ｔｚ）が求まり、最終的に（式１）のＭ、すなわち、ワールド／カメラ座標変換行列が求まる。ただし、仮想現実システムではユーザの視点位置の変化よりも視点方向の変化の方が重要であり、視点位置の変化、すなわち（Ｃｘ，Ｃｙ，Ｃｚ）の変化を仮想空間に反映させない場合も多い。その場合、（Ｃｘ，Ｃｙ，Ｃｚ）には適度な定数を使用すればよい。便宜の為、Ｒｗｃ、（Ｃｘ，Ｃｙ，Ｃｚ）を入力としＭを出力するこれらの計算過程をＧと表し、Ｍの計算を（式７）の形で略記する。
【０１６３】
（式７）
Ｍ←Ｇ（Ｒｃｗ，Ｃｘ，Ｃｙ，Ｃｚ）
結局、位置センサの回転データをカメラの回転（θｘ，θｙ，θｚ）に割り当て、また位置センサの位置データをカメラの位置（Ｃｘ，Ｃｙ，Ｃｚ）に割り当て、（式４）と（式７）の計算を行うことによってＭが求まる。そして、このＭをレンダリングエンジンに設定し描画を行うことによって、ＣＧ画像の視点が変更される。なお、位置データをＣＧのカメラ位置に使用する場合、ＣＧ空間を表す論理的な長さ単位に適合するよう、位置データに適度なスケール変換を施して使用する。
【０１６４】
（視界ドラッグを考慮したＣＧ計算）
以上が、ユーザの視点変化に追従させＣＧ画像の視点を変化させるための基本計算である。本実施例の視界ドラッグを実現するためには、前述の計算過程を次のように変更する。すなわち、（式４）の後にＲｃｗを補正する計算を入れ、全体として次の（式８）の計算を行う。
【０１６５】
（式８）
ステップ１：Ｒｃｗ←Ｆ（θｘ，θｙ，θｚ）
ステップ２：Ｒｃｗ←Ｒｃｗ×Ｒａ
ステップ３：Ｍ←Ｇ（Ｒｃｗ，Ｃｘ，Ｃｙ，Ｃｚ）
（式８）のステップ２はＣＧ画像に反映される視点変化に、実際のユーザ頭部回転量より余分の回転を加え、視界を補正することを意味している。（式８）のステップ２に使われるＲａの計算方法を説明する。まず、視界ドラッグの目的とする動作は次のようになる。
【０１６６】
（視界ドラッグ動作１）
視界ドラッグ開始時、現在の視界を固定する。
【０１６７】
（視界ドラッグ動作２）
視界ドラッグ中は、ユーザ視点の変化に関わらず、（視界ドラッグ動作１）にて固定された視界を維持する。
【０１６８】
（視界ドラッグ動作３）
ドラッグ終了時、（視界ドラッグ動作１）にて固定された視界を最初の視界とし、以後、その視界を基準にユーザ視点への追従を再開する。
【０１６９】
前記視界ドラッグ動作１〜３を実現するための計算を、図１６を使って考える。今、ユーザの視点として、正面以外の異なる二つの方向を考え、その視点のオイラー角をそれぞれ、Φ１＝（φｘ１，φｙ１，φｚ１）、Φ２＝（φｘ２，φｙ２，φｚ２）とする。さらに、Φ１に対し、（式８）のステップ１、２から計算される回転行列ＲｃｗをＲ１とする。また、Φ２に対し（式８）のステップ１から計算される回転行列ＲｃｗをＲ２とする。ただし、初期状態では（式８）のステップ２のＲａは恒等変換とする。今、ユーザはΦ１の位置に見える物体に着目し、Φ１の状態から視界ドラッグを開始してΦ２の状態で終了したとする。この時、視界ドラッグ中はΦ１の視界を維持する必要があるため、視界ドラッグ開始時、（式８）の計算にて一度Ｍを求めて記憶し、以後ドラッグが継続される間は（式８）の計算を行わず、Ｍを更新しない。一方、視界ドラッグ終了後は、（式８）の計算を再開し、ユーザ視点に追従した視界の変化を開始させる。ただし、視界ドラッグ終了直後、ユーザ視点はΦ２の状態であり、かつ、Φ１の視界をドラッグしてきたためにユーザにはΦ１の視界が提供されなければならない。すなわち、視界ドラッグ終了直後に（式８）の計算を実行した場合、得られる結果は、Φ１の視界が提供されるようなものでなければならない。そのためには、（式８）のステップ２のＲａは次の関係
Ｒ１＝Ｒ２×Ｒａ
を満たさなければならない。何故ならこれによって（式８）が、Φ２（Ｒ２）の入力によってΦ１（Ｒ１）の視界を出力するようになるからである。よって、Ｒａは、前記で定義したドラッグ開始時と終了時の回転行列Ｒ１とＲ２から次のように求められる。ただし、ここでＲ２−１はＲ２の逆行列を表す。
【０１７０】
（式９）
Ｒａ＝Ｒ２−１×Ｒ１
ここで少し補足説明を加える。ドラッグ終了後から開始される視点追従では、以前の視界ドラッグの影響をオフセットとして常に加算しなければならない。よって、ドラッグ終了時（式９）にてＲａを求めた後、その値を以後の（式８）の計算で使い続ける。また、新たなドラッグが開始された場合、そのドラッグの終了時に必要になるＲ１の値は、（式８）のステップ１のみから計算されるのではなく、（式８）ステップ１、２から計算されることに注意する。何故なら、視界ドラッグが繰り返されるたびに、補正回転Ｒａが累積される必要があるからである。逆にＲ２は補正する対象そのものなので、計算は単に（式８）のステップ１で求めてよい。
【０１７１】
以上、ユーザ視点に追従するＣＧ画像の計算方法、および視界ドラッグの為の補正計算の方法を説明した。
【０１７２】
図１２のメインのフローチャートに戻り、保留にしたステップ１２０３とステップ１２０６のサブルーチンの説明を行う。
【０１７３】
図１３はステップ１２０３のドラッグ操作切り替え処理サブルーチンを表すフローチャートである。図１３を用いてドラッグ操作切り替え処理の詳細説明を行う。
【０１７４】
まず、ステップ１３０１にてコントローラ１０６のドラッグボタンの状態を調べる。ドラッグボタンがＯＮの場合はステップ１３０２に進み、ＯＦＦの場合はステップ１３０５に進む。
【０１７５】
ステップ１３０２に進むと、「ドラッグ中」変数が「偽」である場合（現在、ドラッグ中でない場合）、ステップ１３０３とステップ１３０４を実行し、「ドラッグ中」変数が「真」である場合は何もしない。
【０１７６】
ステップ１３０３と１３０４はドラッグ開始時の処理である。ステップ１３０３では「ドラッグ中」変数に「真」を設定し、視界ドラッグを開始したことを記録する。ステップ１３０４では（式８）の計算を一旦実行し、その結果得られたＲｃｗとＭをそれぞれＲ１、Ｍｄとして記憶する。このＲ１とＭｄは、ドラッグ中、およびドラッグ終了時に利用される。（式８）のＲａは初期化処理（図１２のステップ１２０１）にて単位行列に設定しておく。
【０１７７】
一方、ステップ１３０５に進むと、「ドラッグ中」変数が「真」である場合（現在、ドラッグ中である場合）、ステップ１３０６と１３０７を実行し、「ドラッグ中」変数が「偽」である場合は何もしない。
【０１７８】
ステップ１３０６と１３０７はドラッグ終了時の処理である。ステップ１３０６では「ドラッグ中」変数に「偽」を設定し、視界ドラッグを終了したことを記録する。ステップ１３０７では（式９）の計算を実行し、視界補正用の回転行列Ｒａを再計算する。
【０１７９】
図１４は図１２のステップ１２０６のレンダリング設定処理サブルーチンを表すフローチャートである。図１４を用いてレンダリング設定処理サブルーチンの説明を行う。
【０１８０】
ステップ１４０１にて、変数「ドラッグ中」を調べ、値が「偽」である場合、すなわちドラッグ中でない場合、ステップ１４０２に進み（式８）の計算を行い、Ｍを求めレンダリングエンジンに設定する。変数「ドラッグ中」が「真」である場合、すなわちドラッグ中である場合はステップ１４０３に進み、視界を維持すべく、図１３のステップ１３０４にて記憶されたＭｄをＭとし、レンダリングエンジンに設定する。ステップ１４０３の場合、不変なＭｄをレンダリングエンジンに毎回設定する処理は冗長である。しかし、座標変換の異なるレンダリングを本サブルーチンの後に実行するような場合は、ステップ１４０３を毎回実行する必要がある。本実施例では、そのような場合を想定してステップ１４０３を毎回実行する。
【０１８１】
以上により、本実施例が実現される。
【０１８２】
以上説明したように、本実施例によれば、視線追従型の仮想現実感を生成する場合において、ユーザの視界位置を容易に調整でき、その結果として自然な状態での着目対象の観察が可能となり、快適な仮想現実感が実現される。
【０１８３】
（実施例４）
前記実施例３は、視界ドラッグをユーザの頭部回転によってのみ行うものであった。これは、多くの仮想現実感生成システムがユーザの体験位置を変えず（例えば着席したまま）、視点方向の変化によってのみ仮想空間を体験させる、という点を考慮したものである。
【０１８４】
しかし、仮想現実感生成システムの中にはユーザを広い体験スペースの中に置き、ユーザの体験スペース内での移動を許すものも存在する。その場合、ユーザの視点変化として、視点方向（（式４）の（θｘ，θｙ，θｚ））だけでなく視点位置（（式７）の（Ｃｘ，Ｃｙ，Ｃ））の変化も利用し、視点方向と視点位置両方に追従した仮想空間を提供する場合がある。そのような場合は、視点位置の移動を使った視界ドラッグができると便利である。よって、ユーザの視点方向と視点位置両方を使った視界ドラッグの実施例を、実施例４の”仮想現実感生成システム“として説明する。
【０１８５】
本実施例では実施例３に比べＣＧ計算の部分がより一般化される。本実施例と、実施例３の違いは、図１３のステップ１３０４、ステップ１３０７、および図１４のステップ１４０２の計算が変更されることである。
【０１８６】
（変更点１）
まず、図１３のステップ１３０４の変更点を説明する。
【０１８７】
実施例３のステップ１３０４では（式８）の計算を実行し、その時のＲｃｗとＭを、それぞれＲ１とＭｄとして記憶するものであった。本実施例では、（式８）の計算を次の（式１０）のように変更し、その結果得られるＭをＭｄとして記憶する（図１３のステップ１３０４のＲ１の記憶はもはや不要となる）。
【０１８８】
（式１０）
ステップ１：Ｒｃｗ←Ｆ（θｘ，θｙ，θｚ）
ステップ２：Ｍ←Ｇ（Ｒｃｗ，Ｃｘ，Ｃｙ，Ｃｚ）
ステップ３：Ｍ←Ｍ×Ｍａ
（式１０）のステップ３のＭａにより回転の補正だけでなく、位置を含めた補正を行う。Ｍａは初期化処理（図１２のステップ１２０１）にて４×４単位行列に設定され、ドラッグ終了時に修正される。
【０１８９】
（変更点２）
図１３のステップ１３０７の変更点を説明する。
【０１９０】
本実施例では、図１３のステップ１３０７の位置において次の計算を行う。
ドラッグ終了時の視点方向、視点位置から一旦（式１０）のステップ１、２の計算を行い、Ｍを求めＭ２とする。続いて、前記（変更点１）で記憶したＭｄと今求めたＭ２を使って、次の（式１１）によりＭａを求める。
【０１９１】
（式１１）
Ｍａ＝Ｍ２−１×Ｍｄ
（変更点３）
図１４のステップ１４０２の計算は（式１０）に置き換えられる。
【０１９２】
（実施例５）
実施例５である“仮想現実感生成システム”について図１７〜図２１を用いて説明する。
【０１９３】
（全体構成）
図１７は本実施例の概念図である。
【０１９４】
コンピュータ１０３はＣＧ画像を生成し、その映像はＨＭＤ１０１に出力される。ユーザはＨＭＤ１０１を装着し、コンピュータ１０３から出力される映像を仮想空間として体験する。本実施例ではユーザの視点を検知する手法として磁気式位置センサ用いる。磁気式位置センサは製品（ポヒマス社製品など）が存在し、公知の機器であるため詳細な説明は省略する。磁気式位置センサは磁場を生成するトランスミッタ１０５、誘導電流を検出するレシーバ１０２、および制御用の位置センサコントローラ１０４から構成される。レシーバ１０２はユーザの頭部に装着され、トランスミッタ１０５はレシーバ１０２との相対位置を考慮して、適宜な位置に配置される。通常、レシーバ１０２はＨＭＤ１０１に取り付けＨＭＤ１０１と一体化する場合が多い。これによってＨＭＤ１０１の装着とレシーバ１０２の装着が同時に行われるため便利である。本実施例でもレシーバ１０２とＨＭＤ１０１を一体化させる。レシーバ１０２には、トランスミッタ１０５に対するレシーバ１０２の相対変位に応じた電流が発生し、位置センサコントローラ１０４ではこれを解析し、位置データを算出する。位置センサコントローラ１０４はコンピュータ１０３に接続され、位置データがコンピュータ１０３に送られる。位置センサコントローラ１０４とコンピュータ１０３間のデータ通信にはシリアル通信が用いられる。以後、頭部位置検出用磁気式位置センサを単に位置センサとよぶ。また、位置センサのデータは位置情報と回転情報の両方を含むが、単に位置データとよぶことにする。
【０１９５】
（コンピュータの構成）
図１８は本実施例に使われるコンピュータの構成を示したものである。コンピュータ１０３の記憶装置２０４には、本実施例の仮想現実感を生成するためのプログラムが格納される。また、仮想空間を構成する三次元物体データ等もコンピュータの記憶装置２０４に格納される。この三次元物体データとは、頂点座標情報と、各頂点の連結によって定義されるポリゴンのデータである。記憶装置２０４に格納されたプログラムはコンピュータ１０３のＣＰＵ２０２によって実行され、画像メモリ２０５にＣＧ画像が生成される。ただし、最近のコンピュータでは、ＣＧ画像をＣＰＵによってのみ生成するのではなく、専用のハードウェアを併用して生成する場合が多い。２０６はそのようなＣＧ画像生成専用のハードウェアである。画像メモリ２０５に生成されたＣＧ画像は、コンピュータ１０３に接続されたＨＭＤ２１０に出力される。コンピュータ１０３には、周辺機器としてキーボード２０８やマウス２０９が接続され、コンピュータ１０３の操作に利用される。コンピュータ１０３のシリアル通信装置２０３には位置センサコントローラ１０４が接続され、位置センサからの位置データがコンピュータ１０３に取り込まれる。
【０１９６】
（データの説明）
本実施例に必要な三次元データの説明を行う。まず、仮想現実体験の本来の目的となる空間の三次元データを用意する。例えば、体験の目的が乗り物シミュレーションのようなものである場合は、ユーザが乗る乗り物の三次元モデルや、乗り物によって徘徊する空間の三次元モデルである。この空間を以後、「目的仮想空間」、そのデータを「目的仮想空間データ」とよぶことにする。三次元モデルはポリゴンから構成させるポリゴンモデルであるが、これについては現在広く知られるようになったので説明は省略する。
【０１９７】
目的仮想空間に加え、体験システムが配置される空間を模擬した三次元モデルを用意する。図２１に示すように、実際の体験システムの様子が図２１のＡのようなものであった場合、この空間の三次元モデルとなる図２１のＢを用意する。この空間を以後、「システム模擬空間」、そのデータを「システム模擬空間データ」とよぶことにする。
【０１９８】
（処理手順の説明）
図１９のフローチャートは本実施例の処理手順を表している。以下、図１９を用いて本実施例の処理手順を説明して行く。
【０１９９】
最初に、処理手順の概略を述べておく。
【０２００】
処理全体の動作は二つの動作モードに分かれる。一つは「通常」モードであり、「目的仮想空間」を表示する通常のモードである。もう一つは「遷移中」モードである。
【０２０１】
「遷移中」モードでは、「目的仮想空間」と「システム模擬空間」を混合して表示する。「遷移中」モードでは、最初に「システム模擬空間」のみを表示し、以後、徐々に「システム模擬空間」画像の強度を弱めつつ、同時に「目的仮想空間」画像の強度を高めながら混合していき、最終的に「目的仮想空間」のみが表示されるようにする。どちらのモードにおいてもユーザの視点変化を検出し、ユーザの視点変化に追従させてＣＧ画像の視点設定を変化させる。体験開始時は、システムの動作は「遷移中」モードから始まる。このため、ユーザは今まで見ていた実際の体験空間と近い映像を最初に見ることになり、体験開始時の違和感が少ない。そして、その後、仮想空間の映像は「システム模擬空間」から「目的仮想空間」に徐々に変化し、目的の仮想空間体験を滑らかに始めることができる。
【０２０２】
以下、図１９の各処理を説明する。
【０２０３】
処理に必要な変数として、前述の動作モードに対応した変数「動作モード」を用意する。また、「遷移中」モードで使用するカウンタ変数「遷移カウント」を用意し、「遷移カウント」に対する適度な最大値「遷移カウント最大値」を決めておく。
【０２０４】
プログラムが開始されると、ステップ１９０１の初期化処理を行い、ステップ１９０２において終了要求が発生するまで、ステップ１９０２以下の処理を繰り返す。
【０２０５】
ステップ１９０１の初期化処理では、「動作モード」変数を「遷移中」に設定しておく。また「遷移カウント」をゼロに設定する。
【０２０６】
ステップ１９０２における終了要求とは、ユーザがキーボード２０８、またはマウス２０９を使ってプログラムの終了を要求することである。
【０２０７】
ステップ１９０３において「動作モード」が「遷移中」の場合は、ステップ１９０４に進む。
【０２０８】
ステップ１９０４では「遷移カウント」を１増加させ、ステップ１９０５においてその値を判別する。
【０２０９】
ステップ１９０５において「遷移カウント」が定められた最大値に達した場合、ステップ１９０７に進み、「動作モード」を「通常」に変えステップ１９０２に戻る。
【０２１０】
ステップ１９０５において「遷移カウント」が定められた最大値に達していない場合と、ステップ１９０３において「動作モード」が「通常」の場合はステップ１９０８に進む。
【０２１１】
ステップ１９０８では、位置センサコントローラ１０４から送られてくる位置データを読み取る。位置センサコントローラ１０４から送られてくる位置データには、位置センサレシーバ１０２のトランスミッタ１０５に対する変位情報が記され、次の６成分のデータが順番に並んでいる。すなわち、レシーバ１０２のトランスミッタ１０５に対する並進成分のＸ座標、Ｙ座標、およびＺ座標、さらに、レシーバ１０２のトランスミッタ１０５に対する回転を表す第一回転角、第二回転角、および第三回転角である。ただし、三つの回転角は、Ｘ軸、Ｙ軸、およびＺ軸周りのオイラー角で表現される。
【０２１２】
ステップ１９０９では、センサから得た位置データに基づき、ユーザの視点に追従するようＣＧ描画視点の設定を行う。描画視点設定方法の詳細は後述の「ＣＧ画像生成」にて、描画方法とまとめて行う。
【０２１３】
ステップ１９１０では、三次元空間データの描画を実行し、生成された仮想空間画像をＨＭＤ１０１に出力する。三次元空間データの描画は「動作モード」に応じて次のように行う。
【０２１４】
まず、「動作モード」が「通常」の場合は、単に「目的仮想空間」の三次元データのみを描画する。
【０２１５】
「動作モード」が「遷移中」の場合は、次のように行う。
【０２１６】
まず、「遷移カウント」の値を「遷移カウント最大値」で割り算し、その値を「α」とする。また、「１−α」の値を「β」とする。ここで遷移カウントの増加に伴いαは「０→１」と変化し、βは「１→０」と変化する。次に「目的仮想空間」の三次元データを透過率βで描画し、続けて「システム模擬空間」の三次元データを透過率αで描画しそれぞれが半透明合成されるようにする。ただし、ここでいう透過率は、値「０」では対象物体が完全に見え、背後の物体を全く透過させない状態を意味し、逆に値「１」が背後の物体を完全に透過させ、対象物体自体は見えなくなる状態を意味している。
【０２１７】
以上の方法では、体験開始時と同時に、「システム模擬空間」から「目的仮想空間」への遷移が始まる。これを、しばらくの間「システム模擬空間」のみが表示されるようにするには次のようにすればよい。まず、「遷移カウント最大値」より小さい適度な値、「初期カウント値」を設ける。そして、動作モード」が「遷移中」の場合において、「遷移カウント」が「初期カウント値」以下である場合は、「システム模擬空間」の描画のみを行い、「遷移カウント」が「初期カウント値」より大きければ、上記αの計算を以下に変更して「目的仮想空間」と「システム模擬空間」の描画を行えばよい。
【０２１８】
α＝（遷移カウント−初期カウント値）÷（遷移カウント最大値−初期カウント値）
最後にＣＧ画像生成に関わる部分を説明する。
【０２１９】
（ＣＧ画像生成）
ＣＧ画像生成における描画方法と視点設定の方法について説明する。
【０２２０】
図２０は、ＣＧ計算により三次元物体データを二次元画像化、すなわちレンダリングする方法を示している。ＣＧ計算のアルゴリズムは複数存在するが、ここではリアルタイム処理の分野で広く用いられているポリゴン単位の計算方法（以降、ポリゴンレンダリング）を取り上げる。ポリゴンレンダリングは、物体を構成する各ポリゴンに対し、図２０に示したステップ４０２〜４０５の行程を施すことによって行われる。
【０２２１】
すなわち、まず、絶対的空間、いわゆるワールド座標系に配置されたポリゴン４０１を、視点に相対な空間、いわゆるカメラ座標系に変換する（ステップ４０２）。このステップ４０２の変換を以後、ワールド／カメラ座標変換とよぶ。続いて、ポリゴンに陰影を付けるための照明計算（ステップ４０３）を行う。続いて、三次元座標から二次元座標への投影変換と画素座標へのマッピング（ステップ４０４）を行う。この時、ポリゴンの三次元座標には投影行列による変換が施され、視体積へのクリッピングと投影処理が行われる。また、ビューポート変換によって投影面上の座標が実際の描画画素座標へマッピングされる。最後に、ポリゴン像の塗りつぶし、すなわちラスタライズ処理（ステップ４０５）を施し、最終的にポリゴンのレンダリング画像４０６が得られる。これらの各工程の内容は広く知られたものであり、また、レンダリングエンジンによって実行されるものである。よって、本発明の視点変更に関わる部分以外、詳細な説明は省略する。
【０２２２】
前記ポリゴンレンダリングにおいて、ＣＧ画像の視点を変化させるためにはステップ４０２のワールド／カメラ座標変換の設定を変更すればよい。そして、ＣＧ画像の視点をユーザの視点変化に追従させるためには、ユーザ視点情報、すなわち位置センサのデータに応じてワールド／カメラ座標変換を変更しレンダリングすればよい。
【０２２３】
以下、ワールド／カメラ座標変換の変更方法について説明する。
【０２２４】
ＣＧの一般的な考え方では、レンダリング視点を決める要因を、実世界のメカニズムと対応させ、カメラという概念で表現する。ワールド座標系からカメラ座標系への座標変換は、ワールド座標系にカメラ（カメラ座標系）がどのように配置されているかという情報で表現できる。カメラの配置はカメラの位置と回転によって表現できる。よって、ワールド／カメラ座標変換は希望する視点に置かれたカメラの位置と回転情報から計算される。
【０２２５】
（ワールド／カメラ座標変換の計算方法）
ワールド／カメラ座標変換は通常、同次座標を用いて表される。すなわち、ワールド座標系の任意の一点（ｘ，ｙ，ｚ，１）は、ワールド／カメラ座標変換Ｍによって、対応するカメラ座標系の一点（ｘ’，ｙ’，ｚ’，１）に変換され、（式１）のように表すことができる。（式１）の３×３部分行列、ｍ１１〜ｍ３３は回転成分を表しており、この部分をＲｗｃとする。また、（式１）のＴｘ、Ｔｙ、Ｔｚは並進成分を表している。
【０２２６】
（式１）
2005025563.tif 000013
【０２２７】
ワールド／カメラ座標変換の逆変換である、カメラ座標系からワールド座標系への変換、すなわちカメラ／ワールド座標変換も（式１）と同様な形式として、（式２）で表すことができる。ここで、（式２）のＲｃｗはワールド座標におけるカメラの回転を表しており、（Ｃｘ，Ｃｙ，Ｃｚ）はカメラの位置を表している。
【０２２８】
（式２）
2005025563.tif 000014
【０２２９】
カメラの位置と回転情報からワールド／カメラ座標変換を計算するには、一旦、カメラ／ワールド座標変換を求め、その逆変換を求めることによって行う。通常カメラの回転は、ワールド座標で表現される回転軸とその周りの回転角で表現される。今、回転軸を（Ｘａ，Ｙａ，Ｚａ）とし、回転角をθラジアンとすると、カメラ／ワールド座標変換行列の回転成分Ｒｃｗは、（式３）で計算される。
【０２３０】
（式３）
2005025563.tif 000015
【０２３１】
カメラの回転が複数の回転の合成である場合は、個々の回転に対応した（式３）の行列を全て掛け合わせればよい。本発明で使用する位置センサの回転データは、空間固定のＸ軸、Ｙ軸、Ｚ軸に関する三つのオイラー角（θｘ，θｙ，θｚ）である。よって、各オイラー角から（式３）で回転行列を求め、それらを掛け合わせればよい。便宜の為、（θｘ，θｙ，θｚ）を入力とし回転行列Ｒｃｗを出力するこれらの計算過程をＦと表し、Ｒｃｗの計算を（式４）の形で略記する。
【０２３２】
（式４）
Ｒｃｗ←Ｆ（θｘ，θｙ，θｚ）
（式３）のワールド／カメラ座標変換行列のＲｗｃは、Ｒｃｗの逆行列として求まるが、ここではＲｃｗが回転成分しか持たないので、単にＲｃｗの転置行列をＲｗｃとすればよい。すなわち、（式５）でＲｗｃが求まる。
【０２３３】
（式５）
2005025563.tif 000016
【０２３４】
さらに、Ｒｗｃが求まれば、ワールド座標におけるカメラの位置（Ｃｘ，Ｃｙ，Ｃｚ）から、（式１）のＴｘ、Ｔｙ、Ｔｚが（式６）によって求められる。ここで、カメラの位置（Ｃｘ，Ｃｙ，Ｃｚ）には位置センサからの位置データを割り当てる。
【０２３５】
（式６）
2005025563.tif 000017
【０２３６】
よって、ＲｃｗからＲｗｃ求まり、さらにＲｗｃと（Ｃｘ，Ｃｙ，Ｃｚ）から（Ｔｘ，Ｔｙ，Ｔｚ）が求まり、最終的に（式１）のＭ、すなわち、ワールド／カメラ座標変換行列が求まる。ただし、仮想現実システムではユーザの視点位置の変化よりも視点方向の変化の方が重要であり、視点位置の変化、すなわち（Ｃｘ，Ｃｙ，Ｃｚ）の変化を仮想空間に反映させない場合も多い。その場合、（Ｃｘ，Ｃｙ，Ｃｚ）には適度な定数を使用すればよい。また、位置データをＣＧのカメラ位置に使用する場合、ＣＧ空間を表す論理的な長さ単位に適合するよう、位置データに適度なスケール変換を施して使用する。便宜の為、Ｒｗｃ、（Ｃｘ，Ｃｙ，Ｃｚ）を入力としＭを出力するこれらの計算過程をＧと表し、Ｍの計算を（式７）の形で略記する。
【０２３７】
（式７）
Ｍ←Ｇ（Ｒｃｗ，Ｃｘ，Ｃｙ，Ｃｚ）
結局、ワールド／カメラ座標変換を設定するための必要な計算は、位置センサの回転データをカメラの回転（θｘ，θｙ，θｚ）に割り当て、また位置センサの位置データをカメラの位置（Ｃｘ，Ｃｙ，Ｃｚ）に割り当て、（式４）と（式７）の計算を行うことである。これらの計算を図１９のステップ１９０９において行い、求めたＭをレンダリングエンジンに設定する。続いてステップ１９１０において、適切な三次元空間データに対してレンダリングエンジンによる描画を実行する。ただし、「動作モード」が「遷移中」の場合は、「目的仮想空間」と「システム模擬空間」のそれぞれの三次元データを、透過率を変えて描画し半透明合成する。半透明合成効果を付けた描画処理については既に公知の技術であり、レンダリングエンジンによって実行される部分であるため説明は省略する。
【０２３８】
以上により、本実施例が実現される。
【０２３９】
以上説明したように、本実施例によれば、視線追従型の仮想現実感生成システムにおいて、体験システム模擬空間を経由して仮想現実への移行が滑らかに行われ、快適な仮想現実感体験が可能となる。
【０２４０】
【発明の効果】
以上説明したように、本発明によれば、視線追従型の仮想現実感生成システムにおいて、視点追従を一時停止させた後で再開させる場合に、視界を滑らかに復帰させることが可能となり、仮想現実感生成システムを快適で効率的なものにすることができる。
【図面の簡単な説明】
【図１】実施例１の概念図
【図２】実施例１で用いるコンピュータの構成を示すブロック図
【図３】実施例１の動作を示すフローチャート
【図４】ＣＧ計算の概要を示す図
【図５】実施例２の概念図
【図６】実施例２で用いるコンピュータの構成を示すブロック図
【図７】実施例２の動作を示すフローチャート
【図８】動作モード変更処理サブルーチンを示すフローチャート
【図９】ＣＧ計算の概要を示す図
【図１０】実施例３の概念図
【図１１】実施例３で用いるコンピュータの構成を示すブロック図
【図１２】実施例３の動作を示すフローチャート
【図１３】ドラッグ操作切り替え処理サブルーチンを示すフローチャート
【図１４】レンダリング設定処理サブルーチンを示すフローチャート
【図１５】ＣＧ計算の概要を示す図
【図１６】視界を補正する手法の説明図
【図１７】実施例５の概念図
【図１８】実施例５で用いるコンピュータの構成を示すブロック図
【図１９】実施例５の動作を示すフローチャート
【図２０】ＣＧ計算の概要を示す図
【図２１】体験システムの例を示す図
【符号の説明】
１０１  ＨＭＤ
１０２  位置センサレシーバ
１０３  コンピュータ
１０４  位置センサコントローラ
１０５  位置センサトランスミッタ
【図１】
2005025563.tif 000018
【図２】
2005025563.tif 000019
【図３】
2005025563.tif 000020
【図４】
2005025563.tif 000021
【図５】
2005025563.tif 000022
【図６】
2005025563.tif 000023
【図７】
2005025563.tif 000024
【図８】
2005025563.tif 000025
【図９】
2005025563.tif 000026
【図１０】
2005025563.tif 000027
【図１１】
2005025563.tif 000028
【図１２】
2005025563.tif 000029
【図１３】
2005025563.tif 000030
【図１４】
2005025563.tif 000031
【図１５】
2005025563.tif 000032
【図１６】
2005025563.tif 000033
【図１７】
2005025563.tif 000034
【図１８】
2005025563.tif 000035
【図１９】
2005025563.tif 000036
【図２０】
2005025563.tif 000037
【図２１】
2005025563.tif 000038