(58)【調査した分野】(Int.Cl.,DB名)
前記透過設定手段は、前記透過設定がされ、且つ、前記透過値が基準値に戻った場合に、前記仮想画像を透過させないよう透過設定を解除することを特徴とする請求項4に記載の情報処理システム。
前記描画制御手段は、透過された仮想画像と、透過されていない仮想画像と、実写画像を合成することを特徴とする請求項1乃至5のいずれか1項に記載の情報処理システム。
前記描画制御手段で合成された画像を前記撮像装置で表示すべく出力する出力手段を更に備えることを特徴とする請求項1乃至9のいずれか1項に記載の情報処理システム。
撮像装置で撮像された現実空間の実写画像と仮想物体の仮想画像を合成した合成画像を生成するクリッピング平面の値を記憶する記憶手段を備える情報処理システムの処理方法であって、
前記記憶手段に記憶されているクリッピング平面の値に基づき、前記撮像装置の位置と姿勢に応じた仮想物体と前記現実空間の実写画像とを用いて合成した合成画像の描画を制御する描画制御ステップと、
撮像装置による加速度を取得する加速度取得ステップと、
前記加速度取得ステップで取得した加速度が所定値を超えた体験者の急な動きによる危険な動作である場合に、前記現実空間の画像を前記撮像装置の体験者に視認させるように、前記記憶手段に記憶されているクリッピング平面の値を所定の範囲後退させたクリッピング平面の値に変更する変更ステップと
を含み、
前記描画制御ステップは、前記変更ステップにより体験者の急な動きによる危険な動作である場合に変更されたクリッピング平面の値に基づき、前記撮像装置の位置と姿勢に応じた仮想物体と前記現実空間の実写画像とを用いて合成した合成画像の描画を制御し、前記加速度取得ステップで取得した加速度が所定値を超えない安全な動作である場合には、前記記憶手段に記憶されているクリッピング平面の値に基づき、前記撮像装置の位置と姿勢に応じた仮想物体と前記現実空間の実写画像とを用いて合成した合成画像の描画を制御することを特徴とする処理方法。
【発明を実施するための形態】
【0015】
〔第1の実施形態〕
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【0016】
図1は、本発明におけるシステム構成および、各ハードウェアのハードウェア構成の一例を示す図である。すなわち、撮像装置としてのHMD120で撮像された現実空間の実写画像と仮想物体の仮想画像を合成した合成画像を生成する情報処理システムの一例を示す図である。
【0017】
本実施形態は、PC100(情報処理装置)とHMD120が通信可能な構成となっている。HMDは、ヘッドマウントディスプレイで、PC100で現実の映像と3次元(3D)CGモデルを合成した画像を表示する装置である。また、HMD120は現実の映像を撮像する装置である。
【0018】
図1において、101はCPUで、システムバス104に接続される各デバイスやコントローラを統括的に制御する。また、ROM102あるいは補助記憶装置113には、CPU101の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステムプログラム(以下、OS)や、PCで実行する機能を実現するために必要なプログラム等が記憶されている。
【0019】
103はRAMで、CPU101の主メモリ、ワークエリア等として機能する。CPU101は、処理の実行に際して必要なプログラム等をROM102あるいは補助記憶装置113からRAM103にロードして、該ロードしたプログラムを実行することで各種動作を実現するものである。
【0020】
また、105は入力コントローラで、キーボード(KB)110やマウス111等のポインティングデバイス等からの入力を制御する。106はビデオコントローラで、ディスプレイ121およびHMD120に内蔵されるディスプレイ121等の表示器への表示を制御する。なおディスプレイ121へは、外部出力端子(例えば、Digital Visual Interface)を用いて出力される。ディスプレイ121は、右目ディスプレイ、左目ディスプレイで構成されている。
ディスプレイ121は体験者が使用するものであり、ディスプレイ121は主にオペレータが使用する液晶ディスプレイである。
【0021】
107は汎用バスで、HMD120に内蔵されたカメラ122からの映像を取り込むために使用される。カメラ122からは、外部入力端子(例えば、IEEE1394端子)を用いて入力される。カメラ122は、右目ビデオカメラ、左目ビデオカメラで構成されている。
なお、本実施形態では。HMD120とPC100を有線で接続する構成としているが、無線通信によって画像の送受信を行ってもよい。
【0022】
108はメモリコントローラで、ブートプログラム,各種のアプリケーション,フォントデータ,ユーザファイル,編集ファイル,各種データ等を記憶する外部記憶装置(ハードディスク(HD))や、フレキシブルディスク(FD)、或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等の補助記憶装置113へのアクセスを制御する。
【0023】
109はネットワークコントローラで、ネットワーク(例えば、
図1に示したネットワーク114)を介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いた通信等が可能である。
【0024】
本発明を実現するための後述する各種プログラムは、補助記憶装置113に記録されており、必要に応じてRAM103にロードされることによりCPU101によって実行されるものである。さらに、上記プログラムの実行時に用いられる各種モデルデータ等も、補助記憶装置113に格納されており、これらについての詳細な説明も後述する。
【0025】
次に、
図2を用いて、本発明のおける機能構成図の説明をする。
図2は、本発明における機能構成図の一例を示す図である。
【0026】
位置姿勢計測部201は、体験者がHMD120の現実世界における位置姿勢を計測する。位置姿勢を計測する手法としては、二次元マーカーを現実空間に配置し、マーカーの位置姿勢と大きさに関する情報をあらかじめ位置姿勢計測部201に与えておき、カメラ122に写りこんだ二次元マーカーを認識して、その画像上での大きさや歪みからHMD120の位置姿勢を求める。なお、上記の位置姿勢の求め方以外に、HMD120に磁気や赤外線マーカーを用いた位置姿勢センサーを取り付ける手法、またそれらを複合させて使う手法などがあり、いずれも既知の技術で実現可能である。位置姿勢の計測は、特開2005−83826号公報などに開示されている。すなわち、位置姿勢の特定は実写画像のマーカーを用いずに実現することも可能である。
【0027】
加速度計測部202は、現実空間におけるHMD120の移動中の加速度を計測し、当該加速度が一定の閾値を超えた際に画面表示制御部203に通知する機能を持つ。加速度を計測する手法としては、位置姿勢計測部から得られたHMD120の三次元位置姿勢の時系列データを2階微分することによって加速度を求めてもよいし、HMD120に直接加速度センサーを取り付け、その値を取得してもよい。
画面表示制御部203は、ディスプレイ121に表示する映像(合成画像)を生成、制御する役割を持つ。
【0028】
具体的には、カメラ122が撮影した現実空間の画像の描画を実写画像描画部204に依頼する。次に、位置姿勢計測部201からその時点でのHMD120の位置姿勢を受け取り、CG画像描画部205に、当該の位置姿勢から見たCG(モデル画像)の描画を依頼する。次に、実写画像描画部204とCG画像描画部205が描画した画像を重ね合わせて合成する。このとき加速度計測部202から加速度が閾値を超えた通知があるかどうか確認をし、閾値を超えている場合は、CG画像描画部205が描画したCG(モデル画像)を半透明にして重ね合わせを行う。この時の透明度は閾値を超えてからの時間によって変化するよう制御され、CG(モデル画像)がフェードアウトした後半透明な状態が数秒続き、その後不透明な状態にフェードインするという制御をする。これにより、体験者にとって突然CGが消えたという驚きが少ないようにする。この制御の詳細は後述する。
【0029】
また、キャリブレーション部206を備えている。このキャリブレーション部206は、基準マーカーを用いて、現実空間における仮想空間に対する原点を決定し、現実空間と仮想空間の位置を関連付ける。この原点を基準に、予め3次元モデルの位置、姿勢を記憶させる。これにより、現実空間の実写画像に対して、HMD120から見た方向での仮想物体の仮想画像を合成して、現実空間上に仮想物体が存在するように見せる。この原点および、3次元モデルの位置、姿勢をグラフィックエンジン302に記憶させることによって、実写画像にHMD120から見た仮想物体の仮想画像を合成することが可能となる。このキャリブレーション部206でのキャリブレーションは、システムを起動する初めに行うものとする。
【0030】
次に、
図3を用いて、本発明のおけるアプリケーション構成図の説明をする。
図3は、本発明におけるアプリケーション構成図の一例を示す図である。
【0031】
PC100は、オペレーティングシステム301、グラフィックエンジン302、複合現実感プラットフォーム303(MRプラットフォームともいう)、複合現実感アプリケーション304(MRアプリケーションやビューアアプリケーションともいう)で構成され、CPU101により制御されている。
オペレーティングシステム301は、HMD120の入出力を制御し
【0032】
カメラ122から入力インターフェースを介して得られた実写画像を複合現実感プラットフォーム303受け渡す。またグラフィックエンジン302で描画された合成画像を出力インターフェースを介して、ディスプレイ121へ出力する。
【0033】
グラフィックエンジン302は、3次元モデルから描画する画像を生成し、実写画像と合成する。描画に利用するエンジンは、例えば、OpenGLやDirectXなどの広く利用されているグラフィックエンジンでも、独自に開発したグラフィックエンジンでもよい。なお、本実施形態ではグラフィックライブラリとしてOpenGLを利用するものとする。
【0034】
複合現実感プラットフォーム303は、実写画像のマーカーを検出し、マーカーをもとにHMD120の位置・姿勢を特定し、現実空間と仮想空間の位置合わせを行う。なお、位置姿勢や位置合わせの技術は、既知の技術として開示されている、特開2002−32784、特開2006−072903、特開2007−166427を用いて実現するものとするが、なおマーカーを使用せずに、HMD120に位置センサーを備え、この位置センサーを用いて三角測量により計測された位置をもとに、HMD120の位置や姿勢を特定して実現することも可能である。
【0035】
また複合現実感プラットフォーム303は、マーカーからHMD120の加速度を算出して、3次元モデルの透過率を決定する。なお、加速度の算出については、HMD120に加速度センサーを備えて、マーカーを使用せずに加速度を算出してもよい。
【0036】
複合現実感アプリケーション304は、複合現実感プラットフォーム303から位置、姿勢、透過率を受け付け、グラフィックエンジン302に対して3次元モデルの描画命令を発行する。この時、OpenGLのAPIを用いて、モデル情報、位置情報、姿勢情報、透過率を設定した命令を発行する。
【0037】
次に、本実施形態における複合現実感システムの詳細な処理について
図4を用いて説明する。
図4は、複合現実感システムの詳細な処理のフローチャートである。
ステップS401では、HMD120のカメラ122で、実写画像(映像)を撮像する。
ステップS402では、HMD120のカメラ122で撮像した画像をPC100に送信する。
【0038】
ステップS403では、HMD120の撮影が終了したか否かを判定して、終了するまで、撮像と画像送信を繰り返す。すなわち、HMD120は撮像するとPC100に画像を繰り返し送信する。
ステップS404では、オペレーティングシステム301を介して複合現実感プラットフォーム303が画像を受信する。
【0039】
ステップS405では、複合現実感プラットフォーム303では、変数「t」にPC100のシステム時間を代入する。この変数「t」は後述の透明度の制御で用いる。
ステップS406では、複合現実感プラットフォーム303の位置姿勢計測部201によりHMD120の位置・姿勢を計測する。
【0040】
ステップS407では、複合現実感プラットフォーム303の加速度計測部202により、加速度を計算する。なお、上述したように加速度は加速度センサーにより求められるものであってもよい。
【0041】
ステップS408では、複合現実感プラットフォーム303が、複合現実感プラットフォーム303で管理している透過率制御のフラグがTrue、すなわち透過率を制御している状態化を判定する。透過率を制御している場合(True)には、ステップS413へ処理を移し、透過率を制御していない場合(False)には、ステップS409へ処理を移す。
【0042】
ステップS409では、複合現実感プラットフォーム303は、ステップS407で計測された加速度を取得する。すなわち、撮像装置の加速度を取得する加速度取得処理の一例を示すステップである。
【0043】
ステップS410では、複合現実感プラットフォーム303が管理している加速度の閾値と比較する。加速度が閾値以上であった場合に、ステップS412へ処理を移し、加速度が閾値未満であった場合には、ステップS411へ処理を移す。なお、加速度が閾値以上である場合とは、HMD120を装着している体験者がつまずくなどして人が転倒する可能性がある場合であり、加速度が閾値未満である場合とは、人の通常の動作である場合である。
【0044】
本実施形態では、加速度の閾値として「60m/s^2」を用いて判定するように構成したが、あくまでも一例でありこれに限ることはない。なお、
図7のグラフは、加速度閾値を「60m/s^2」としてあらわしたグラフである。
【0045】
ステップS411では、複合現実感プラットフォーム303は透過率に「0」を代入する。透過率を「0」とすることは、CG画像を透過させずに実写画像に合成(重畳)することになる。透過率「0」として実写画像と仮想画像を重畳し、ディスプレイ121で表示された例が
図5である。
図5の説明は後述する。
【0046】
ステップS412では、加速度が閾値を超えたため、複合現実感プラットフォーム303が、透過率制御のフラグに「True」を設定し、変数「t
0」にPC100のシステムの現在時刻を設定する。これにより、透過制御が開始される。すなわち、加速度が所定値を超えた場合に、透過設定する処理の一例を示すステップである。
【0047】
ステップS413では、複合現実感プラットフォーム303が、現在時刻「t」における透過率を計算する。透過率の計算は、
図8の計算式を用いて算出する。なお、
図8の計算式は、一例を示すものであってこれに限ることはない。また、ここで透過率が「0」になる場合(加速度が閾値を超えた直後、すなわち透過率制御フラグを「True」に設定した後のステップS413の計算の場合)には、透過率に所定の値をプラスして、透過を始めるように制御する。ステップS413は、加速度取得処理で取得された加速度が所定値を超えた場合に、現実空間の画像を体験者に視認させるべく仮想画像の透過値を取得する透過値取得の一例を示すステップである。
【0048】
また、ステップS413は、透過設定中(透過率制御が「True」)の場合、
図8の計算式により、前回の透過値より高い透過値を決定する処理の一例を示すステップである。そして、後述のステップS418にて、前回の透過値より高い透過値を用いて、仮想画像を透過制御する。
図8の計算式を用いた場合の透過率を表すグラフ(透過率の推移を示すグラフ)が
図7となる。
【0049】
ここで、
図7について説明する。なお、上述したように、加速度の閾値として「60m/s^2」を用いている。
【0050】
変数「p」は時刻「t」における透過率を表している。また、変数「t
0」はHMD120の加速度が閾値を超えた時刻を表している。また、定数「a」は透過率の立ち上がり、立ち下がりの傾きを表している。「a」の傾きに従って透過率が変化することで、突然CGが消えて、体験者の転倒時の混乱につながらないようにすることが可能となる。
【0051】
また定数「d」は最大透過率を維持する時間を表している。また、定数「pMax」は最大透過率を表している。なお、CGを完全に消してしまうと体験者に混乱をもたらすので、「pMax」の値は100%未満とし、透過率制御中でもCGが完全には消えないようにすることが望ましい。
なお、「d」の間に再度、HMD120の加速度が閾値を超えた場合には、加速度が閾値を超えた時間から再度「d」の時間分、「pMax」の最大透過率で透過制御するようにしてもよい。また、「a」の立ち下り時に、HMD120の加速度が閾値を超えた場合には、現在の透過率を基準に、「pMax」まで透過率が立ち上がるように制御してもよい。
【0052】
ステップS414では、複合現実感プラットフォーム303が、透過率が「0」か否かを判断する。透過率が「0」の場合、ステップS415へ処理を移す。すなわち、透過率が「0」になった場合とは、透過が終わった場合である。また透過率が「0」でない場合には、ステップS416へ処理を移す。すなわち、透過率が「0」でない場合とは、透過中の場合である。
【0053】
ステップS415では、複合現実感プラットフォーム303が、透過率制御フラグを「False」に設定し、透過制御を終了させる。すなわち、透過設定中(透過率制御フラグ「True」)、且つ、透過率(値)が基準値(例えば、「0」)に戻った場合に、仮想画像を透過させないよう透過設定を解除する処理の一例を示すステップである。
【0054】
ステップS416では、複合現実感プラットフォーム303が、複合現実感アプリケーション304に、位置情報、姿勢情報、透過率を受け渡す。複合現実感アプリケーション304は、位置情報、姿勢情報をもとに、実写画像に合成するモデルを特定する。本実施形態の場合、特定されるモデルは901と902である。位置情報と姿勢情報に従って描画するモデルを特定する技術は、既知の技術であるため説明を省略する。
【0055】
なお、
図9は、各モデル(仮想物体としての3次元モデル)の情報を管理するデータの一例を示す図である。各モデルに対して、3次元モデル名、位置情報、透過フラグを関しておき、描画するモデルを特定する、あるいは透過するモデルか否かを判定するために用いられる。この
図9のデータは、復号現実感システムを運用するユーザーが予め記憶させるものとする。
なお、
図9のデータは、複合現実感アプリケーション304が参照するデータとしたが、複合現実感プラットフォーム303が参照するようにし、複合現実感プラットフォーム303で描画するモデルを判定するようにすることも可能である。複合現実感プラットフォーム303で実現するか、複合現実感アプリケーション304で実現するかは適宜設計によって変更できてもよい。
【0056】
ステップS417では、複合現実感アプリケーション304が、描画させるモデルが透過するモデルか否かを透過フラグ903に従って判定する。すなわち、速度が所定値を超えた場合に、HMD120(撮像装置)の位置と姿勢に従って、所定の範囲で非表示となる仮想物体を特定する処理の一例を示すステップである。
透過フラグが「ON」のモデルは、人が転倒し、手をつく場合に影響するモデルであり、透過フラグが「OFF」のモデルは、人が転倒した場合に、影響しないモデルである。この透過するモデルと透過させないモデルを設定しておくことで、より没入感を損ねることなく、複合現実感システム上での転倒を回避させることが可能となる。なお、すべてのモデルに対して透過制御させる構成をとることも可能であることは言うまでもない。
透過フラグが「ON」のモデルの場合には、ステップS418へ処理を移し、透過フラグが「OFF」のモデルの場合には、ステップS419へ処理を移す。
すなわち、ステップS417は、透過させる仮想画像か否かを判定する透過判定処理の一例を示すステップである。
なお、合成するモデルそれぞれに対してフラグを判定し、それぞれのモデルに対して、ステップS419又はステップS420の処理を実行するものとする。
【0057】
ステップS418では、複合現実感アプリケーション304がグラフィックエンジン302のAPIを用いてモデル情報と、位置情報、姿勢情報、透過率(ステップS413で計算され、取得した透過率)を含む描画命令をグラフィックエンジン302に発行して、グラフィックエンジン302がモデルと透過率から合成する仮想画像を生成する。より詳細には、グラフィックエンジン302が位置情報と姿勢情報に従って、描画命令のあったモデルの仮想空間上での位置姿勢を決定し、この位置姿勢になるようにモデルを制御して、モデルの仮想画像を生成する。この生成される仮想画像に対して、透過率が設定される。
【0058】
なお、グラフィックエンジン302は、CADアプリケーションで生成された3次元モデルを参照可能なように管理している。3次元モデルは、補助記憶装置113に記憶されているものとするが、別筐体のサーバに管理する構成であってもよい。
【0059】
ステップS419では、透過させるモデルでないため、複合現実感アプリケーション304がグラフィックエンジン302のAPIを用いてモデル情報と、位置情報、姿勢情報、透過率(0)を含む描画命令をグラフィックエンジン302に発行して、グラフィックエンジン302がモデルと透過率から合成する仮想画像を生成する。
すなわち、ステップS419は、透過判定で透過させない仮想画像である場合には、仮想画像を透過させることなく、ステップS418は、透過判定で透過させる仮想画像と判定された場合に、決定された透過率に従って仮想画像を透過制御する処理の一例を示すステップである。
【0060】
ステップS420では、複合現実感アプリケーション304が合成する全てのモデルの仮想画像を生成したか否かを判定する。具体的には、複合現実感アプリケーション304が仮想画像を生成するモデルに対して、描画命令をグラフィックエンジン302に発行したか否かを判定する。なお。グラフィックエンジン302は、位置情報、姿勢情報をもとに、合成するモデルを特定して、仮想画像を生成し、実写画像に仮想画像を描画することが可能であるため、グラフィックエンジン302にすべてのモデルの描画命令を発行し、グラフィックエンジン302が仮想画像を生成したか否かを判定するようにしてもよい。
ステップS418とステップS419で生成された仮想画像と実写画像を重畳し、ディスプレイ121で表示された例が
図6である。
図56説明は後述する。
【0061】
ステップS421では、複合現実感プラットフォーム303が、複合現実感アプリケーション304に、位置情報、姿勢情報、透過率を受け渡す。複合現実感アプリケーション304は、位置情報、姿勢情報をもとに、実写画像に合成するモデル(CG)を特定する。本実施形態の場合、特定されるモデル(CG)は901と902である。位置情報と姿勢情報に従って描画するモデルを特定する技術は、既知の技術であるため説明を省略する。
【0062】
ステップS422では、透過させるモデルでないため、複合現実感アプリケーション304がグラフィックエンジン302のAPIを用いてモデル情報と、位置情報、姿勢情報、透過率(0)を含む描画命令をグラフィックエンジン302に発行して、グラフィックエンジン302がモデルと透過率から合成する仮想画像を生成する。より詳細には、位置情報、姿勢情報から、仮想空間におけるモデルの位置と姿勢を制御し、その位置・姿勢を制御したモデルに対して透過率を設定し、仮想空間上の仮想画像を生成する。なお、HMD120の位置、姿勢から、仮想空間上の位置姿勢が特定でき、この位置姿勢から見えるモデルの仮想画像が生成される。
【0063】
ステップS423では、グラフィックエンジン302は、位置情報、姿勢情報に従って、ステップS404で受信した実写画像と仮想画像を合成(重畳)し、HMD120のカメラ122に表示する合成画像を生成する。すなわち、ステップS423は、透過された仮想画像と、透過されていない仮想画像と、実写画像を合成する描画制御処理の一例を示すステップである。
【0064】
また、ステップS418とステップS423は、撮像装置の位置と姿勢に従って決定された仮想物体に対する、透過率(値)により透過された仮想画像と現実空間の実写画像を描画制御する描画制御処理の一例を示すステップである。
【0065】
ステップS424では、グラフィックエンジン302は、オペレーティングシステム301を介して、生成された合成画像をHMD120へ送信する。すなわち、合成された画像を撮像装置としてのHMD120で表示すべく出力する出力処理の一例を示すステップである。
ステップS425では、HMD120は、合成画像をPC100から受信する。
ステップS426では、HMD120のディスプレイ121により、受信した合成画像を表示する。
【0066】
なお、透過率「0」として仮想画像が生成され、ディスプレイ121で表示された例が
図5である。また、加速度が閾値を超え仮想画像が透過制御され、ディスプレイ121で表示された例が
図6である。
図5の501のモデルAは、透過率「0」として実写画像に仮想画像を合成して表示しており、502のモデルBは、透過率「0」として実写画像に仮想画像を合成して表示している。
図6の601のモデルAが、透過させるモデル(透過フラグON)であり、ステップS413で計算された透過率に従って生成された仮想画像と実写画像を合成して表示しており、602のモデルBが、透過させないモデル(透過フラグOFF)であり、透過率「0」ディスプレイ121で表示された例が
図5である。
図5の説明は後述する。
【0067】
〔第2の実施形態〕
次に、第2の実施形態について説明する。第2の実施形態では、加速度に応じて、近いモデルを非表示にさせる仕組みである。
【0068】
まず初めに、本実施形態での想定されるケースについて説明する。
複合現実感アプリケーション304において、第1の実施形態のようにCGを透過させることで現実物体を可視化させる手法を用いると、CGの透過処理が視界全体に影響を及ぼしてしまう場合がある。これは、複合現実感において、現実画像と多くの仮想画像を重畳させて表示していることから、体験者から遠いさまざまな仮想物体の画像まで透過表示され、体験している画像が大きく変化することで逆に体験者を混乱させることにつながるためである。
このように、第1の実施形態の透過処理に加え、より危険回避をするためには、視界への影響を最小限にすることが望まれる。
具体的には、体験者の周囲数メートルの現実空間が視認できれば十分であり、その範囲内に存在するCGモデルを非表示にすることが考えられる。
【0069】
本実施形態では、体験者のHMD120の位置とCGモデルの位置と、加速度により、非表示または透過制御とするCGモデルを決定し、必要なオブジェクトを決定する。
以下、第2の実施形態の詳細について説明する。なお、第1の実施形態と同様の箇所については説明を省略する。
【0070】
第2の実施形態における複合現実感システムの詳細な処理について
図10を用いて説明する。
図10は、第2の実施形態における複合現実感システムの詳細な処理のフローチャートである。
【0071】
ステップS1001では、ステップS416で特定されたモデルの位置が、HMD120と所定距離内かを判定する。具体的には、特定されたモデルの位置情報(空間上の座標)と、HMD120の位置から直線距離を算出し、算出された距離が、
図12の透過範囲1204の距離内かを判定する。1201はPC100に保持している設定ファイル等に記述されているものとする。なおHMD120とモデルの距離を算出する計算方法は既知の計算方法であるため、説明を省略する。
【0072】
ステップS1001で所定距離内のモデルと判定された場合には、ステップS418へ処理を写し、所定距離外のモデルと判定された場合には、ステップS419へ処理を移す。これにより、所定距離内のモデルは、透過表示され、所定距離外のモデルは透過表示されずに、通常表示される。
【0073】
所定距離内のモデルが透過表示される例を示す図が
図11である。この
図11を用いて説明すると、加速度が閾値を超える前は、モデルA1001、モデルB1002、モデルC1003が現実画像に重畳表示されている。加速度が閾値を超えた場合には、モデルA1004、モデルB1005、モデルC1006のように重畳表示される。
モデルC1006は、所定距離外のため透過制御されずに表示され、モデルAは所定距離内のため透過制御されて表示されている。モデルB1005は、透過フラグ1200がOFFであるため、透過制御されないで表示される。
なお、上述した所定距離内は、距離以内/未満は何れであってもよいことは言うまでもない。
【0074】
図12は、第2の実施形態における各モデル(仮想物体としての3次元モデル)の情報を管理するデータの一例を示す図である。
【0075】
第2の実施形態によれば、近いCGモデルについて透過させ、遠いCGモデル(よろめいた際にユーザーに影響をおよぼさないCGモデル)は通常表示することで、体験中の映像を大きく変化させることなく、体験者のよる危険回避を行わせることが可能となる。
【0076】
〔第3の実施形態〕
次に、第3の実施形態について説明する。第3の実施形態では、加速度に応じて、近いモデルをクリッピングによって非表示にさせる仕組みである。
第3の実施形態は、第2の実施形態のような仮想物体が小さい場合に加え、仮想物体が大きい場合により効果を奏する仕組みである。
【0077】
複合現実感アプリケーション304においては、仮想物体として建物や大型の家具、プラントの配管など、体験者の周囲を覆う巨大なオブジェクトを配置するケースが考えられる。これらのオブジェクトは単一のCGデータである場合には、仮想物体全体が透過や非表示となり、視界全体に影響を及ぼしてしまう。
また、例えば、建物のようなモデルの場合、オリジナルのCADデータから複合現実感アプリケーションで表示できるモデル形式に変換する過程で部材の情報が失われ、単一の巨大なオブジェクトとして取り扱われるケースが多い。そのため、体験者の近くの部材だけ非表示にするという制御が困難であるという場合もある。
【0078】
そこで、第3の実施形態では、モデルの表示状態を制御するための方式としてクリッピング平面の操作による制御を用いて、非表示制御をおこない危険を回避させる仕組みについて説明する。
【0079】
まず初めに、
図13を用いて、クリッピング平面について説明する。
図13は、クリッピング平面の概念を示した図である。具体的には、カメラ122の視線方向と垂直になる2つの平面を定義し、カメラ122から近い方(near)に位置する平面を前方クリッピング平面、遠い方(far)に位置する平面を後方クリッピング平面と呼ぶ。この2つの平面と、画面の四辺(top,bottom,left,right)によって切り取られる平面に囲まれた空間内に位置する物体のみ描画し、その外側に位置する物体は切り取って描画対象から除外して表示する。なお、前述の6つの平面に囲まれた空間を視錐台と呼ぶ。
なお、描画において、OpenGLやDirectXなどのグラフィックエンジンを用いる際には、計算アルゴリズム上の制約から、描画する対象の仮想空間を有限な空間に限定されるものとする。
OpenGLにおいては、視錐体の形状はnear,far,top,bottom,left,rightの6つのパラメータによって決定される。
【0080】
なお、クリッピング平面の技術については、例えば、「3次元コンピュータ・アニメーションの原理 第2版 P77〜P79(株式会社トッパン/発行・M.オローク/著作)」に記載の技術が用いることで実現可能である。
本実施形態では、このクリッピング平面の技術を用い、よろめいた体験者が危険回避行動をとる間、カメラから前方クリッピング平面の距離を遠ざけることによって、体験者の近くのCGを非表示にする。
【0081】
図14の計算式は、
図13において、距離nearに位置する前方クリッピング平面をdist分移動させた場合の視錐台のパラメータを求めるための計算式の一例である。
【0082】
ここで体験者がよろめいている状況において急激な風景の変化を緩和するため、ニアクリップ面はアニメーションで段階的に後退し、一定時間経過後はアニメーションで元のクリップ面に戻るようにする。ここで時間によるニアクリップ面の後退率を「p」とすると、視錐台を定義するパラメータは
図14の計算式で算出される。
なお、「p」「a」「t
0」「d」などの変数は、透過するCGモデルが透過されるタイミングでクリッピングによる非表示制御をするため、同様の値を用いるものとするが、「a」「d」などの変数の値は、任意の値を用いることも可能である。
また、「dMax」は、ニアクリッピング平面を移動させる最大距離を表すための変数であり、体験者から見て最大「near+dMax」の距離の範囲を非表示にすることが可能となる。ニアクリッピング平面はファークリッピング平面より後ろに設定することはできないため、dMaxはdMax<far−nearを満たす正の数が任意に設定される。
なお、本実施形態では、nearは通常10cmに設定されており、CGモデルの描画がストップされる位置である。
また、算出されたnear’によりnearが決定されると、それまで表示していたものが非表示(near’の範囲が非表示)になり、現実画像が見えることになる。
図14の計算式は、画角を維持したまま、クリッピング平面を後ろずらすための式である。
【0083】
図15は、本実施形態におけるモデルの情報を管理するデータの一例を示す図である。第1の実施形態の
図9や第2の実施形態の
図12の透過フラグに変え、非表示制御方式を定義する構成としている。非表示制御方式1504の属性として、透過、なし、クリッピングが定義可能である。
【0084】
第1の実施形態または第2の実施形態では、透過フラグ903は非表示にする制御を行う(ON)/行わない(OFF)の二値であったが、本実施形態では非表示の制御方式を第1の実施形態で説明した透過(第1の非表示)に加え、クリッピング(第2の非表示)、透過を行わない(通常表示)の三値をとる。この三値の他に新たに表示制御方式を定義してもよい。
【0085】
図16は、第3の実施形態の詳細を示す、複数の非表示制御方式を採用した場合の表示制御のフローチャートである。
【0086】
ステップS1601では、複合現実感プラットフォーム303では、変数「t」にPC100のシステム時間を代入する。この変数「t」は後述の非表示の制御で用いる。なお、ステップS1601は、
図4のステップS405に相当する処理である。
ステップS1602では、オペレーティングシステム301を介して複合現実感プラットフォーム303が画像を受信する。
図4のステップS404に相当する処理である。
【0087】
ステップS1603では、複合現実感プラットフォーム303の位置姿勢計測部201によりHMD120の位置・姿勢を計測する。これにより、HMD120の位置・姿勢が決定され、HMD120の位置・姿勢にしたがって、描画するCGモデルが決定される。すなわち、速度が所定値を超えた場合に、HMD120(撮像装置)の位置と姿勢に従って、所定の範囲で非表示となる(透過またはクリッピングする)仮想物体が特定される処理に相当する。
図4のステップS406とステップS416に相当する処理である。
【0088】
ステップS1604では、複合現実感プラットフォーム303の加速度計測部202により、加速度を計算する。なお、加速度は加速度センサーにより求められるものであってもよい。
図4のステップS407に相当する処理である。
【0089】
以下、ステップS1605からS1622まで、登録されている仮想物体の数(
図15の3次元モデル分)だけループする。なお、ここでループする仮想物体は、HMD120の位置姿勢から描画する仮想物体に対して行うものとする。
【0090】
ステップS1606では、複合現実感プラットフォーム303が、複合現実感プラットフォーム303で管理している非表示制御のフラグがTrue、すなわち非表示を制御している状態かを判定する。非表示を制御している場合(True)には、ステップS1610へ処理を移し、非表示を制御していない場合(False)には、ステップS1607へ処理を移す。
【0091】
ステップS1607では、複合現実感プラットフォーム303が管理している加速度の閾値と比較する。加速度が閾値以上であった場合に、ステップS1609へ処理を移し、加速度が閾値未満であった場合には、ステップS1608へ処理を移す。なお、加速度が閾値以上である場合とは、HMD120を装着している体験者がつまずくなどして人が転倒する可能性がある場合であり、加速度が閾値未満である場合とは、人の通常の動作である場合である。
【0092】
ステップS1608では、非表示の制御を行わず、仮想物体のCGモデルを通常の状態で描画する。なお、加速度の閾値は、第1の実施形態と第2の実施形態と同様に、「60m/s^2」を用いるように構成するが、あくまでも一例でありこれに限ることはない。
【0093】
ステップS1609では、非表示制御のフラグに「True」を設定し、変数「t0」にPC100のシステムの現在時刻を設定する。これにより、透過制御が開始される。すなわち、加速度が所定値を超えた場合に、透過設定する処理の一例を示すステップである。
【0094】
ステップS1610からステップS1614は、透過による非表示を行う処理である。以下、透過により非表示を行う処理について説明するが、第1の実施形態と第2の実施形態の透過制御は同様である。
【0095】
ステップS1610では、
図15を参照し、現在処理の対象としているモデルに対応する非表示制御方式1504に応じて分岐する。本実施形態では、透過方式の場合はステップS1611に、クリッピング方式の場合はステップS1615に、非表示制御をしない通常表示の場合はステップS1621に処理を移す。
【0096】
ステップS1611では、複合現実感プラットフォーム303が、現在時刻「t」における透過率を計算する。透過率の計算は、
図8の計算式を用いて算出する。なお、
図8の計算式は、一例を示すものであってこれに限ることはない。また、ここで透過率が「0」になる場合(加速度が閾値を超えた直後、すなわち透過率制御フラグを「True」に設定した後のステップS1611の計算の場合)には、透過率に所定の値をプラスして、透過を始めるように制御する。
【0097】
ステップS1612では、複合現実感プラットフォーム303が、透過率が「0」か否かを判断する。透過率が「0」の場合、ステップS1613へ処理を移す。すなわち、透過率が「0」になった場合とは、透過が終わった場合である。また透過率が「0」でない場合には、ステップS1614へ処理を移す。すなわち、透過率が「0」でない場合とは、透過中の場合である。
【0098】
ステップS1613では、複合現実感プラットフォーム303が、透過率制御フラグを「False」に設定し、透過制御を終了させる。すなわち、透過設定中(透過率制御フラグ「True」)、且つ、透過率(値)が基準値(例えば、「0」)に戻った場合に、仮想画像を透過させないよう透過設定を解除する処理の一例を示すステップである。
【0099】
ステップS1614では、ステップS1611で算出した透過率を反映させて仮想物体のCGモデルを描画する。CGモデルを透過させて描画する処理は、複合現実感アプリケーション304がグラフィックエンジンに描画命令を発行することにより制御する。
【0100】
ステップS1615からステップS1620は、クリッピングにより非表示を行う処理である。
ステップS1615では、複合現実感プラットフォーム303における、
図13に示した視錐体の情報(near,far,top,bottom,left,right)を一時領域(例えば、RAM)に退避する。これはクリッピング平面変更の影響を現在処理中のモデルに限定するためのものである。
【0101】
ステップS1616では、
図14の計算式に基づいて前方クリッピング平面までの距離(near’)を求める。
ステップS1617では、複合現実感プラットフォーム303が、
図14の計算方法における「p」が「0」か否かを判断する。pが「0」の場合、ステップS1618へ処理を移す。すなわち、pが「0」になった場合とは、クリッピングによる非表示制御が終わった場合である。またpが「0」でない場合には、ステップS1614へ処理を移す。すなわち、pが「0」でない場合とは、クリッピングによる非表示制御中の場合である。
【0102】
ステップS1618では、複合現実感プラットフォーム303が、非表示制御フラグを「False」に設定し、非表示制御を終了させる。すなわち、クリッピング設定中(非表示制御フラグ「True」)、且つ、pが基準値(例えば、「0」)に戻った場合に、仮想画像をクリッピングさせないようクリッピング平面を通常の状態に戻す処理の一例を示すステップである。
【0103】
ステップS1619では、ステップS1616で求めた視錐体の情報(near’,far’,top’,bottom’,left’,right’)を反映させて仮想物体のCGモデルを描画する。この描画は、グラフィックエンジン302へ描画命令を出力することで実現する。
【0104】
ステップS1620では、ステップS1615で退避した視錐体の情報を複合現実感プラットフォーム303に反映させ、元の視錐体を復元する。これにより、次のモデルは通常のクリッピング平面で表示される。
【0105】
ステップS1621は、透過、クリッピングなどの非表示処理を行わず、通常通りにCGを描画する処理である。これにより遠方や高所にある仮想物体で、体験者がよろめいた際に手や足をつく可能性のない場所にあるモデルは非表示処理を行わないこととなる。
【0106】
ステップS1623では、これまで描画してきた仮想物体をグラフィックエンジン302を介してディスプレイ121に表示する。
【0107】
図17は、第3の実施形態における複合現実アプリケーションで制御されたHMD120で表示される映像の一例を示す図である。現実空間の部屋1701の中に、仮想物体のティーポット1501、窓1502、長机1503が配置されている。これは、体験者がよろめいていない状態(加速度が所定値未満/以下)の場合の通常の表示状態である。
【0108】
図18は、複合現実アプリケーションにおいて体験者がよろめいた際にHMD120で表示される映像の一例である。前述の
図16のフローチャートで説明したように、ティーポット1501は透過表示され(ステップS1614)、長机1503は前方クリッピング平面1801によって断面を切り取られて表示され(ステップS1619)、窓1502は影響を受けずに通常通りに表示される(ステップS1621)。
【0109】
第3の実施形態によれば、CGモデルの近い位置について非表示にすることで体験中の映像を大きく変化させることなく、体験者のよる危険回避を行わせることが可能となる。
【0110】
また、CGモデルごとに非表示制御方式を定義することで、モデルごとに透過させたり、クリッピングによる一部分の非表示にさせたりでき、モデルにあった危険回避時の描画制御を容易にさせることが可能となる。
【0111】
第1の実施形態〜第3の実施形態に基づくと、本発明における非表示処理は、透過表示および非表示を含む処理である。
【0112】
また、第1の実施形態〜第3の実施形態では、体験者がよろめいた場合を想定して説明したが、体験者が走った場合にも適用可能である。例えば、所定時間内に所定の範囲以上の距離を移動した場合に(所定の移動速度になった場合に)、非表示制御させる。すなわち、加速度は、移動速度を含むものである。
【0113】
HMD120を装着して走ることは危険行動につながるため、近くのCGモデルを非表示(透過含む)することで、危険回避ができるように表示を制御することは、回避行動を行う際に効果がある。
【0114】
次に、第1の実施形態〜第3の実施形態に対応する本発明における機能ブロック図について、
図19を用いて説明する。
【0115】
速度取得部1901は、撮像装置が移動したことによる速度を取得する機能部である。
【0116】
特定部1902は、速度が所定値を超えた場合に、前記撮像装置の位置と姿勢に従って、所定の範囲で非表示となる仮想物体を特定する機能部である。
【0117】
描画制御部1903は、特定部1902により特定された仮想物体に対する仮想画像が非表示とし、前記現実空間の画像を体験者に視認させるように、撮像装置の位置と姿勢に応じて決定される仮想物体の仮想画像と前記現実空間の実写画像を用いて描画制御する機能部である。また、描画制御の非表示処理は、透過処理である。
また、描画制御部1903は、速度取得部1901で取得した速度に応じて決定された透過値に従って仮想画像を透過させる機能部である。
また、描画制御部1903は、判定部1904で透過させない仮想物体である場合には、仮想物体に対応する仮想画像を透過させることなく、判定部1904で透過させる仮想物体と判定された場合に、透過値に従って仮想物体に対応する仮想画像を透過制御する機能部である。
【0118】
また、描画制御部1903は、透過設定部1905で透過設定されている場合、
前回の透過値より高い透過値を用いて、仮想画像を透過制御する機能部である。
また、描画制御部1903は、透過された仮想画像と、透過されていない仮想画像と、実写画像を合成する機能部である。
また、描画制御部1903は、クリッピング平面決定部1906により決定されたクリッピング平面にしたがって、非表示とする仮想物体を描画制御する機能部である。
また、描画制御部1903は、判定部1904により、クリッピングにより非表示する仮想物体と判定された場合に、所定の範囲後退させたクリッピング平面を用いて、仮想画像を描画制御する機能部である。
【0119】
判定部1904は、描画制御部1903で透過させる仮想物体か否かを判定する機能部である。
また、判定部1904は、クリッピングにより非表示する仮想物体か否かを判定する機能部である。
【0120】
透過設定部1905は、速度取得部1901で取得された速度が所定値を超えた場合に、透過設定する機能部である。また、透過設定中、且つ、透過値が基準値に戻った場合に、仮想画像を透過させないよう透過設定を解除する。
【0121】
クリッピング平面決定部1906は、所定の範囲後退させたクリッピング平面を決定する機能部である。
出力部1907は、描画制御部1903で合成された画像を撮像装置で表示すべく出力する機能部である。
【0122】
以上、本実施形態によれば、体験者がよろめいた場合などの緊急時に、実写画像を視認させることで体験者が迅速な回避行動をとれる。また、表示するモデルデータに特別な加工を施す必要がなく、非表示制御の仕組みを容易に導入することができる。
【0123】
特に、複合現実感システムでは、HMDを利用し、実写画像に小さな仮想物体だけでなく、実写画像の大部分を仮想画像で合成してHMDで表示するため、現実の状態と仮想の状態の区別が困難である。よって、体験者がふらつき、よろめいて転倒を回避する際に、とっさに仮想物体に対して手をつくことがある。そのため、仮想物体の画像のみを透過/非表示させ、より現実を認識させることで、体験者の回避行動が容易になる。なお、手をつくタイミングで非表示にしても遅く、加速度が所定値になった際に迅速に非表示にすることが必要であり、加速度を取得して、所定値以上になった場合に、近くのCGモデルを非表示にすることは技術的な意義を有するものである。
【0124】
また、複合現実感システムは、実写画像と仮想画像を合成し、体験者に実際の場所で仮想物体が現実にあるように見せることから、仮想画像を急に消すと見ていた状態が大きく変化してしまうため、転倒時などには特に体験者に混乱をきたす。よって加速度が所定値を超えた場合に、一定の速度で仮想画像を透過することで体験者の混乱を避けつつ、体験者の転倒回避行動を迅速にとらせることが可能となる。
【0125】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【0126】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0127】
また、本発明におけるプログラムは、
図4、
図10、
図16に示すフローチャートの処理方法をコンピュータが実行可能なプログラムであり、本発明の記憶媒体は
図4、
図10、
図16の処理方法をコンピュータが実行可能なプログラムが記憶されている。なお、本発明におけるプログラムは
図4、
図10、
図16の各装置の処理方法ごとのプログラムであってもよい。
【0128】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【0129】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
【0130】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、DVD−ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク、ソリッドステートドライブ等を用いることができる。
【0131】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0132】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0133】
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0134】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。