(57)【特許請求の範囲】
【請求項１】
ユーザの視線方向と直交する方向を特定する特定手段と、
仮想物体に対する移動指示による当該仮想物体の移動量を、当該仮想物体とユーザとの距離に応じて決定する移動量決定手段と、
前記移動量決定手段で決定された移動量を用いて、前記仮想物体を、前記ユーザの視線方向と直交する方向に移動させる仮想物体移動手段と、
を備え、
前記ユーザの位置は、前記ユーザが現実空間で装着するヘッドマウントディスプレイの位置であることを特徴とする情報処理システム。
【請求項２】
前記仮想物体移動手段は、前記仮想物体を、前記ユーザの視線方向においては前記移動量決定手段により決定された移動量で移動させることなく、前記ユーザの視線方向と直交する方向において前記移動量決定手段により決定された移動量で移動させることを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記移動量決定手段は、前記移動指示が示す移動量を前記仮想物体とユーザとの距離に応じて補正することで、前記仮想物体移動手段により用いられる移動量を決定することを特徴とする請求項１又は２に記載の情報処理システム。
【請求項４】
前記移動量決定手段は、前記ユーザと前記仮想物体の距離が短ければ短いほど、前記移動量が小さくなるように補正することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理システム。
【請求項５】
情報処理システムの制御方法であって、
特定手段が、ユーザの視線方向と直交する方向を特定する特定ステップと、
移動量決定手段が、仮想物体に対する移動指示による当該仮想物体の移動量を、当該仮想物体とユーザとの距離に応じて決定する移動量決定ステップと、
仮想物体移動手段が、前記移動量決定手段で決定された移動量を用いて、前記仮想物体を、前記ユーザの視線方向と直交する方向に移動させる仮想物体移動ステップと
を含み、
前記ユーザの位置は、前記ユーザが現実空間で装着するヘッドマウントディスプレイの位置であることを特徴とする制御方法。
【請求項６】
情報処理システムを、
ユーザの視線方向と直交する方向を特定する特定手段と、
仮想物体に対する移動指示による当該仮想物体の移動量を、当該仮想物体とユーザとの距離に応じて決定する移動量決定手段と、
前記移動量決定手段で決定された移動量を用いて、前記仮想物体を、前記ユーザの視線方向と直交する方向に移動させる仮想物体移動手段として機能させ、
前記ユーザの位置とは、前記ユーザが現実空間で装着するヘッドマウントディスプレイの位置であることを特徴とするプログラム。
【請求項７】
ユーザの視線方向と直交する方向を特定する特定手段と、
仮想物体の移動指示による前記仮想物体の移動量を、前記仮想物体とユーザとの距離に応じて決定する移動量決定手段と、
前記視線方向と前記直交する方向によって定義される平面上において、前記移動量決定手段で決定された移動量を用いて、前記仮想物体を移動する仮想物体移動手段と、
を備え、
前記ユーザの位置は、前記ユーザが現実空間で装着するヘッドマウントディスプレイの位置であることを特徴とする情報処理装置。
【請求項８】
情報処理装置の制御方法であって、
特定手段が、ユーザの視線方向と直交する方向を特定する特定ステップと、
移動量決定手段が、仮想物体に対する移動指示による当該仮想物体の移動量を、当該仮想物体とユーザとの距離に応じて決定する移動量決定ステップと、
仮想物体移動手段が、前記移動量決定手段で決定された移動量を用いて、前記仮想物体を、前記ユーザの視線方向と直交する方向に移動させる仮想物体移動ステップと
を含み、
前記ユーザの位置は、前記ユーザが現実空間で装着するヘッドマウントディスプレイの位置であることを特徴とする制御方法。
【請求項９】
情報処理装置を、
ユーザの視線方向と直交する方向を特定する特定手段と、
仮想物体に対する移動指示による当該仮想物体の移動量を、当該仮想物体とユーザとの距離に応じて決定する移動量決定手段と、
前記移動量決定手段で決定された移動量を用いて、前記仮想物体を、前記ユーザの視線方向と直交する方向に移動させる仮想物体移動手段として機能させ、
前記ユーザの位置は、前記ユーザが現実空間で装着するヘッドマウントディスプレイの位置であることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザの視点と三次元モデルとの距離に応じて、適切な移動量で三次元モデルを移動させることの可能な情報処理システム、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来技術として、三次元モデリングされたＣＧ（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ、以下、三次元モデルという。）を含む画像を、現実空間を撮像した画像に重畳し、これを観察者に提示する仕組みが存在する。この仕組みを用いることで、観察者にあたかも現実空間中に三次元モデルが存在しているかのように見せることができる。この仕組みは、複合現実感（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ、以下、ＭＲという。）や拡張現実感と呼ばれている。
【０００３】
こうした仕組みにおいて、仮想空間に存在する三次元モデルを移動させたり回転させたりする場合には、従来、仮想空間を管理する情報処理装置の入力デバイス（マウスやキーボード等）を操作することで、これを実現している。
【０００４】
しかしながら、こうした操作はディスプレイの二次元平面で行われるため、ユーザにとってはあまり直感的な操作ではない。そこで、特許文献１には、現実空間におけるユーザの動作を仮想空間における三次元モデルに作用させる仕組みが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−７９１７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＭＲ技術を用いる場合においても、特許文献１の仕組みや指先にセンサを装着することで三次元モデルに対して作用させることが可能となるが、画像処理やセンサといった仕組みによって現実空間上の物体の位置を正確に特定することは困難である。
【０００７】
そのため、ユーザの手によって三次元モデルを移動させようとした場合、あまり細かな移動はできない。画像処理の細かな誤差やセンサの性能による誤差によって、ユーザが意図する位置に移動することができない問題がある。また、ユーザの手も細かな動きを正確に行うには限界があるため、ＭＲ技術において三次元モデルを移動しながら製品設計を行う場合には、結局従来のように情報処理装置に接続された入力デバイスによって移動させるしかなかった。
【０００８】
本発明は、ユーザの視点と三次元モデルとの距離に応じて、適切な移動量で三次元モデルを移動させることの可能な仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために本発明の情報処理システムは、三次元モデルが配置される仮想空間を提示するための情報処理システムであって、前記仮想空間にユーザの視点を設定する視点設定手段と、前記視点設定手段で設定された視点と、前記仮想空間に配置された三次元モデルとの距離を算出する距離算出手段と、前記三次元モデルに対する移動指示を受け付ける移動指示受付手段と、前記移動指示受付手段で受け付けた移動指示が示す移動量を、前記距離算出手段で算出された距離に応じて補正する移動量補正手段と、前記移動量補正手段で補正された移動量を用いて、前記移動指示受付手段で移動指示を受け付けた三次元モデルを移動する三次元モデル移動手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ユーザの視点と三次元モデルとの距離に応じて、適切な移動量で三次元モデルを移動させることが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態における情報処理システムのシステム構成を示す図である。
【図２】情報処理装置１０１とＨＭＤ１０２のハードウェア構成を示す図である。
【図３】情報処理装置１０１のハードウェア構成を示す図である。
【図４】本発明の一連の処理の流れを示すフローチャートである。
【図５】本発明で用いる各種情報を示す図である。
【図６】仮想空間に配置された三次元モデルを示す図である。
【図７】仮想空間に配置された三次元モデルのＸＺ平面を示す図である。
【図８】指先の位置の変化量が補正された結果を示す図である。
【図９】補正された変化量を、視線方向をｚ軸とする座標系に変換した結果を示す図である。
【図１０】最終的に三次元モデルが移動した結果を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、本発明の実施形態について説明する。
【００１３】
図１は、本実施形態における情報処理システムのシステム構成の一例を示す図である。図１に示す情報処理システムは、複合現実感技術（以下、ＭＲ技術という。）を用いた、ユーザに仮想空間を閲覧させるためのシステムである。情報処理システムは、情報処理装置１０１にＨＭＤ１０２が相互にデータ通信可能に接続されている。情報処理装置１０１とＨＭＤ１０２との接続は、有線接続であってもよいし、無線接続であってもよい。尚、図１のシステム上に接続される各種端末の構成は一例であり、用途や目的に応じて様々な構成例がある。
【００１４】
情報処理装置１０１は、汎用的なコンピュータである。情報処理装置１０１は、ＨＭＤ１０２で撮影（撮像）された現実空間の画像（以下、現実空間画像という。）と、情報処理装置１０１で生成された仮想空間の画像（以下、仮想空間画像という。）とを重畳する。こうして生成された画像（以下、複合現実画像という。）を、ＨＭＤ１０２に送信する。尚、ＭＲ技術に関しては従来技術を用いるため、詳細な説明は省略する。また、情報処理装置１０１は、パーソナルコンピュータであってもよいし、サーバのような大型のコンピュータであってもよい。更には、携帯電話やタブレット端末といった携帯端末であってもよい。コンピュータの種類は特に問わない。
【００１５】
ＨＭＤ１０２は、ヘッドマウントディスプレイである。ＨＭＤ１０２は、ユーザの頭部に装着する装置であり、右目用と左目用のビデオカメラと、右目用と左目用のディスプレイを備えている。ＨＭＤ１０２は、ＨＭＤ１０２のビデオカメラで撮影された現実空間画像を情報処理装置１０１に送信する。そして、情報処理装置１０１から複合現実画像を受信し、ディスプレイに表示する。ＨＭＤ１０２では、右目用と左目用のディスプレイを設けているので、視差によって立体感を得ることができる。尚、ＨＭＤ１０２で撮影する現実空間画像とＨＭＤ１０２で表示する複合現実画像は、動画（映像）が望ましいが、所定の間隔で撮影された静止画であってもよい。また、スマートフォンのようにディスプレイとビデオカメラがハードウェアの前面と背面に設置されている装置を、ヘッドマウントディスプレイの代用としてもよい。
【００１６】
また、情報処理装置１０１には赤外線カメラ１０４が接続されている。赤外線カメラ１０４は、赤外線を用いた光学式のセンサである。赤外線カメラ１０４は、現実空間に赤外線を照射し、現実空間の物体で反射した赤外線を撮影することにより、赤外線カメラ１０４が定義する座標系における、現実空間の物体の位置及び姿勢を特定する。この赤外線カメラ１０４を用いて、現実空間におけるＨＭＤ１０２（すなわちユーザ）の位置及び姿勢（向きや傾き、視線の方向等。以下、同じ。）と、ユーザの指先（または手や体の一部）の位置及び姿勢を特定する。ＨＭＤ１０２とユーザの指先には、オプティカルマーカ１０３という赤外線を反射する物体を備えており、赤外線カメラ１０４はこのオプティカルマーカ１０３で反射した赤外線を撮影することで、ＨＭＤ１０２の位置及び姿勢を特定できるようになっている。ユーザがどのような位置や姿勢であっても、当該ユーザが装着するＨＭＤ１０２やユーザの指先のオプティカルマーカ１０３を撮影または検知できるように、ＭＲシステムでは赤外線カメラ１０４を複数台設置することが望ましい。また、位置及び姿勢を特定可能なＨＭＤ１０２とユーザの指先は、赤外線カメラ１０４の撮影範囲に存在するものとして説明を行う。
【００１７】
尚、本実施形態においては、現実空間におけるＨＭＤ１０２及びユーザの指先の位置及び姿勢を特定するために、赤外線カメラ１０４を用いるが、これらの現実空間における位置及び姿勢を特定できるのであれば、これに限らない。例えば、磁気センサを用いてもよいし、ＨＭＤ１０２が撮影した画像を解析して位置及び姿勢を特定してもよい。
【００１８】
図２は、情報処理装置１０１とＨＭＤ１０２の各ハードウェア構成の一例を示す図である。
【００１９】
ＣＰＵ２０１は、システムバス２０４に接続される各デバイスやコントローラを統括的に制御する。
【００２０】
また、ＲＯＭ２０２あるいは外部メモリ２１１には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  ／  ＯｕｔｐｕｔＳｙｓｔｅｍ）やオペレーティングシステムが記憶されている。更には、情報処理装置１０１の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。ＲＡＭ２０３は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。
【００２１】
ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＡＭ２０３にロードして、プログラムを実行することで各種動作を実現するものである。
【００２２】
また、入力コントローラ（入力Ｃ）２０５は、キーボードやマウス等のポインティングデバイス（入力デバイス２１０）からの入力を制御する。
【００２３】
情報処理装置１０１のビデオコントローラ（ＶＣ）２０６は、ＨＭＤ１０２が備える右目・左目ディスプレイ２２２やディスプレイ２１２等の表示器への表示を制御する。右目・左目ディスプレイ２２２に対しては、例えば外部出力端子（例えば、Ｄｉｇｉｔａｌ  Ｖｉｓｕａｌ  Ｉｎｔｅｒｆａｃｅ）を用いて出力される。また、右目・左目ディスプレイ２２２は、右目用のディスプレイと左目用のディスプレイとから構成されている。また、ディスプレイ２１２は、液晶ディスプレイ等であり、右目・左目ディスプレイ２２２と同様の表示、または仮想空間を操作するためのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）が表示される。
【００２４】
メモリコントローラ（ＭＣ）２０７は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶する外部メモリ２１１（記憶手段）へのアクセスを制御する。外部メモリ２１１は、例えばハードディスク（ＨＤ）やフレキシブルディスク（ＦＤ）或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるカード型メモリ等がある。
【００２５】
通信Ｉ／Ｆコントローラ（通信Ｉ／ＦＣ）２０８は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いたインターネット通信等が可能である。特に、情報処理装置１０１の通信Ｉ／Ｆコントローラ２０８は、赤外線カメラ１０４との通信も制御する。
【００２６】
情報処理装置１０１の汎用バス２０９は、情報処理装置１０１に接続されるＨＭＤ１０２の右目・左目ビデオカメラ２２１で撮影した画像を取り込むために使用される。右目・左目ビデオカメラ２２１からは、外部入力端子（例えば、ＩＥＥＥ１３９４端子）を用いて入力される。また、右目・左目ビデオカメラ２２１は、右目用のビデオカメラと左目用のビデオカメラとから構成されている。
【００２７】
尚、ＣＰＵ２０１は、例えばＲＡＭ２０３内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ディスプレイ上での表示を可能としている。また、ＣＰＵ２０１は、ディスプレイ上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【００２８】
本発明の情報処理装置１０１が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ２１１に記録されており、必要に応じてＲＡＭ２０３にロードされることによりＣＰＵ２０１によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ２１１に格納されている。
【００２９】
図３は、情報処理装置１０１の機能構成を示す機能構成図である。尚、図３の情報処理装置１０１の機能構成は一例であり、用途や目的に応じて様々な構成例がある。
【００３０】
情報処理装置１０１は機能部として、通信制御部３０１、位置・姿勢特定部３０２、現実空間画像取得部３０３、仮想空間生成部３０４、仮想空間画像取得部３０５、複合現実画像生成部３０６を備える。更に情報処理装置１０１は機能部として、表示制御部３０７、三次元モデル制御部３０８、視線方向特定部３０９、距離算出部３１０、座標制御部３１１を備える。
【００３１】
通信制御部３０１は、情報処理装置１０１と通信可能なＨＭＤ１０２と赤外線カメラ１０４との各種情報の送受信を行う機能部である。通信制御部３０１は、前述したビデオコントローラ２０６、通信Ｉ／Ｆコントローラ２０８、汎用バス２０９等を通じてこれらの装置と情報の送受信を行う。
【００３２】
位置・姿勢特定部３０２は、赤外線カメラ１０４から取得したＨＭＤ１０２とユーザの指先の現実空間における位置及び姿勢（向き）を示す情報に基づいて、仮想空間における位置及び姿勢を特定するための機能部である。本実施形態では、ＨＭＤ１０２とユーザの指先にオプティカルマーカ１０３が装着されているため、現実空間におけるオプティカルマーカ１０３の位置及び姿勢をまず取得する。そして、現実空間の座標系（赤外線カメラ１０４の座標系）と仮想空間の座標系とはあらかじめキャリブレーション（位置合わせ）がなされているので、これに基づいて現実空間における位置及び姿勢に対応する仮想空間上の位置及び姿勢を特定する。尚、現実空間画像取得部３０３で右目・左目ビデオカメラ２２１から取得した右目用の現実空間画像と左目用の現実空間画像とを用いて、三角測量等の方法により、現実空間の物体の位置及び姿勢を特定してもよい。
【００３３】
現実空間画像取得部３０３は、ＨＭＤ１０２の右目・左目ビデオカメラ２２１で撮影された現実空間画像を取得する機能部である。
【００３４】
仮想空間生成部３０４は、情報処理装置１０１の外部メモリ２１１に記憶されている情報に基づいて仮想空間を生成する機能部である。仮想空間は情報処理装置１０１の内部に生成される仮想的な空間であるので、その空間の形や大きさに関する情報が外部メモリ２１１に記憶されており、これに基づいて仮想空間を生成する。仮想空間には三次元モデルを配置可能である。三次元モデルは三次元モデル制御部３０８によって配置される。
【００３５】
仮想空間画像取得部３０５は、仮想空間生成部３０４で生成した仮想空間の画像を取得する機能部である。仮想空間画像取得部３０５が仮想空間の画像を取得する場合には、位置・姿勢特定部３０２で特定した仮想空間におけるＨＭＤ１０２の位置及び姿勢に基づいて仮想空間上に視点を設定する。そして、当該視点から見た場合の仮想空間画像を生成し、これを取得する。この視点に仮想的なカメラを設置し、仮想空間を撮像するようにすればよい。すなわちレンダリングする。
【００３６】
複合現実画像生成部３０６は、現実空間画像取得部３０３で取得した現実空間画像に仮想空間画像取得部３０５で取得した仮想空間画像を重畳することにより、複合現実画像を生成する機能部である。
【００３７】
表示制御部３０７は、情報処理装置１０１に接続されたＨＭＤ１０２の右目・左目ディスプレイ２２２や情報処理装置１０１に接続されたディスプレイ２１２における各種情報の表示制御を行う機能部である。特に、複合現実画像生成部３０６で生成された複合現実画像をＨＭＤ１０２の右目・左目ディスプレイ２２２に表示させる機能を有する。
【００３８】
三次元モデル制御部３０８は、三次元モデルを仮想空間に配置するための機能部である。仮想空間が生成された場合には、あらかじめ定義された位置及び姿勢で三次元モデルを配置する。必要に応じて、配置された三次元モデルを異なる位置及び姿勢で再配置（移動）する。
【００３９】
視線方向特定部３０９は、位置・姿勢特定部３０２で特定されたＨＭＤ１０２の仮想空間における位置及び姿勢に基づいて、仮想空間上の視点の視線方向を特定するための機能部である。
【００４０】
距離算出部３１０は、仮想空間上の二点間の距離を算出するための機能部である。三平方の定理等を用いて、仮想空間上の座標系における二点間の距離を算出する。
【００４１】
座標制御部３１１は、仮想空間上の座標に関する処理を制御するための機能部である。特に、座標制御部３１１は、位置・姿勢特定部３０２で特定されたＨＭＤ１０２やユーザの指先の座標の変化量を特定したり、座標系の変換を行ったりすることが可能である。
【００４２】
次に、本発明の実施形態における一連の処理の流れについて、図４に示すフローチャートを用いて説明する。以下説明する、Ｓ４０１乃至Ｓ４１５の各ステップは、情報処理装置１０１のＣＰＵ２０１が各機能部を動作することにより実行される処理である。
【００４３】
ステップＳ４０１では、情報処理装置１０１の仮想空間生成部３０４は、外部メモリ２１１に記憶された仮想空間情報を取得する。仮想空間情報とは、仮想空間を生成するための各種情報のことである。具体的には、仮想空間の形やその大きさ、また配置する三次元モデルやその配置場所といった、仮想空間を形作るために必要な情報である。そして、仮想空間生成部３０４は、取得した仮想空間情報を用いて、仮想空間を生成する。生成される仮想空間は、仮想空間情報が示す形や大きさの仮想空間であり、更には仮想空間情報が示す三次元モデルが仮想空間上に配置される。
【００４４】
ステップＳ４０２では、情報処理装置１０１の現実空間画像取得部３０３は、ＨＭＤ１０２の右目・左目ビデオカメラ２２１から現実空間画像を取得し、これらをＲＡＭ２０３に記憶する。
【００４５】
ステップＳ４０３では、情報処理装置１０１の位置・姿勢特定部３０２は、ＨＭＤ１０２の現実空間における位置及び姿勢を示す情報を取得する。前述した通り、ＨＭＤ１０２が備えるオプティカルマーカ１０３−１を赤外線カメラ１０４が検知することで特定した位置及び姿勢を示す情報を、赤外線カメラ１０４から取得する。そして、位置・姿勢特定部３０２は、取得した位置及び姿勢を示す情報から仮想空間における位置及び姿勢を特定する。特定した位置及び姿勢は、ＨＭＤ位置・姿勢情報５００（図５参照）としてＲＡＭ２０３に記憶する。この情報は現在のフレームにおけるＨＭＤ１０２の位置及び姿勢であるので、フレームが切り替わるごとにこの情報が更新される。
【００４６】
またステップＳ４０４では、情報処理装置１０１の位置・姿勢特定部３０２は、ユーザの指先の現実空間における位置及び姿勢を示す情報を取得し、これをＲＡＭ２０３に記憶する。前述した通り、ユーザの指先にもオプティカルマーカ１０３−２が装着されており、これを赤外線カメラ１０４が検知することで特定した位置及び姿勢を示す情報を、赤外線カメラ１０４から取得する。そして、位置・姿勢特定部３０２は、取得した位置及び姿勢を示す情報から仮想空間における位置及び姿勢を特定する。特定した位置及び姿勢は、指先位置・姿勢情報５１０（図５参照）としてＲＡＭ２０３に記憶する。この情報は現在のフレームにおけるユーザの指先の位置及び姿勢であるので、フレームが切り替わるごとにこの情報が更新される。特に、１フレーム前の情報については、図５の５１１に示すように別の情報としてＲＡＭ２０３に記憶しておく。
【００４７】
ステップＳ４０５では、情報処理装置１０１の視線方向特定部３０９は、ステップＳ４０３で特定した仮想空間におけるＨＭＤ１０２の位置及び姿勢に基づいて、仮想空間上にユーザの視点を設定し（視点設定手段）、この視点から見た視線方向を特定する。そして、視線方向の直線上に存在する三次元モデルのうち、最も視点に近い位置にある三次元モデルを特定する。この三次元モデルを移動対象の三次元モデルとして設定する。また、移動対象の三次元モデルの配置位置に関する情報を、三次元モデル配置位置５２０（図５参照）として、ＲＡＭ２０３に記憶しておく。
【００４８】
ステップＳ４０６では、情報処理装置１０１の三次元モデル制御部３０８は、ステップＳ４０４で特定したユーザの指先の位置と、ステップＳ４０５で特定された移動対象の三次元モデルの位置とを比較し、ユーザの指先が三次元モデルに触れたか否かを判定する。本実施形態は、ユーザの指先によって三次元モデルを仮想的に押すことで、仮想空間上の三次元モデルの位置を移動できるものである。そのため、ステップＳ４０６では、ユーザの指先による三次元モデルの移動指示を受け付けて、移動指示があったか否か、すなわち三次元モデルが押されたか否かを判定している。三次元モデルに指先が触れたと判定した場合には、ステップＳ４０７に処理を進める。
【００４９】
ステップＳ４０７では、情報処理装置１０１の距離算出部３１０は、ステップＳ４０３で特定したＨＭＤ１０２（視点）の仮想空間上における位置と、移動対象の三次元モデルの位置との距離を算出する（距離算出手段）。
【００５０】
図６に本実施形態を説明するための仮想空間の一例を示す。図６に示す仮想空間には、三次元モデル６００が配置されており、この三次元モデル６００に対して指先６０１が接触すると、三次元モデル６００が移動対象となる（移動指示受付手段）。また、この仮想空間においては、ＨＭＤ１０２の位置及び姿勢から視点６０２が設定されている。図６に示す仮想空間の平面図（上面図）が図７である。図６と同じものについては、同じ符号を付与してある。図７以降の図についても同様である。ステップＳ４０７で算出する視点６０２と三次元モデル６００との距離は、７０１に示す距離である。本実施形態では、視点から、当該視点に最も近い三次元モデルの表面までの距離を算出するものとして説明を行うが、特にこれに限らない。視点から三次元モデルの中心点までの距離を算出してもよいし、三次元モデルを構成する線分や面といったいずれかの要素までの距離を算出してもよい。
【００５１】
ステップＳ４０８では、情報処理装置１０１の座標制御部３１１は、ステップＳ４０６で三次元モデルに触れていると判定された指先の位置の変化量を算出する。ここでいう変化量とは、１フレームの間に移動した量（図７の移動量７０２）のことである。現在のフレームの指先位置・姿勢情報５１０と１フレーム前の指先位置・姿勢情報５１１とを用いて、ｘ、ｙ、ｚ座標ごとに変化量を求める。より具体的には、１フレーム前の位置と現在のフレームの位置との差を求めればよい。すなわち、図５の例でいうと、「ｘ座標の変化量＝ｘ３−ｘ２」、「ｙ座標の変化量＝ｙ３−ｙ２」、「ｚ座標の変化量＝ｚ３−ｚ２」となる。
【００５２】
ステップＳ４０９では、情報処理装置１０１の座標制御部３１１は、ステップＳ４０８で算出したｘ、ｙ、ｚ座標ごとの変化量を、ステップＳ４０７で算出した距離に応じてそれぞれ補正する（移動量補正手段）。ここで実行される補正は、ステップＳ４０７で算出した距離が短ければ短いほど、変化量を小さくするように補正する。ユーザが三次元モデルの位置を細かく移動させたい場合は、三次元モデルに視点を近づけて操作することが多い。これは、遠くから見ると細かな移動が視認しづらいためである。よって、近くで見ている場合には、ユーザが指示した移動量（変化量）よりも小さくなるように補正を行う。
【００５３】
具体的な補正の方法は様々だが、例えば、ＨＭＤ１０２（視点）と三次元モデルとの距離が３０ｃｍ以上ある場合には補正をせず、１５ｃｍ以上３０ｃｍ未満の場合には変化量に０．５を積算して補正する。また、１５ｃｍ未満の場合には変化量に０．１を積算して補正するといったように、閾値を設けて、算出した距離がどの閾値の条件に合致するのかによって補正する値を決定してもよい。または、距離と補正に用いる値が反比例するような式を用意し、この式を用いて補正に用いる値を決定し、この値と距離とを積算することで、変化量を補正してもよい。こうして補正した結果を図８に示す。図８の８０１の変化量は、図７の７０２の変化量を補正した結果を示す。ＨＭＤ１０２（視点）と三次元モデルとの距離が近いため、変化量が小さくなるように補正されていることがわかる。
【００５４】
ステップＳ４１０では、情報処理装置１０１の座標制御部３１１は、ステップＳ４０９で補正したｘ、ｙ、ｚ座標の変化量を、仮想空間における視点を原点とする座標系における変化量に変換する。視点の視線方向（奥行き方向）をｚ軸とし、視点に対する左右方向をｘ軸、視点に対する上下方向をｙ軸の座標系を新たに定義し、仮想空間の座標系から視点の座標系に座標変換する。座標変換の方法は従来技術であるため詳細な説明は省略する。図９は、視点の座標系と仮想空間の座標系との関係を示す図である。この視点６０２の座標系における変換後の変化量は、ｘ座標の変化量が９０１、ｚ座標の変化量が９０２となる。尚、指先がｘｚ平面に対して平行に移動していると仮定し、ここではｙ座標の変化量については考慮しないが、ステップＳ４１０では視点の座標系におけるｙ座標の変化量も求める。
【００５５】
ステップＳ４１１では、情報処理装置１０１の三次元モデル制御部３０８は、ステップＳ４１０で視点の座標系に変換した変化量のうち、ｚ座標以外の変化量を用いて、移動対象の三次元モデルを移動させる（三次元モデル移動手段）。つまり、ｘ座標の変化量とｙ座標の変化量とを用いて、同対象の三次元モデルを移動させる。奥行き方向に対する移動というのは、距離感覚を掴みにくい問題があり、正確に物体を移動させられない。そのため、視点から見て上下左右方向にのみ移動を制限することで、誤って奥行き方向に移動させないようにしている。
【００５６】
図１０は、ステップＳ４１１の実行結果を示す図である。移動対象の三次元モデル６００を指先で押すと、視点と三次元モデルとの距離に応じて変化量が補正され、ｚ座標以外の変化量によって三次元モデル６００を移動するので、１００１に示す位置から図１０の三次元モデル６００が存在する位置に移動する。つまり、この場合には視点の座標系におけるｚ軸方向には三次元モデルは移動させず、視点のｘ軸方向にだけ三次元モデルが移動するように制御する。このようにすることで、奥行き方向に対して三次元モデルを誤って移動させてしまうことが抑止できる。
【００５７】
ステップＳ４１２では、情報処理装置１０１の仮想空間画像取得部３０５は、仮想空間上に設定された視点から仮想空間を撮像することにより仮想空間画像を取得し、これをＲＡＭ２０３等に記憶する（仮想空間画像生成手段）。尚、ＨＭＤ１０２の右目・左目ディスプレイ２２２のそれぞれに表示するために右目用の仮想空間画像と左目用の仮想空間画像の２枚を取得する。
【００５８】
ステップＳ４１３では、情報処理装置１０１の複合現実画像生成部３０６は、ステップＳ４０２で取得した現実空間画像とステップＳ４１２で取得した仮想空間画像とをＲＡＭ２０３等から読み出す。そして、当該現実空間画像に当該仮想空間画像を重畳し、複合現実画像を生成する。生成した複合現実画像はＲＡＭ２０３等に記憶する。尚、前述した通り、現実空間画像と仮想空間画像とは右目用と左目用の２枚ずつがＲＡＭ２０３等に記憶されているので、右目用の現実空間画像に右目用の仮想空間画像を重畳し、左目用の現実空間画像に左目用の仮想空間画像を重畳する。
【００５９】
ステップＳ４１４では、情報処理装置１０１の表示制御部３０７は、ステップＳ４１３で生成した複合現実画像をＲＡＭ２０３等から読み出し、ビデオコントローラ２０６を通じてＨＭＤ１０２の右目・左目ディスプレイ２２２に表示する。ＲＡＭ２０３等に記憶された複合現実画像は、右目用と左目用の２枚が存在する。そのため、右目用の複合現実画像を右目・左目ディスプレイ２２２の右目のディスプレイに表示するよう制御し、左目用の複合現実画像を右目・左目ディスプレイ２２２の左目のディスプレイに表示するよう制御する。
【００６０】
ステップＳ４１５では、情報処理装置１０１の表示制御部３０７は、ＨＭＤ１０２を装着しているユーザに複合現実感を提示する処理の終了指示があったか否かを判定する。例えば、前述したステップＳ４０１乃至ステップＳ４１５の処理を実行する情報処理装置１０１のアプリケーションの停止指示や終了指示があったか否かを判定する。終了指示があったと判定した場合には、本一連の処理を終了する。終了指示があったと判定しなかった場合、すなわち終了指示がなかった場合にはステップＳ４０２に処理を戻し、終了指示があるまでステップＳ４０２乃至ステップＳ４１５の処理を繰り返す。
【００６１】
以上説明したように、ユーザの視点と三次元モデルとの距離に応じて、適切な移動量で三次元モデルを移動させることが可能となる。
【００６２】
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、１つの機器からなる装置に適用してもよい。
【００６３】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【００６４】
したがって、本発明の機能処理をコンピュータで実現（実行可能と）するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００６５】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００６６】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【００６７】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【００６８】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００６９】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００７０】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００７１】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【００７２】
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００７３】
１０１  情報処理装置
１０２  ＨＭＤ
１０３  オプティカルマーカ
１０４  赤外線カメラ
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  システムバス
２０５  入力コントローラ
２０６  ビデオコントローラ
２０７  メモリコントローラ
２０８  通信Ｉ／Ｆコントローラ
２０９  汎用バス
２１０  入力デバイス
２１１  外部メモリ
２１２  ディスプレイ
２２１  右目・左目ビデオカメラ
２２２  右目・左目ディスプレイ
【図１】
0006744543.tif 000002
【図２】
0006744543.tif 000003
【図３】
0006744543.tif 000004
【図４】
0006744543.tif 000005
【図５】
0006744543.tif 000006
【図６】
0006744543.tif 000007
【図７】
0006744543.tif 000008
【図８】
0006744543.tif 000009
【図９】
0006744543.tif 000010
【図１０】
0006744543.tif 000011