(57)【要約】【課題】  仮想現実空間もしくは複合現実空間中において、一定の範囲で自由に変形可能な素材を含む仮想物体の干渉状態を簡便にユーザに提示する為の技術を提供すること。【解決手段】  包含物体モデル４０４、仮想物体に関連付けられた第１領域を仮想空間中に配置すると共に、第ｎ領域に包含される第（ｎ＋１）領域を設定する処理を、ｎ＝１〜（Ｎ−１）（Ｎ≧２）について行う（Ｓ１０１０）。そして、第１乃至Ｎの領域のそれぞれと、箱モデル４０２との干渉の有無を判定し（Ｓ１０７０）、干渉してると判定した場合には、干渉している旨を報知する（Ｓ１０９０）。【選択図】  図８
2007179483.tif 000002
【特許請求の範囲】
【請求項１】
第１の仮想物体と第２の仮想物体との干渉の状況を判断するための情報処理方法であって、
前記第１の仮想物体に関連付けて複数の領域を設定する設定工程と、
前記複数の領域と第２の仮想物体との干渉を判定する判定工程と、
前記判定工程で干渉してると判定された領域から、前記第１の仮想物体と第２の仮想物体との干渉の状況を判断する判断工程と
を備えることを特徴とする情報処理方法。
【請求項２】
前記干渉の状況は、干渉の度合いであることを特徴とする請求項１に記載の情報処理方法。
【請求項３】
更に、
前記判断された干渉の状況を、ユーザに報知する報知工程を備えることを特徴とする請求項１に記載の情報処理方法。
【請求項４】
更に、
前記判断された干渉の状況に応じて、前記第１の仮想物体の形状を変化させる変化工程を備えることを特徴とする請求項１に記載の情報処理方法。
【請求項５】
前記第１の仮想物体は、第３の仮想物体を梱包し、一定の範囲で自由に変形可能な梱包材を模したものであることを特徴とする請求項１に記載の情報処理方法。
【請求項６】
前記変化工程では、
前記判定工程で干渉していると判定した場合には、前記第１の仮想物体を、前記第２の仮想物体との干渉面の法線方向に対して圧縮変形させることを特徴とする請求項４に記載の情報処理方法。
【請求項７】
更に、現実空間の画像を取得する工程と、
前記現実空間の画像上に、仮想空間の画像を重畳させた合成画像を生成し、当該生成した合成画像を表示装置に対して出力する出力工程と
を備えることを特徴とする請求項１乃至６の何れか１項に記載の情報処理方法。
【請求項８】
前記報知工程で行う報知を表示により行う場合、
前記出力工程では、前記合成画像上に更に干渉している旨を示すメッセージを重畳させることを特徴とする請求項７に記載の情報処理方法。
【請求項９】
更に、外部からの指示に応じて、前記第１の仮想物体が包含している操作対象仮想物体の位置姿勢を変更する変更工程を備え、
前記変更工程では更に、前記操作対象仮想物体の位置姿勢が変更されれば、前記第１の仮想物体と前記操作対象仮想物体との位置姿勢関係を保ったまま、前記第１の仮想物体の位置姿勢も変更することを特徴とする請求項１に記載の情報処理方法。
【請求項１０】
視点に応じた仮想画像を生成する情報処理方法であって、
第１の仮想物体を仮想空間中に配置する工程と、
前記第１の仮想物体に関連付けて複数の領域を設定する第１の設定工程と、
第２の仮想物体を前記仮想空間中に配置する工程と、
前記第２の仮想物体に関連付けて複数の領域を設定する第２の設定工程と、
前記第１の設定工程で設定したそれぞれの領域と、前記第２の設定工程で設定したそれぞれの領域との干渉の有無を判定する判定工程と、
前記判定工程で干渉していると判定した場合には、干渉している旨を報知する報知工程と
を備えることを特徴とする情報処理方法。
【請求項１１】
第１の仮想物体と第２の仮想物体との干渉の状況を判断するための情報処理装置であって、
前記第１の仮想物体に関連付けて複数の領域を設定する設定手段と、
前記複数の領域と第２の仮想物体との干渉を判定する判定手段と、
前記判定手段が干渉してると判定された領域から、前記第１の仮想物体と第２の仮想物体との干渉の状況を判断する判断手段と
を備えることを特徴とする情報処理装置。
【請求項１２】
視点に応じた仮想画像を生成する情報処理装置であって、
第１の仮想物体を仮想空間中に配置する手段と、
前記第１の仮想物体に関連付けて複数の領域を設定する第１の設定手段と、
第２の仮想物体を前記仮想空間中に配置する手段と、
前記第２の仮想物体に関連付けて複数の領域を設定する第２の設定手段と、
前記第１の設定手段によって設定したそれぞれの領域と、前記第２の設定手段によって設定したそれぞれの領域との干渉の有無を判定する判定手段と、
前記判定手段が干渉していると判定した場合には、干渉している旨を報知する報知手段と
を備えることを特徴とする情報処理装置。
【請求項１３】
コンピュータに請求項１乃至１０の何れか１項に記載の情報処理方法を実行させるためのプログラム。
【請求項１４】
請求項１２に記載のプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間中に配置した仮想物体を取り扱うための技術に関するものである。
【背景技術】
【０００２】
仮想空間中に配置された仮想物体を操作することで様々なシミュレーションを行う仮想現実感システムが、バーチャル・リアリティの分野において盛んに提案されている。例えば非特許文献１では、ユーザ（使用者）が、仮想のシステムキッチン内に存在する扉の開閉や、蛇口の操作を体験することができると開示している。このような仮想現実感システムでは、ユーザの頭部の動きに合わせてコンピュータグラフィックス（ＣＧ：Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）で描画した仮想空間の映像を生成し、ヘッドマウントディスプレイ（ＨＭＤ：Ｈｅａｄ−Ｍｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ）などの表示装置に表示する、これにより、仮想現実感映像をシステムのユーザ（使用者）に提示する。
【０００３】
また、現実空間と仮想空間とを違和感なく自然に合成する複合現実感（ＭＲ：Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）の技術を応用したシステムも盛んに提案されている。このような複合現実感システムでは、カメラなどの撮像装置によって撮影した現実空間の映像に対し、ユーザの頭部の動きに合わせてＣＧで描画した仮想空間の映像を合成し、ＨＭＤ等の表示装置に表示する。これにより、複合現実感映像をシステムのユーザ（使用者）に提示する。
【０００４】
一方、仮想物体同士の干渉状態（お互いの仮想物体同士がどのような位置関係で干渉している／干渉していないか）をシミュレーションする技術についても提案がなされている。例えば、非特許文献２では、仮想物体を取り囲むバウンディングボックスと呼ばれる仮想の立体を生成し、バウンディングボックス同士が干渉（Ｉｎｔｅｒｓｅｃｔｉｏｎ）しているか否かを判定する。そして、干渉している場合はさらに詳細に判定を行うことで、仮想物体の干渉状態を効率的に判定する技術が開示されている。
【０００５】
近年、製品の試作工程の確認作業を、現実のモックアップを製造することなく、仮想現実感技術、若しくは複合現実感技術を利用したシミュレーションによって簡便に実現する試作レスシステムが注目されている。この試作レスシステムの例としては、設計段階のカメラや複写機のＣＡＤデータをもとに、それらの仮想物体をＨＭＤに表示することで、頭部位置に追従させて実際の大きさを確認するものが挙げられる。また他の例として、複写機のカートリッジを工場間で搬送するための箱（通い箱）の大きさをシミュレーションするものが挙げられる。
【０００６】
この通い箱の例では、複写機のカートリッジを梱包材で包み、箱に詰める作業をシミュレーションする必要がある。このとき、梱包材の部分は、梱包材の素材によっては箱との干渉時に一定の範囲で伸縮する。しかし、従来技術として述べたバウンディングボックスを利用した方法では、固体の物体（Ｓｏｌｉｄ  Ｏｂｊｅｃｔ）同士の干渉状態しかユーザに提示することはできない。このように少なくとも一方が一定の範囲で自由に伸縮可能な仮想物体の干渉状態を、ユーザに提示することができず、改善が求められていた。
【０００７】
また、特許文献１では、２つの仮想物体が干渉したときに、仮想物体の面、稜線、頂点の座標を、その仮想物体が膨張または縮小する方向へ移動させる技術が開示されている。
【非特許文献１】「今村，野村，大畑：仮想空間意思決定支援システムＶＳＤＳＳとそのショウルームへの応用，ヒューマンインタフェースシンポジウム（１９９１．１０），ｐｐ．２０３−２０８」
【非特許文献２】「Ｒｅａｌ−Ｔｉｍｅ  Ｒｅｎｄｅｒｉｎｇ  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ（Ｔｏｍａｓ  Ａｋｅｎｉｎｅ−Ｍｏｌｌｅｒ，Ｅｒｉｃ  Ｈａｉｎｅｓ著．Ａ Ｋ Ｐｅｔｅｒｓ， Ｌｔｄ．），Ｃｈａｐｔｅｒ．１３−１４」
【特許文献１】特開平１−２９２４７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、上記特許文献１に開示されている技術を用いても、上記で述べたような一定の範囲で自由に伸縮する仮想物体の干渉状態をユーザに提示することはできなかったため、改善が求められていた。
【０００９】
本発明は以上の問題に鑑みてなされたものであり、仮想現実空間もしくは複合現実空間中において、一定の範囲で自由に変形可能な素材を含む仮想物体の干渉状態を簡便にユーザに提示する為の技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【００１１】
即ち、第１の仮想物体と第２の仮想物体との干渉の状況を判断するための情報処理方法であって、
前記第１の仮想物体に関連付けて複数の領域を設定する設定工程と、
前記複数の領域と第２の仮想物体との干渉を判定する判定工程と、
前記判定工程で干渉してると判定された領域から、前記第１の仮想物体と第２の仮想物体との干渉の状況を判断する判断工程と
を備えることを特徴とする。
【００１２】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【００１３】
即ち、視点に応じた仮想画像を生成する情報処理方法であって、
第１の仮想物体を仮想空間中に配置する工程と、
前記第１の仮想物体に関連付けて複数の領域を設定する第１の設定工程と、
第２の仮想物体を前記仮想空間中に配置する工程と、
前記第２の仮想物体に関連付けて複数の領域を設定する第２の設定工程と、
前記第１の設定工程で設定したそれぞれの領域と、前記第２の設定工程で設定したそれぞれの領域との干渉の有無を判定する判定工程と、
前記判定工程で干渉していると判定した場合には、干渉している旨を報知する報知工程と
を備えることを特徴とする。
【００１４】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【００１５】
即ち、第１の仮想物体と第２の仮想物体との干渉の状況を判断するための情報処理装置であって、
前記第１の仮想物体に関連付けて複数の領域を設定する設定手段と、
前記複数の領域と第２の仮想物体との干渉を判定する判定手段と、
前記判定手段が干渉してると判定された領域から、前記第１の仮想物体と第２の仮想物体との干渉の状況を判断する判断手段と
を備えることを特徴とする。
【００１６】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【００１７】
即ち、視点に応じた仮想画像を生成する情報処理装置であって、
第１の仮想物体を仮想空間中に配置する手段と、
前記第１の仮想物体に関連付けて複数の領域を設定する第１の設定手段と、
第２の仮想物体を前記仮想空間中に配置する手段と、
前記第２の仮想物体に関連付けて複数の領域を設定する第２の設定手段と、
前記第１の設定手段によって設定したそれぞれの領域と、前記第２の設定手段によって設定したそれぞれの領域との干渉の有無を判定する判定手段と、
前記判定手段が干渉していると判定した場合には、干渉している旨を報知する報知手段と
を備えることを特徴とする。
【発明の効果】
【００１８】
本発明の構成により、仮想現実空間もしくは複合現実空間中において、一定の範囲で自由に変形可能な素材を含む仮想物体の干渉状態を簡便にユーザに提示することができる。
【発明を実施するための最良の形態】
【００１９】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００２０】
［第１の実施形態］
図１は、本実施形態に係るシステムのハードウェア構成を示すブロック図である。同図に示す如く、本実施形態に係るシステムは、コンピュータ１００、頭部装着部２００、スタイラス３０２、センサ制御装置３０３により構成されている。
【００２１】
先ず、コンピュータ１００について説明する。コンピュータ１００は、同図に示す如く、ＣＰＵ１０１、ＲＡＭ１０２、画像出力装置１０３、ディスク装置１０５、入力装置１０６、画像入力装置１０７、システムバス１０４により構成されている。
【００２２】
ＣＰＵ１０１は、ＲＡＭ１０２に保持されているプログラムやデータを用いてコンピュータ１００全体の制御を行うと共に、コンピュータ１００が行う後述の各処理を実行する。更に、ＣＰＵ１０１はシステムバス１０４に接続されており、ＲＡＭ１０２、画像出力装置１０３、ディスク装置１０５、入力装置１０６、画像入力装置１０７と相互に通信することができる。
【００２３】
ＲＡＭ１０２は、ディスク装置１０５からロードされたプログラムやデータ、入力装置１０６を介してセンサ制御装置３０３から受信した位置姿勢情報、ボタン操作情報を一時的に記憶するためのエリアを提供する。更に、ＣＰＵ１０１が各処理を実行する際に用いるワークエリアも適宜提供する。なお、本実施形態では、ＲＡＭ１０２内には、画像データを一時的に記憶するためのビデオバッファーを設けており、画像の描画は、このビデオバッファに対して行われるものとする。なお、ビデオバッファーはディスク装置１０５内に設けるようにしても良いし、設ける箇所は特に限定するものではない。
【００２４】
画像出力装置１０３は、グラフィックスカードなどの機器によって実現される。また一般的に、グラフィックスカードにはグラフィックスメモリが備わっている。ＣＰＵ１０１による後述の各処理でもって生成した画像情報は、システムバス１０４を介してこのグラフィックスメモリ内に転送される。画像出力装置１０３は、このグラフィックスメモリ内に転送された画像情報を適切な画像信号に変換し、頭部装着部２００が有する表示装置２０１に対して出力する。なお、グラフィックスメモリは必ずしも画像出力装置１０３が有することに限定するものではなく、例えば、ＲＡＭ１０２内に設けるようにしても良い。
【００２５】
ディスク装置１０５は、ＯＳ（オペレーティングシステム）や、コンピュータ１００が行う後述の各処理をＣＰＵ１０１に実行させるためのプログラムやデータを保存するものである。これらはＣＰＵ１０１による制御に従って適宜ＲＡＭ１０２にロードされ、ＣＰＵ１０１による処理対象となる。なお、ディスク装置１０５が保持するデータには、後述の説明において「既知のデータ」として扱っているものも含む。
【００２６】
入力装置１０６は、センサ制御装置３０３から送出された位置姿勢情報、ボタン操作情報を受けるためのインターフェースとして機能するものである。受けたこれらの情報はＣＰＵ１０１による制御に従ってＲＡＭ１０２、若しくはディスク装置１０５に送出される。
【００２７】
画像入力装置１０７は、キャプチャカードなどの機器によって構成されるものであり、頭部装着部２００が有する撮像装置２０２から送出された各フレームの画像（現実空間の撮像画像）を受けるためのインターフェースとして機能するものである。受けた各フレームの画像のデータはＣＰＵ１０１による制御に従って順次、ＲＡＭ１０２、若しくはハードディスク１２０４に送出される。
【００２８】
なお、頭部装着部２００が有する表示装置２０１に光学シースルー型の表示装置を用いる場合や、頭部装着部２００として現実映像を必要としない没入型の装置を用いる場合には、画像入力装置１０７は具備しなくてもよい。
【００２９】
システムバス１０４は、上述の各部を繋ぐものである。
【００３０】
次に、頭部装着部２００について説明する。頭部装着部２００は同図に示す如く、表示装置２０１、撮像装置２０２、センサ３０１により構成されている。表示装置２０１は、頭部装着部２００を頭部に装着したユーザの眼前に位置するように頭部装着部２００に取り付けられている。上述の通り、この表示装置２０１には、コンピュータ１００から画像が送出されるので、表示装置２０１はこの画像を表示することになる。これにより、このユーザは眼前にこの画像を観察することができる。
【００３１】
撮像装置２０２は、ＣＣＤカメラ等の撮像デバイスを１以上備えるものであり、現実空間の動画像を撮像するものである。撮像した各フレームの画像（現実空間の撮像画像）は順次上記画像入力装置１０７に送出される。撮像した各フレームの画像は、例えば、アナログ信号、若しくはＩＥＥＥ１３９４規格のデジタル信号等である。
【００３２】
なお、この撮像装置２０２は、現実空間を観察する視点として用いるので、頭部装着部２００を頭部に装着するユーザの目の位置に近い箇所に取り付けることが好ましい。しかし、ユーザの目から見た現実空間の画像を取得することができるのであれば、その目的を達成するための手段については特に限定するものではない。例えば、ハーフミラーやプリズムなどを用いて撮像装置２０２の光軸と、表示装置２０１の中心軸とを一致させるようにしても良い。
【００３３】
また、表示装置２０１に光学シースルー型の表示装置を用いる場合、ユーザは表示装置２０１を通して現実空間を観察することになるため、撮像装置２０２は具備しなくてよい。また、頭部装着部２００に現実映像を必要としない没入型の装置を用いる場合にも、撮像装置２０２は具備しなくてよい。
【００３４】
また、表示装置２０１は必ずしもユーザが装着する必要はない。即ち、ユーザが画像を観察可能な構成であれば、例えば、据え置き型のディスプレイ装置をこの表示装置２０１として用いても良いし、手持ち型のディスプレイを用いてもよい。
【００３５】
センサ３０１は、自身の位置姿勢を計測するものであり、計測結果はセンサ制御装置３０３に送出する。計測するための手段については様々なものが考えられ、特に限定するものではない。本実施形態では、センサ３０１でもって、撮像装置２０２の位置姿勢を計測するので、このセンサ３０１は、撮像装置２０２の位置近傍に取り付けることが好ましい。しかし、予めセンサ３０１と撮像装置２０２との位置姿勢関係を測定し、データとしてコンピュータ１００側で管理しておけば、センサ３０１は別段、撮像装置２０２の位置近傍に取り付ける必要はない。これは、センサ３０１の計測値にこの位置姿勢関係を加算することで撮像装置２０２の位置姿勢を求めることができるからである。
【００３６】
なお、本実施形態では、頭部装着部２００はユーザが頭部に装着することを前提としているが、ユーザが複合現実感を体験できる形態であれば、頭部装着部２００は必ずしもユーザが装着する必要はない。
【００３７】
次に、スタイラス３０２について説明する。スタイラス３０２は、ペンに似た形状をしたデバイスであり、ユーザが手に持って使用する。図２はスタイラス３０２の外観の一例を示す図である。同図に示す如く、スタイラス３０２に備わっている位置姿勢センサ３５０は自身の位置姿勢を計測し、計測結果をセンサ制御装置３０３に送出する。なお、本実施形態では、スタイラス３０２の先端部分（同図鋭角部分）の位置姿勢を取得すべく、位置姿勢センサ３５０をスタイラス３０２の先端部分に取り付けるようにする。しかし、スタイラス３０２の先端部分の位置姿勢を取得することができるのであれば、これに限定するものではない。
【００３８】
以下の説明では、スタイラス３０２の先端部分の位置姿勢を「スタイラス３０２の位置姿勢」とする。ここで、スタイラス３０２の姿勢とは、同図点線で示すように、スタイラス３０２の軸の向きを示す。また、スタイラス３０２には操作ボタン３０４が備わっており、押下／非押下を示す信号もまたセンサ制御装置３０３に送出する。
【００３９】
次に、センサ制御装置３０３について説明する。センサ制御装置３０３は、上記センサ３０１から送出された位置姿勢を示す信号を受け、これに基づいてセンサ３０１の位置姿勢を求め、位置姿勢情報として上記入力装置１０６に送出する。また、センサ制御装置３０３は、位置姿勢センサ３５０から送出された位置姿勢を示す信号を受け、これに基づいてスタイラス３０２の位置姿勢を求め、位置姿勢情報として上記入力装置１０６に送出する。また、操作ボタン３０４の押下／非押下を示す信号を受け、これをボタン操作情報として上記入力装置１０６に送出する。
【００４０】
ここで、センサ３０１、センサ制御装置３０３、スタイラス３０２はセンサ部３００を構成している。センサ部３００は、位置姿勢を計測するための構成をまとめたもので、６自由度の位置姿勢計測装置によって実現される。ここで、センサ３０１、センサ制御装置３０３でもって、センサ３０１の位置姿勢を求める場合について説明する。この説明は、スタイラス３０２、センサ制御装置３０３を用いてスタイラス３０２の位置姿勢を求める場合も同じである。
【００４１】
センサ部３００として磁気センサを用いた場合、現実空間中の既知の位置に磁気の発信源を設ける。センサ３０１は自身の位置姿勢に応じた磁気を検知し、検知した結果をセンサ制御装置３０３に送出する。センサ制御装置３０３は、受けた検知結果に基づいて、センサ３０１の位置姿勢を求める。この位置姿勢は、磁気の発信源の位置を原点とし、この原点で互いに直交する３軸をそれぞれｘ軸、ｙ軸、ｚ軸とする座標系（センサ座標系）におけるものである。このようにして、センサ３０１の位置姿勢を求めることができる。なお、周知の技術を用いれば、このセンサ座標系における位置姿勢を任意の座標系におけるものとすることもでき、必要であれば適宜行えばよい。
【００４２】
尚上述の通り、スタイラス３０２に備わっているセンサ３５０の位置姿勢を求める場合についても、同様の処理を行えばよい。また、この位置姿勢計測方法は一例であり、周知の通り、様々な方法が考えられる。
【００４３】
次に、形状を適宜変更可能な仮想物体（梱包物体モデル）でもって包まれた仮想物体（操作物体モデル）を、ユーザがスタイラス３０２を用いて移動操作し、箱の仮想物体（箱モデル）に収納する場合に、上記システムが行う処理について説明する。
【００４４】
ここでこれらの仮想物体が存在する仮想空間における座標系と、現実空間中に設けている座標系とは、一致させておくことが好ましい。即ち、このようにすることで、ある現実物体の位置姿勢が分かった場合、その位置姿勢の値と同じ仮想空間中の位置姿勢の値を持つ仮想物体は、現実物体と重なることになる。また、現実物体と仮想物体との関係が逆の場合でも同じことである。仮想空間の座標系と現実空間との座標系を合わせる技術については、従来から多くの取り組みが行われている。例えば特開２００２−２２９７３０号公報、特開２００３−２６９９１３号公報等に開示されている技術を用いれば、現実空間と仮想空間とを正確に整合させるための位置合わせを実現することができる。
【００４５】
図３は、梱包物体モデルでもって梱包された操作物体モデルを、ユーザがスタイラス３０２を用いて移動操作し、箱モデルに収納する場合に、上記コンピュータ１００が行う処理のフローチャートである。なお、同図のフローチャートに従った処理をＣＰＵ１０１に実行させるためのプログラムやデータはディスク装置１０５に保存されている。そしてこのプログラムやデータはＣＰＵ１０１による制御に従って適宜ＲＡＭ１０２にロードされる。ＣＰＵ１０１はこのロードされたプログラムやデータを用いて処理を行うことで、コンピュータ１００は以下説明する各処理を実行することになる。
【００４６】
先ず、コンピュータ１００は以下説明する各処理を実行するための各種の初期化処理を行う（ステップＳ１０００）。例えば、以下の処理で用いる変数の初期化などである。
【００４７】
次に、操作物体モデル、箱モデル、梱包物体モデル、を仮想空間中の予め定められた位置姿勢に配置すると共に、梱包物体モデルを更に包含する２つの領域（バウンディングボックス）を配置する（ステップＳ１０１０）。
【００４８】
図４は、操作物体モデル、梱包物体モデル、バウンディングボックスを示す図である。同図において４０３は操作物体モデルで、ユーザがスタイラス３０２を用いてその位置や姿勢を操作する対象となるモデルである。
【００４９】
４０４は梱包物体モデルであり、同図中央に示す如く、操作物体モデル４０３を梱包（包含）している。梱包物体モデル４０４は操作物体モデル４０３を包含するべく配置されるものであるので、ユーザがスタイラス３０２を用いて操作物体モデル４０３の位置姿勢を変更すると、それに追従して梱包物体モデル４０４の位置姿勢も変化する。即ち、操作物体モデル４０３の位置姿勢が変化しても、操作物体モデル４０３と梱包物体モデル４０４との位置姿勢関係は保ったままとなる。
【００５０】
ここで、梱包物体モデル４０４は、柔軟でふわふわした梱包材を模している。そこで、梱包物体モデル４０４の３次元形状の表現方法としては、その他の仮想物体と同様にポリゴンを用いても良いが、自由曲面による３次元表現を用いても良いし、粒子系のパーティクル表現を用いても良い。
【００５１】
また、梱包物体モデル４０４のサイズについては、適宜変更することができるようにしても良い。その手段については特に限定するものではないが、例えば、入力装置１０６にマウスやキーボードを接続し、このマウスやキーボードを用いてそのサイズを指定する。当然、指定するサイズは、操作物体モデル４０３のサイズよりも大きくなるようにする。また、マウスやキーボードを用いて、梱包物体モデル４０４の素材情報について指示するようにしても良い。例えば、柔らかい素材／堅い素材の何れかを指定するなど、変形の度合いを示す様なパラメータを指示するようにしても良い。また、梱包物体モデル４０４は、操作物体モデル４０３を必ずしも包含しなくても、一部を囲うものであればよい。
【００５２】
ここで、梱包物体モデル４０４が不透明の仮想物体である場合には当然、同図中央に点線で示す如く、操作物体モデル４０３は不可視となる。従って、梱包物体モデル４０４を配置する場合には、操作物体モデル４０３はあえて配置しなくても良い。
【００５３】
このように、操作物体モデル４０３、梱包物体モデル４０４を配置した後、梱包物体モデル４０４に関連付けられた２つのバウンディングボックスを設定する。バウンディングボックスは、梱包物体モデル４０４を包含することが望ましいが、そうでなくてもよい。同図において４０５ａは梱包物体モデル４０４を包含するバウンディングボックス、４０５ｂはバウンディングボックス４０５ａに包含されるバウンディングボックスである。バウンディングボックス４０５ｂは、バウンディングボックス４０５ａを縮小することで設定されるものである。
【００５４】
なお、バウンディングボックスとは、仮想空間中に存在する仮想物体を包含する程度のサイズで配置される立体モデルである。バウンディングボックスの作り方は、「Ｒｅａｌ−Ｔｉｍｅ  Ｒｅｎｄｅｒｉｎｇ  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ（Ｔｏｍａｓ  Ａｋｅｎｉｎｅ−Ｍｏｌｌｅｒ，Ｅｒｉｃ  Ｈａｉｎｅｓ著．Ａ Ｋ Ｐｅｔｅｒｓ， Ｌｔｄ．），Ｃｈａｐｔｅｒ．１３−１４」に記載されており、その形状には直方体や多面体などがある。本実施形態では、バウンディングボックスとして直方体を利用するが、以下の説明の本質はこれに限定するものではない。
【００５５】
ここで、バウンディングボックス４０５ｂを設定する処理について更に詳細に説明する。上述のとおり、バウンディングボックス４０５ｂは、バウンディングボックス４０５ａを縮小することで生成する。その縮小率は、梱包物体モデル４０４について予め設定されている素材情報（より詳しくは梱包物体モデル４０４が模している梱包材の堅さを示す情報）に応じて決まる。
【００５６】
例えば、梱包物体モデル４０４が模している梱包材が発砲スチロールのような固めの素材である場合には、縮小率を小さく１％とし、エアチップのような弾力に富んだ素材である場合には、縮小率を少し大きめに３０％とする。このようにして決まる縮小率を用いて、バウンディングボックス４０５ｂのサイズは以下のようにして決まる。
【００５７】
バウンディングボックス４０５ｂのサイズ＝バウンディングボックス４０５ａのサイズ−（バウンディングボックス４０５ａのサイズ−梱包物体モデル４０４のサイズ）×縮小率
ここで、「サイズ」とは、例えば体積を示しており、「バウンディングボックス４０５ａのサイズ」とは「バウンディングボックス４０５ａの体積」を示している。もちろん、「サイズ」に適用できる要素はこれ以外にも考えられる。
【００５８】
以上の処理により、ステップＳ１０１０では、操作物体モデル４０３、梱包物体モデル４０４を配置することができると共に、バウンディングボックス４０５ａ、４０５ｂを設定することができる。なお、バウンディングボックス４０５ａ、４０５ｂについては例えば、ワイヤーフレームなどで可視的に表示するようにしても良いし、表示しなくても良い。
【００５９】
一方、箱モデルについて説明する。図５は、本実施形態で用いる箱モデルの一例を示す図である。同図に示す箱モデル４０２は、上記梱包物体モデル４０４で包含された操作物体モデル４０３を収納するための仮想モデルである。
【００６０】
図３に戻って、次に、上記頭部装着部２００に備わっている撮像装置２０２は、現実空間の動画像を撮像するので、各フレームの撮像画像が画像入力装置１０７に入力される。そこで、画像入力装置１０７は受けた各フレームの撮像画像を順次ＲＡＭ１０２、若しくはディスク装置１０５に取り込む。その際、ＣＰＵ１０１は、最新のフレームの画像をＲＡＭ１０２内のビデオバッファーに描画する（ステップＳ１０２０）。なお、表示装置２０１に光学シースルー型の表示装置を用いる場合や、頭部装着部２００に現実映像を必要としない没入型の装置を用いる場合には、本ステップを省略することができる。
【００６１】
次に、センサ制御装置３０３から、センサ３０１の位置姿勢、スタイラス３０２の位置姿勢が位置姿勢情報として入力装置１０６に入力される。そこで、入力装置１０６は、受けた位置姿勢情報をＲＡＭ１０２、若しくはディスク装置１０５内に送出する（ステップＳ１０３０）。ここで、センサ３０１の位置姿勢を取得したということは、視点の位置姿勢を取得したことに等価である。
【００６２】
更に、ステップＳ１０３０では、入力装置１０６は、操作ボタン３０４が押下されている／押下されていない旨を示すボタン操作情報をセンサ制御装置３０３から受けるので、この情報もまた、ＲＡＭ１０２、若しくはディスク装置１０５内に送出する。
【００６３】
次に、ステップＳ１０１０で配置した各仮想物体が配された仮想空間を、視点（ステップＳ１０３０で取得した位置姿勢を有する視点）から見た場合に見える画像を、上記ビデオバッファーとは異なるＲＡＭ１０２内の領域に描画する（ステップＳ１０４０）。
【００６４】
ここで、仮想物体を描画する際には、背景画像となる現実空間の画像が透過するように、仮想物体が存在しない画面領域を背景透過率１００％で描画する。若しくは、同等の目的を達成するために、背景画像となる現実空間の画像を透過させるように予め定めたカラーバッファ値（例えば（Ｒ、Ｇ、Ｂ）＝（０、０、０））を入力してもよい。
【００６５】
なお、表示装置２０１に光学シースルー型の表示装置を用いる場合には、仮想物体が存在しない画面領域を背景が透過する色で描画してもよい。また、頭部装着部２００に現実映像を必要としない没入型の装置を用いる場合には、仮想物体が存在しない画面領域に何を表示してもよい。
【００６６】
次に、上記ビデオバッファー上に、ステップＳ１０４０で描画した画像を描画し、描画した画像を画像出力装置１０３によって頭部装着部２００が有する表示装置２０１に送出する（ステップＳ１０５０）。その結果、現実空間の画像上に仮想空間の画像が重畳された合成画像をビデオバッファー上に形成することができると共に、この合成画像を表示装置２０１上に表示することができる。その結果、頭部装着部２００を頭部に装着したユーザは、視点の位置姿勢に応じて見える現実空間と仮想空間とが合成された合成画像を、眼前に見ることができる。
【００６７】
なお、表示装置２０１に光学シースルー型の表示装置を用いる場合や、頭部装着部２００に現実映像を必要としない没入型の装置を用いる場合には、ステップＳ１０４０で描画した仮想空間画像を画像出力装置１０３によって表示装置２０１に送出すればよい。
【００６８】
次に、ユーザが操作するスタイラス３０２を用いて、操作物体モデル４０３もしくは包含物体モデル４０４が選択（ピックアップ）されているのかをチェックする（ステップＳ１０６０）。ここで、操作物体モデル４０３もしくは包含物体モデル４０４の選択方法について説明する。
【００６９】
ユーザがスタイラス３０２の位置を、操作物体モデル４０３もしくは包含物体モデル４０４の内部に動かし、そこで操作ボタン３０４を押下すると、この梱包物体モデル４０４を選択することができる。スタイラス３０２の位置が梱包物体モデル４０４の内部にあるのか外部にあるのかの判定方法については周知の技術であるので、ここでの説明は省略する。梱包物体モデル４０４を選択し、その後、ユーザがスタイラス３０２の位置姿勢を移動させると、梱包物体モデル４０４の位置姿勢もそれに追従して移動する。
【００７０】
そして更に、包含物体モデル４０４の選択状態において再度操作ボタン３０４を押下すると、非選択状態となり、梱包物体モデル４０４の位置姿勢は非選択状態となったタイミングにおけるものに固定される。
【００７１】
従って、ステップＳ１０６０では、包含物体モデル４０４に対するスタイラス３０２の位置の内外判定を行う。更に同ステップでは、センサ制御装置３０３から入力装置１０６を介してＲＡＭ１０２、若しくはディスク装置１０５に取り込まれるボタン操作情報が押下／非押下の何れを示しているのかをチェックする。なお、ここでの説明では、現在は非選択状態となっているものとする。
【００７２】
その結果、スタイラス３０２の位置が包含物体モデル４０４の内部にあり、且つ操作ボタン３０４が押下されているという条件を満たしている場合には処理をステップＳ１０７０に進め、この条件を満たしていない場合には処理をステップＳ１０２０に戻す。
【００７３】
ここで、ユーザはスタイラス３０２を用いて包含物体モデル４０４を選択後、その位置や姿勢を変更し、箱モデル４０２内に収納しようとしている場合を例に取り、説明する。
【００７４】
ステップＳ１０７０では、箱モデル４０２に包含物体モデル４０４が近づいた場合に備えて、箱モデル４０２と、上記バウンディングボックス４０５ａとの干渉判定を行う（ステップＳ１０７０）。即ち、包含物体モデル４０４を包含する、最もサイズの大きいバウンディングボックスと、箱モデル４０２との干渉判定を行う。干渉判定の処理については、「Ｒｅａｌ−Ｔｉｍｅ  Ｒｅｎｄｅｒｉｎｇ  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ（Ｔｏｍａｓ  Ａｋｅｎｉｎｅ−Ｍｏｌｌｅｒ，Ｅｒｉｃ  Ｈａｉｎｅｓ著．Ａ Ｋ Ｐｅｔｅｒｓ， Ｌｔｄ．），Ｃｈａｐｔｅｒ．１３−１４」に記載されているためここでは省略する。
【００７５】
そして、この干渉判定処理の結果、干渉が無かった場合には処理をステップＳ１０８０を介してステップＳ１０２０に戻し、干渉があった場合には処理をステップＳ１０８０を介してステップＳ１０９０に進める。ステップＳ１０９０では、干渉があったことをユーザに報知する（ステップＳ１０９０）。報知形態については様々なものが考えられる。例えば、「箱モデル４０２に包含物体モデル４０４が干渉／接近しています」なる旨のメッセージを画像出力装置１０３によって表示装置２０１に送出する。また、コンピュータ１００にスピーカを設け、このスピーカにより音声としてこの旨を出力するようにしても良い。また、バウンディングボックス４０５ａ、箱モデル４０２をポリゴンでもって構成した場合には、互いに干渉しているポリゴンを点滅表示させたり、他の部分とは異なる色ででもって表示させたりするようにしても良い。
【００７６】
このような報知により、包含物体モデル４０４と箱モデル４０２とが干渉している、若しくは少なくとも箱モデル４０２に包含物体モデル４０４が近づいている旨をユーザに通知することができる。
【００７７】
更には、梱包物体モデル４０４と箱モデル４０２との干渉状態をさらに詳細に調べ、具体的にどのような位置関係にあるのか表示してもよい。
【００７８】
こうすることで、梱包物体モデル４０４が最大限縮小した状態で箱モデル４０２と干渉する前に、（バウンディングボックスを使っているため近似的ではあるが）ユーザに対して梱包物体モデル４０４と箱モデル４０２の位置関係を提示することができる。そしてこれにより、ユーザは梱包物体モデル４０４と箱モデル４０２との位置関係を容易に確認することができる。
【００７９】
次に、ステップＳ１０７０で判定した干渉状態に応じて、梱包物体モデル４０４の形状を変形させ、箱モデル４０２と干渉していないように見せる処理を行う（ステップＳ１１００）。なお、ステップＳ１０７０では、バウンディングボックス４０５ａと箱モデル４０２との干渉判定を行っており、梱包物体モデル４０４と箱モデル４０２との干渉判定を行っているわけではない。そこで先ず、バウンディングボックス４０５ａの形状を、箱モデル４０２と干渉しないように変形させ、次にバウンディングボックス４０５ａの変形具合に対応させて梱包物体モデル４０４の形状を変形させればよい。
【００８０】
図６Ａは、バウンディングボックス４０５ａにおけるある面が箱モデル４０２におけるある面と干渉した場合に、梱包物体モデル４０４、バウンディングボックス４０５ａに対する処理を説明する図である。同図左側において６０１は、箱モデル４０２においてバウンディングボックス４０５ａと干渉している面を示す。同図左側に示す如く、バウンディングボックス４０５ａのある面と面６０１とが干渉すると、同図中央及び右側に示す如く、面６０１の法線方向（同図において矢印で示す方向）にバウンディングボックス４０５ａ、梱包物体モデル４０４の形状を圧縮変形させる。圧縮変形させる度合いについては、例えば、バウンディングボックス４０５ａと面６０１が接する程度に圧縮変形させる。なお、同図において二重線記号を描いているのは、それらの長さが同等であることを示す為である。
【００８１】
図６Ｂは、バウンディングボックス４０５ａにおけるある頂点が箱モデル４０２におけるある面と干渉した場合に、梱包物体モデル４０４、バウンディングボックス４０５ａに対する処理を説明する図である。同図左側に示す如くバウンディングボックス４０５ａのある頂点（若しくは稜線）と面６０１とが干渉すると、同図中央、及び右側に示す如く、面６０１の法線方向（同図において矢印で示す方向）にバウンディングボックス４０５ａ、梱包物体モデル４０４の形状を圧縮変形させる。圧縮変形させる度合いについては、例えば、バウンディングボックス４０５ａと面６０１が接する程度に圧縮変形させる。
【００８２】
なお、上述のように、仮想物体を圧縮変形させるための技術については周知の技術であるので、これに関する説明は省略する。更に、圧縮変形させる際には、以下のような技術を用いても良い。即ち、予め変形させた梱包物体モデルを複数種類用意し、干渉状態に応じてそれらを適宜読み出してもよい。
【００８３】
また、ステップＳ１１００では２つあるバウンディングボックスのうちバウンディングボックス４０５ａについてのみ圧縮変形処理を行ったが、他方のバウンディングボックス４０５ｂについてはこのような圧縮変形処理は行わない。
【００８４】
このような処理を行うことで、梱包物体モデル４０４が最大限縮小した状態で箱モデル４０２と干渉する前に（バウンディングボックスを使っているため近似的ではあるが）ユーザに対して梱包物体モデル４０４と箱モデル４０２の関係を提示することができる。よって、ユーザは梱包物体モデル４０４と箱モデル４０２との関係を容易に確認することができる。
【００８５】
次に、箱モデル４０２と、上記バウンディングボックス４０５ｂとの干渉判定を行う（ステップＳ１１１０）。干渉判定の処理については、「Ｒｅａｌ−Ｔｉｍｅ  Ｒｅｎｄｅｒｉｎｇ  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ（Ｔｏｍａｓ  Ａｋｅｎｉｎｅ−Ｍｏｌｌｅｒ，Ｅｒｉｃ  Ｈａｉｎｅｓ著．Ａ Ｋ Ｐｅｔｅｒｓ， Ｌｔｄ．），Ｃｈａｐｔｅｒ．１３−１４」に記載されているためここでは省略する。
【００８６】
そして、この干渉判定処理の結果、干渉が無かった場合には処理をステップＳ１１２０を介してステップＳ１０２０に戻し、干渉があった場合には処理をステップＳ１１２０を介してステップＳ１１３０に進める。ステップＳ１１３０では、干渉があったことをユーザに報知する（ステップＳ１１３０）。この報知処理についてはステップＳ１０９０に係る上記説明と同様、様々なものが適用可能である。ステップＳ１１３０による報知処理によれば、ユーザは、梱包物体モデル４０４が最大限縮小した状態で箱モデル４０２に干渉していることを認知することができる。
【００８７】
次に、本処理終了の指示が入力されたことをＣＰＵ１０１が検知した場合にはステップＳ１１４０を介して本処理を終了するし、検知していない場合には処理をステップＳ１１４０を介してステップＳ１０２０に戻す。本処理終了の指示については、例えば、上記マウスやキーボードを用いてユーザが指示するようにしても良いし、コンピュータ１００の電源をシャットダウンすることによって指示するようにしても良い。
【００８８】
以上の説明により、本実施形態によれば、仮想現実空間、若しくは複合現実空間中において、一定の範囲で自由に変形可能な素材を含む仮想物体の干渉状態を簡便にユーザに提示することができる。
【００８９】
なお、本実施形態では、センサ部３００によって位置姿勢を計測するための説明に磁気センサを用いたが、位置姿勢が計測することができれば何れの手段を持ち手も良い。例えば、光学的な位置姿勢計測装置や、機械的な位置姿勢計測装置や、測量機等を用いても良い。
【００９０】
また、本実施形態では、ユーザが用いる指示具としてスタイラス３０２を用いたが、その他の指示具を用いるようにしても良い。しかし、何れの指示具を用いるにせよ、指示具の位置姿勢を計測するための構成は必須となる。
【００９１】
また、本実施形態においては、箱モデルとして図５に示すような仮想の箱モデル４０２を用いたが、現実空間に存在する箱に対応した位置姿勢で、仮想の箱モデル４０２を透明物体として描画してもよい。即ち仮想の箱モデル４０２を描画する際に表示画面内における奥行き情報を示すＺ−バッファ値のみを更新しつつ、背景画像である現実画像を透過させるように予め定めたカラーバッファ値（例えば（Ｒ、Ｇ、Ｂ）＝（０、０、０））で描画することで実現できる。
【００９２】
より詳しく説明すると、ある仮想物体（仮想物体Ａ）を「透明物体として描画する」というのは、ユーザから見て仮想物体Ａの後ろに別の仮想物体（仮想物体Ｂ）が存在する場合、仮想物体Ａを透かして仮想物体Ｂが見えるということではない。仮想物体Ａが存在する画像領域は、後ろに他の仮想物体があった場合でもそれらは見えずに、背景である現実画像が透過される。この概念は、色情報であるカラーバッファ値と、奥行き情報であるＺ−バッファ値とを別に扱うという仮想空間ならではの概念と言える。
【００９３】
［第２の実施形態］
第１の実施形態ではバウンディングボックスの数を２つとしたが、本実施形態では３以上の複数個のバウンディングボックスを設定する場合について説明する。なお、以下の説明ではＮ（Ｎ＞２）個のバウンディングボックスを設定するものとし、サイズの大きいものから順にバウンディングボックスＢ１、バウンディングボックスＢ２…バウンディングボックスＢＮと呼称する。即ち、それぞれのバウンディングボックスの関係は、「バウンディングボックスＢｊはバウンディングボックスＢ（ｊ＋１）を包含する」という関係を有している。
【００９４】
以下では、第１の実施形態と異なる点について説明する。図７は、梱包物体モデルでもって梱包された操作物体モデルもしくは梱包物体モデルを、ユーザがスタイラス３０２を用いて移動操作し、箱モデルに収納する場合に、上記コンピュータ１００が行う処理のフローチャートである。なお、同図のフローチャートに従った処理をＣＰＵ１０１に実行させるためのプログラムやデータはディスク装置１０５に保存されている。そしてＣＰＵ１０１による制御に従って適宜ＲＡＭ１０２にロードされる。ＣＰＵ１０１はこのロードされたプログラムやデータを用いて処理を行うことで、コンピュータ１００は以下説明する各処理を実行することになる。また、図７において、図３と同じ部分については同じステップ番号を付けており、その説明は省略する。
【００９５】
ステップＳ２０００では、操作物体モデル４０３、梱包物体モデル４０４、箱モデル４０２、を仮想空間中の予め定められた位置姿勢に配置する。更に同ステップでは、梱包物体モデル４０４に関連付けられたＮ個のバウンディングボックスＢｉ（ｉ＝１…Ｎ）を配置する。バウンディングボックスＢ１は、梱包物体モデル４０４を包含することが望ましいが、それに限らなくてもよい。
【００９６】
そしてステップＳ２０１０では変数ｉを１に初期化し、ステップＳ２０２０では、バウンディングボックスＢｉと箱モデル４０２との干渉判定処理を行う。この干渉判定処理については第１の実施形態と同様にして行う。
【００９７】
この干渉判定処理の結果、干渉していない場合には処理をステップＳ２０３０を介してステップＳ１０２０に戻し、干渉している場合には処理をステップＳ２０３０を介してステップＳ２０４０に進める。ステップＳ２０４０では、変数ｉに応じて、干渉の旨を報知する（ステップＳ２０４０）。報知の形態については第１の実施形態と同様、表示や音声出力などによって行うのであるが、報知の内容が第１の実施形態とは異なる。即ち、本実施形態では、例えば表示により報知を行う場合には、画像出力装置１０３を通して、表示装置２０１に「梱包材部分が箱とｉ／Ｎ程度干渉しています」と表示する。また、変数ｉの値と整数値Ｎとの比率（＝ｉ／Ｎ）をグラフ形式やメータ形式で表示装置２０１に表示してもよい。
【００９８】
このように、現在の変数ｉの値に応じて、現在どのバウンディングボックスまでが箱モデル４０２と干渉しているのかを、干渉の度合いを報知することによってユーザに報知することができる。なお、報知の内容はこれに限定するものではなく、これに加えて第１の実施形態と同様のものを報知するようにしても良い。
【００９９】
次に、ステップＳ２０５０では、梱包物体モデル４０４のみを圧縮変形させる。圧縮変形処理については第１の実施形態と同様にして行う。
【０１００】
次に、ステップＳ２０６０では、変数ｉの値がＮであるのかをチェックし、ｉ≠Ｎである場合には処理をステップＳ２０７０に進め、変数ｉの値を１つインクリメントし、処理をステップＳ２０２０に戻し、以降の処理を行う。これにより、１つサイズの小さいバウンディングボックスと箱モデル４０２との干渉判定処理を行い、その結果に応じた処理を行うことになる。
【０１０１】
一方、ｉ＝Ｎである場合には処理をステップＳ１１３０に進める。
【０１０２】
［第３の実施形態］
上記実施形態では、一定の範囲で自由に変形可能な素材を表現する仮想物体と、固体の物体（Ｓｏｌｉｄ  Ｏｂｊｅｃｔ）を表現する仮想物体とが干渉する場合について説明した。本実施形態では、一定の範囲で自由に変形可能な素材を表現する仮想物体同士が干渉する場合について説明する。
【０１０３】
以下では、上記実施形態と異なる部分について説明する。図８は、梱包物体モデルでもって梱包された操作物体モデルもしくは梱包物体モデルを、ユーザがスタイラス３０２を用いて移動操作し、もう１つの梱包物体モデルに近づける場合に、上記コンピュータ１００が行う処理のフローチャートである。なお、同図のフローチャートに従った処理をＣＰＵ１０１に実行させるためのプログラムやデータはディスク装置１０５に保存されている。そしてＣＰＵ１０１による制御に従って適宜ＲＡＭ１０２にロードされる。ＣＰＵ１０１はこのロードされたプログラムやデータを用いて処理を行うことで、コンピュータ１００は以下説明する各処理を実行することになる。また、図８において、図３と同じ部分については同じステップ番号を付けており、その説明は省略する。
【０１０４】
ステップＳ３０００では、操作物体モデル４０３、梱包物体モデル４０４、を仮想空間中の予め定められた位置姿勢に配置すると共に、梱包物体モデル４０４に関連付けられたＮ個のバウンディングボックスＢｉ（ｉ＝１…Ｎ）を配置する。これらの配置処理については上記ステップＳ１０１０やステップＳ２０００と同じであるが、ステップＳ３０００では更に、包含物体モデル４０４’、包含物体モデル４０４’に関連付けられたＭ個のバウンディングボックスＣｊ（ｊ＝１…Ｍ、Ｍ≧２）を配置する。
【０１０５】
なお、バウンディングボックスＣｊについても、サイズの大きいものから順にバウンディングボックスＣ１、バウンディングボックスＣ２…バウンディングボックスＣＭと呼称する。即ち、それぞれのバウンディングボックスの関係は、「バウンディングボックスＣｋはバウンディングボックスＣ（ｋ＋１）を包含する」という関係を有している。
【０１０６】
尚、包含物体モデル４０４’については、別段何かを梱包するものでなくても良い。
【０１０７】
次に、ステップＳ３０１０では、変数ｉ、ｊを共に１に初期化する。次に、ステップＳ３０２０では、バウンディングボックスＢｉと、バウンディングボックスＣｊとの干渉判定処理を行う。この干渉判定処理については第１の実施形態と同様にして行う。
【０１０８】
この干渉判定処理の結果、干渉していない場合には処理をステップＳ３０３０を介してステップＳ１０２０に戻し、干渉している場合には処理をステップＳ３０３０を介してステップＳ３０４０に進める。ステップＳ３０４０では、変数ｉ、ｊに応じて、干渉の旨を報知する。報知の形態については第１の実施形態と同様、表示や音声出力などによって行うのであるが、報知の内容が第１の実施形態とは異なる。即ち、本実施形態では、例えば表示により報知を行う場合には、画像出力装置１０３を通して、表示装置２０１に「梱包材同士が干渉しています」と表示する。また、干渉の具合を示すパラメータとして、変数ｉの値とＮとの比率（＝ｉ／Ｎ）や、変数ｊの値とＭとの比率（＝ｊ／Ｍ）をグラフ形式やメータ形式で表示装置２０１に表示してもよい。
【０１０９】
このように、現在の変数ｉ、ｊの値に応じて、現在どのバウンディングボックスまでが相手のバウンディングボックスと干渉しているのかを、干渉の度合いを報知することによってユーザに報知することができる。なお、報知の内容はこれに限定するものではなく、これに加えて第１の実施形態と同様のものを報知するようにしても良い。
【０１１０】
次に、ステップＳ３０５０では、梱包物体モデル４０４、４０４’を圧縮変形させる。圧縮変形処理については第１の実施形態と同様にして行う。
【０１１１】
次に、ステップＳ３０６０では、ｉ＝Ｎ、且つｊ＝Ｍであるのかをチェックし、ｉ＝Ｎ、且つｊ＝Ｍではない場合には処理をステップＳ３０７０に進める。ステップＳ３０７０では、変数ｉの値、変数ｊの値をそれぞれ１つインクリメントする。なお、ｉ＝Ｎの場合には変数ｉに対してはインクリメント処理は行わないし、ｊ＝Ｍの場合には変数ｊに対してはインクリメント処理は行わない。そして、処理をステップＳ３０２０に戻し、以降の処理を行う。これにより、１つサイズの小さいバウンディングボックス同士の干渉判定処理を行い、その結果に応じた処理を行うことになる。
【０１１２】
一方、ｉ＝Ｎ、且つｊ＝Ｍである場合には処理をステップＳ１１３０に進める。
【０１１３】
［第４の実施形態］
第１乃至３の実施形態では、２つの仮想物体同士の干渉について説明したが、本実施形態では３以上の仮想物体同士の干渉について説明する。
【０１１４】
仮想物体が３つ以上ある場合の干渉判定は、その処理速度を高速化するために、まず３つ以上ある仮想物体の中から２つの仮想物体を判定候補として絞込んでから行う。すなわち、スタイラス３０２が、ある梱包物体モデルＡをピックアップしているとして、そのピックアップされている梱包物体モデルＡに最も近い仮想モデルＢを選択し、ＡとＢとの干渉判定を行えばよい。
【０１１５】
また、スタイラス３０２が、ある梱包物体モデルＡをピックアップして、スタイラス３０２以外の操作デバイスが仮想モデルＣをピックアップしている場合には、ＡとＣとの干渉判定を行ってもよいことは言うまでもない。
【０１１６】
［その他の実施形態］
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１１７】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１８】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１９】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１２０】
【図１】本発明の第１の実施形態に係るシステムのハードウェア構成を示すブロック図である。
【図２】スタイラス３０２の外観の一例を示す図である。
【図３】梱包物体モデルでもって梱包された操作物体モデルを、ユーザがスタイラス３０２を用いて移動操作し、箱モデルに収納する場合に、コンピュータ１００が行う処理のフローチャートである。
【図４】操作物体モデル、梱包物体モデル、バウンディングボックスを示す図である。
【図５】本発明の第１の実施形態で用いる箱モデルの一例を示す図である。
【図６Ａ】バウンディングボックス４０５ａにおけるある面が箱モデル４０２におけるある面と干渉した場合に、梱包物体モデル４０４、バウンディングボックス４０５ａに対する処理を説明する図である。
【図６Ｂ】バウンディングボックス４０５ａにおけるある頂点が箱モデル４０２におけるある面と干渉した場合に、梱包物体モデル４０４、バウンディングボックス４０５ａに対する処理を説明する図である。
【図７】梱包物体モデルでもって梱包された操作物体モデルを、ユーザがスタイラス３０２を用いて移動操作し、箱モデルに収納する場合に、コンピュータ１００が行う処理のフローチャートである。
【図８】梱包物体モデルでもって梱包された操作物体モデルを、ユーザがスタイラス３０２を用いて移動操作し、もう１つの梱包物体モデルに近づける場合に、コンピュータ１００が行う処理のフローチャートである。
【図１】
2007179483.tif 000003
【図２】
2007179483.tif 000004
【図３】
2007179483.tif 000005
【図４】
2007179483.tif 000006
【図５】
2007179483.tif 000007
【図６Ａ】
2007179483.tif 000008
【図６Ｂ】
2007179483.tif 000009
【図７】
2007179483.tif 000010
【図８】
2007179483.tif 000011