(57)【要約】【課題】  仮想物体同士の干渉部分を所望の通知形態でもって通知する為の技術を提供すること。【解決手段】  Ｓ３０２で検索した干渉部分を通知するのであるが、通知する詳細度を設定し（Ｓ３０３）、設定された詳細度でもって、干渉部分を含む提示部位を設定する（Ｓ３０４）。【選択図】  図３
2006178662.tif 000002
【特許請求の範囲】
【請求項１】
干渉部分を通知する際の詳細度を設定する詳細度設定工程と、
第１の仮想物体と第２の仮想物体との干渉部分を検出する検出工程と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定工程と
を有することを特徴とする情報処理方法。
【請求項２】
さらに、仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成工程を有することを特徴とする請求項１記載の情報処理方法。
【請求項３】
前記詳細度設定工程は、前記検出工程で検出された干渉部分に基づき前記詳細度を設定することを特徴とする請求項１または２に記載の情報処理方法。
【請求項４】
前記詳細度設定工程は、前記投影画像上における、前記検出工程で検出された干渉部分の画素数に応じて、前記詳細度を設定することを特徴とする請求項２に記載の情報処理方法。
【請求項５】
前記詳細度設定工程は、前記検出された干渉部分の隠蔽状況に応じて、前記詳細度を設定することを特徴とする請求項４記載の情報処理方法。
【請求項６】
前記詳細度は、ポリゴン数であることを特徴とする請求項１乃至５のいずれかに記載の情報処理方法。
【請求項７】
前記仮想物体を示すモデルデータは階層構造で定義され、
前記詳細度設定工程は、階層構造に含まれる階層を設定することを特徴とする請求項１乃至６のいずれかに記載の情報処理方法。
【請求項８】
前記階層には、パーツおよびポリゴンが含まれることを特徴とする請求項７記載の情報処理方法。
【請求項９】
仮想物体を示すモデルデータを取得する取得工程と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成工程と、
前記仮想物体の干渉部分を検出する検出工程と、
前記干渉部分の前記投影画像における状況を識別する識別工程と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定工程と
を有することを特徴とする情報処理方法。
【請求項１０】
前記検出工程は、干渉部分のポリゴンを検出し、
前記部位設定工程は、前記検出されたポリゴンを含む領域を設定することを特徴とする請求項９記載の情報処理方法。
【請求項１１】
形状が階層構造をなす第１の仮想物体が第２の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理方法であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定工程と、
前記設定工程で設定された単位でもって前記干渉部分を通知する通知工程と
を備えることを特徴とする情報処理方法。
【請求項１２】
前記階層構造のうち最下位を除く階層は、当該階層の１段階下位の階層に属する１以上の要素から構成されることを特徴とする請求項１１に記載の情報処理方法。
【請求項１３】
前記最下位の階層に属する構成要素はポリゴンであることを特徴とする請求項１１又は１２に記載の情報処理方法。
【請求項１４】
前記設定工程では、前記干渉部分を所定の単位で表示する場合に、当該所定の単位の表示領域のサイズが所定サイズ以上となるように、前記干渉部分の通知単位を設定することを特徴とする請求項１１乃至１３のいずれかに記載の情報処理方法。
【請求項１５】
前記設定工程では、前記干渉部分を所定の単位で表示する場合に、当該所定の単位の表示領域全体がその他の表示対象物に隠蔽されないように、前記干渉部分の通知単位を設定することを特徴とする請求項１１乃至１３のいずれかに記載の情報処理方法。
【請求項１６】
前記通知工程では、通知する対象の表示色を、通知対象以外の表示色と異ならせて通知することを特徴とする請求項１１乃至１５のいずれかに記載の情報処理方法。
【請求項１７】
コンピュータに請求項１乃至１６のいずれかに記載の情報処理方法を実行させることを特徴とするプログラム。
【請求項１８】
請求項１７に記載のプログラムを格納したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項１９】
干渉部分を通知する際の詳細度を設定する詳細度設定手段と、
第１の仮想物体と第２の仮想物体との干渉部分を検出する検出手段と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定手段と
を有することを特徴とする情報処理装置。
【請求項２０】
仮想物体を示すモデルデータを取得する取得手段と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成手段と、
前記仮想物体の干渉部分を検出する検出手段と、
前記干渉部分の前記投影画像における状況を識別する識別手段と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定手段と
を有することを特徴とする情報処理装置。
【請求項２１】
形状が階層構造をなす第１の仮想物体が第２の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理装置であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定手段と、
前記設定手段によって設定された単位でもって前記干渉部分を通知する通知手段と
を備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想物体同士の干渉部分を通知するための技術に関するものである。
【背景技術】
【０００２】
従来より、３次元形状モデルの階層的構造をシーングラフとして管理し、仮想物体同士の干渉箇所をシーングラフ上で探索することが可能であった（製品例：米国TGS社製のグラフィクスライブラリ”Open Inventor”（登録商標））。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、干渉箇所が視点から遠くにある場合や、干渉箇所が他のオブジェクトに隠されている場合は、干渉箇所を表示しても視認することが困難であるか、視認できなかった。
【０００４】
本発明は以上の問題に鑑みてなされたものであり、仮想物体同士の干渉部分を所望の通知形態でもって通知する為の技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【０００６】
即ち、干渉部分を通知する際の詳細度を設定する詳細度設定工程と、
第１の仮想物体と第２の仮想物体との干渉部分を検出する検出工程と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定工程と
を有することを特徴とする。
【０００７】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【０００８】
即ち、仮想物体を示すモデルデータを取得する取得工程と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成工程と、
前記仮想物体の干渉部分を検出する検出工程と、
前記干渉部分の前記投影画像における状況を識別する識別工程と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定工程と
を有することを特徴とする。
【０００９】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【００１０】
即ち、形状が階層構造をなす第１の仮想物体が第２の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理方法であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定工程と、
前記設定工程で設定された単位でもって前記干渉部分を通知する通知工程と
を備えることを特徴とする。
【００１１】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【００１２】
即ち、干渉部分を通知する際の詳細度を設定する詳細度設定手段と、
第１の仮想物体と第２の仮想物体との干渉部分を検出する検出手段と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定手段と
を有することを特徴とする。
【００１３】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【００１４】
即ち、仮想物体を示すモデルデータを取得する取得手段と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成手段と、
前記仮想物体の干渉部分を検出する検出手段と、
前記干渉部分の前記投影画像における状況を識別する識別手段と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定手段と
を有することを特徴とする。
【００１５】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【００１６】
即ち、形状が階層構造をなす第１の仮想物体が第２の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理装置であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定手段と、
前記設定手段によって設定された単位でもって前記干渉部分を通知する通知手段と
を備えることを特徴とする。
【発明の効果】
【００１７】
本発明の構成により、仮想物体同士の干渉部分を良好に通知することができる。
【発明を実施するための最良の形態】
【００１８】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００１９】
［第１の実施形態］
以下の説明で用いる仮想物体（３次元仮想物体）は階層的な構造を持つとする。すなわち、１つの仮想物体は単数または複数のユニットから構成され、１つのユニットは単数または複数のパーツから構成され、１つのパーツは多角形の平面（ポリゴン）の集合であるとする。
【００２０】
よって本実施形態では、仮想物体同士が干渉部分を有する場合に、この干渉部分をユーザに通知するのであるが、この干渉部分をユニット・パーツ・ポリゴンのいずれの単位で通知するかをユーザが設定できる。
【００２１】
図１は、仮想物体同士の干渉部分を説明する図である。図１（ｄ）において、１０１、１０２はそれぞれ３次元仮想物体である。
【００２２】
仮想物体１０１は６面体のオブジェクトとしての仮想物体であり、全体で１つのユニットとなっている。６面体の各面はパーツとしてユニットを構成し、その一面である１０７は同図点線で示す如く、８枚のポリゴンにより構成されている。
【００２３】
一方、円柱形の仮想物体１０２は全体で１つのユニットおり、このユニットは上面、下面、側面の３つのパーツにより構成されている。また、上面、下面、側面のそれぞれは複数のポリゴンにより構成されている。
【００２４】
即ち、仮想物体１０１、仮想物体１０２は単一のユニット、複数のパーツにより構成されていると共に、それぞれのパーツは複数のポリゴンにより構成されている。
【００２５】
図１（ａ）は、仮想物体１０２との干渉部分を有している仮想物体１０１を示す図で、同図に示す如く、仮想物体１０１は仮想物体１０２とポリゴン１０３でもって干渉している。図１（ｂ）はこの干渉の様子を上方から見た様子を示しており、同図に示す如く、仮想物体１０１は、パーツ１０７を構成するポリゴン１０３でもって、仮想物体１０２と干渉している。
【００２６】
よって、ポリゴン単位で干渉する部分を通知する際には、図１（ａ）に示す如く、ポリゴン１０３をその他のポリゴンとは異なる表示色でもって表示すればよい。しかし、この仮想物体１０１、１０２が存在する仮想空間に設定された視点や仮想物体の配置によっては、このポリゴン１０３が見えないなどの問題が起こる可能性がある。例えば,図１（ａ）の場合は,干渉部位のポリゴン１０３が仮想物体１０２に隠されて見えない。そこで、このような場合には、上記の階層であるパーツ単位で干渉部分を通知する。すなわち、干渉しているポリゴン１０３が属するパーツを通知する。同図ではポリゴン１０３が属するパーツはパーツ１０７であるので、図１（ｃ）に示す如く、パーツ１０７を、その他のパーツの表示色とは異なる表示色でもって表示する。
【００２７】
このように、状況に応じて干渉部分の通知単位を変更する。
【００２８】
図２は、上記各処理を実行する画像処理装置の基本構成を示すブロック図である。この画像処理装置には一般のＰＣ（パーソナルコンピュータ）やＷＳ（ワークステーション）などが適用可能である。
【００２９】
２０１はＣＰＵで、メモリ２０２にロードされているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する各処理を実行する。
【００３０】
２０２はメモリで、外部記憶装置２０５からロードされたプログラムやデータを一時的に記憶するためのエリアを備えると共に、ＣＰＵ２０１が各処理を実行する際に用いるワークエリアを備える。
【００３１】
２０３はＣＰＵ２０１、メモリ２０２が接続されているバスであり、更にこのバス２０３には後述するインターフェース２０４が接続されている。
【００３２】
インターフェース２０４には外部記憶装置２０５、キーボード２０６、マウス２０７、表示部２０８が接続されており、これらの機器と上記バス２０３に接続された上述の各部とのデータ通信の際のインターフェースとして機能する。
【００３３】
２０５は外部記憶装置で、ハードディスクドライブ装置などの大容量情報記憶装置として機能するものであり、ここにはＯＳ（オペレーティングシステム）や、コンピュータが行う後述の各処理をＣＰＵ２０１に実行させるためのプログラムやデータが保存されており、これらの一部もしくは全部はＣＰＵ２０１の制御に基づいてメモリ２０２にロードされる。
【００３４】
２０６、２０７はそれぞれキーボード、マウスで、コンピュータの操作者が操作することで、各種の指示をＣＰＵ２０１に対して入力することができる。
【００３５】
２０８は表示部で、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ２０１による処理結果を画像や文字などでもって表示することができる。
【００３６】
次に、上記構成を有するコンピュータが行う、仮想物体同士の干渉部分の通知処理について、同処理のフローチャートを示す図３を用いて以下説明する。なお、同図のフローチャートに従った処理をＣＰＵ２０１に実行させるためのプログラムやデータは外部記憶装置２０５に保存されており、これをＣＰＵ２０１の制御に従ってメモリ２０２にロードし、ＣＰＵ２０１がこのロードされたプログラムやデータを用いて処理を実行することで、本コンピュータは以下説明する各処理を実行することになる。
【００３７】
先ず、外部記憶装置２０５に保存されている仮想物体のデータ（モデルデータ）をメモリ２０２にロードする（ステップＳ３０１）。
【００３８】
図４は、ステップＳ３０１でメモリ２０２にロードするモデルデータのファイルフォーマットを示す図である。いま、この形状モデルがｍ個のユニットから構成されるとすると、データファイルにはユニットの情報が順番に記述されている。すなわち、４０１、４０２、４０３、４０４はそれぞれ第１、第２、第３から第ｍ−１、第ｍのユニットのデータを記述した部分である。
【００３９】
各ユニットの記述はユニットの区切りを表すユニットデリミタおよびパーツの記述から構成されている。例えば第１のユニットがｎ個のパーツから構成されるとすると、４０５、４０６、４０７・・・にはそれぞれ第１、第２、第３から第ｎまでのパーツのデータが記述されている。
【００４０】
各パーツの記述はパーツの区切りを表すパーツデリミタおよびパーツ属性から構成される。なお、各パーツ属性にはポリゴンの形状を記述するデータや、ポリゴンを表示する際の色付けを設定するデータなどが含まれている。
【００４１】
以上のように、モデルデータは、仮想物体を構成するユニット、ユニットを構成するパーツ、パーツを構成するポリゴン、というように、仮想物体を階層的に記述するためのデータである。なお、モデルデータの構成はこれに限定されるものではなく、様々な構成が考えられる。例えばモデルデータを、個々のパーツの属性を記述する複数のパーツデータファイルと、パーツ及びユニットの階層構造を記述する階層構造データファイルに分割することも可能である。
【００４２】
本実施形態では、第１の仮想物体のモデルデータ、第２の仮想物体のモデルデータをメモリ２０２にロードする。
【００４３】
次に、第１の仮想物体と第２の仮想物体との干渉状態をチェックし、干渉していれば、干渉した仮想物体それぞれについて干渉している部分を検索する（ステップＳ３０２）。このようなステップＳ３０２における一連の処理については周知の技術でもってなしえるものであるので、これに関する説明は省略する。
【００４４】
次に、ステップＳ３０２で検索した干渉部分を通知するのであるが、通知する詳細度を設定する（ステップＳ３０３）。ここでの詳細度とは、所謂、どの単位でもって干渉部分を通知するのかを示すものであり、上述の通り、干渉部分をポリゴン単位でもって通知するのか、それとも干渉部分を含むパーツ単位でもって通知するのか、それとも干渉部分を含むパーツが属するユニット単位でもって通知するのかを示すものである。
【００４５】
また、詳細度の設定方法については特に限定するものではないが、例えば、詳細度をポリゴン単位に設定するためのキー、詳細度をパーツ単位に設定するためのキー、詳細度をユニット単位に設定するためのキーをそれぞれキーボード２０６に配されたキーに割り当てておき、何れかのキーが押下されたことをＣＰＵ２０１が検知した場合には、検知したキーに割り当てられた詳細度を設定する。なお、設定指示が成されなかった場合には、デフォルトの詳細度（例えばポリゴン単位）を設定する。
【００４６】
次に、設定された詳細度でもって、干渉部分を含む提示部位を設定する（ステップＳ３０４）。即ち、詳細度をポリゴン単位に設定した場合には、干渉部分を構成する全てのポリゴンを提示部位として設定するし、詳細度をパーツ単位に設定した場合には、干渉部分が属するパーツ（を構成する全てのポリゴン）を提示部位として設定するし、詳細度をユニット単位に設定した場合には、干渉部分が属するパーツが属するユニット（を構成する全てのポリゴン）を提示部位として設定する。本ステップにおける処理については後述する。
【００４７】
そして第１の仮想物体、第２の仮想物体を表示部２０８の表示画面に表示するのであるが、その際に、各仮想物体において提示部位を構成する各ポリゴンを、その他のポリゴンとは異なる表示色でもって表示する（ステップＳ３０５）。表示色としては、例えば強調色としての赤を用いればよい。なお、仮想物体の画像を表示する際には、仮想物体を仮想空間中の所定の位置姿勢に配置し、これを仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成し、表示する。
【００４８】
図１０は、仮想物体のデータ構造の例を模式的に示した図である。ステップＳ３０１でモデルデータを読み込むと、図１０と同様の構成のデータがメモリ２０２上に作成される。同図では仮想物体（モデル）１００１は３つのユニット（１００２、１００３、１００４）により構成されており、ユニット１００３は更に、３つのパーツ（１００５、１００６、１００７）により構成されている。そしてこれら３つのパーツはそれぞれポリゴン１００８、１００９、１０１０により構成されている。そしてモデル１００１、ユニット１００２〜１００４、パーツ１００５から１００７はそれぞれ単位データとして記述される。
【００４９】
同図に示すように、モデルのデータとユニットのデータ間、およびユニットのデータとパーツのデータ間は子部品（”child”）、親部品（”parent”）の関係でリンクされている。また、各パーツはそれを構成するポリゴンのデータ（１００８〜１０１０）とリンクされている。このようなデータの構成とすることにより、リンクをたどって階層間を移動することができる。したがって、例えば特定のポリゴンが指定された場合に、そのポリゴンが属するパーツあるいはユニットを探索することが可能である。
【００５０】
例えば、干渉部分がポリゴン１００８であり、これをユニット単位でもって通知する場合には、ポリゴン１００８を含むパーツ１００５を探索し、さらにパーツ１００５を含むユニット１００３を探索した上で,ユニット１００３を構成するパーツ１００５〜１００７のそれぞれを構成する各ポリゴンを、その他のポリゴンとは異なる表示色でもって表示することになる。
【００５１】
図５は、ステップＳ３０４における提示部位の設定処理の詳細を示すフローチャートである。先ず、提示部位の階層を最も細かい詳細度であるポリゴンに設定する（ステップＳ５０１）。即ち、提示部位を「干渉部分を構成する全てのポリゴン」とする。次に、提示部位の階層と、ステップＳ３０３で設定した詳細度が示す階層とを比較し（ステップＳ５０２）、異なっていれば処理をステップＳ５０４に進め、提示部位の階層を１つ上げ（ステップＳ５０４）、処理をステップＳ５０２に進める。一方、ステップＳ５０２において、提示部位の階層と詳細度が等しければステップＳ５０３に処理を進める。ステップＳ５０３では,干渉部分を構成する全てのポリゴンから図１０に示したようなリンクをたどって、提示部位の階層の単位データを探索する。
【００５２】
このような処理により、初めは提示部位を「干渉部分を構成する全てのポリゴン」に設定し、ステップＳ３０３で設定した詳細度が示す階層が「ポリゴンの階層」ではない場合には提示部位の階層を１つあげて「干渉部分を構成するポリゴンが属する全てのパーツ」に設定し、更に、ステップＳ３０３で設定した詳細度が示す階層が「パーツの階層」ではない場合には提示部位の階層を１つあげて「干渉部分を構成するポリゴンが属するパーツが属する全てのユニット」に設定し、、、、というようにして、提示部位を、ステップＳ３０３で設定した詳細度が示す階層におけるものとすることができる。
【００５３】
以上の説明により、本実施形態によって、干渉部分を提示する単位を任意に設定することができるので、仮想空間における視点位置から干渉部分が遠いなどの問題で、干渉部分が見えにくい場合であっても、詳細度を下げることによって提示される範囲を拡大し、干渉部分に対する視認がより容易になるように調整することが出来る。
【００５４】
なお、本実施形態では提示部分を構成する各ポリゴンを、その他のポリゴンとは異なる表示色でもって表示することで、提示部分をより容易に視認できるようにしたが、提示部分の提示方法についてはこれに限定されるものではなく、様々な方法が考えられ、例えば以下のようなものが考えられる。
【００５５】
・  提示部位以外を非表示にする
・  提示部位以外を半透明状態で表示する
・  提示部位以外をワイヤフレームで表示する
・  提示部位を点滅表示させる
・  提示部位を明るく表示する
・  提示部位のバウンディングボックスを表示する
また当然、これらの方法を組み合わせて用いるようにしても良い。例えば、提示部位以外を半透明状態にして、提示部位を点滅表示にするようにしても良い。
【００５６】
なお、上記の説明では仮想物体がユニット・パーツ・ポリゴンの階層構造から構成されるとしたが、上記説明の本質はこれに限定されるものではなく、ステップＳ３０２で検出される干渉部分から、干渉部分を含む上位階層の構造を探索することが可能であれば、モデルデータがどのような階層から構成されるかは問わない。ただし、詳細度は探索可能な階層の中から選択しなければならない。
【００５７】
［第２の実施形態］
本実施形態では、ステップＳ３０３における詳細度の設定をＧＵＩ（グラフィカルユーザインターフェース）を介して行う。図６は、詳細度を設定するために操作するＧＵＩの表示例を示す図である。同図のＧＵＩ６０１は表示部２０８の表示画面に表示されるものであり、ＧＵＩ６０１は、仮想物体の表示領域６０２と、詳細度を設定するための領域６０３とに大別される。領域６０２には、干渉状態をチェックするための仮想物体が表示される。
【００５８】
本実施例では、選択可能な詳細度が「ユニット」「パーツ」「ポリゴン」「モデル」（仮想物体全体）の４種類だとする。領域６０３には、干渉部分をユニット単位でもって提示する（即ち提示部分をユニット単位とする）ことを指示するためのチェックボタン６０４、干渉部分をパーツ単位でもって提示する（即ち提示部分をパーツ単位とする）ことを指示するためのチェックボタン６０６、干渉部分をポリゴン単位でもって提示する（即ち提示部分をポリゴン単位とする）ことを指示するためのチェックボタン６０５、干渉部分をモデル単位でもって提示する（即ち提示部分をモデル単位とする）ことを指示するためのチェックボタン６０７が配されており、詳細度を設定するためには、これらのうちの１つをカーソル６０８でもって指示する。
【００５９】
より具体的には、マウス２０７を操作してカーソル６０８をこれら４つのチェックボックスのうち所望のチェックボックスの位置に移動させ、そこでマウスボタンをクリックすることで、所望のチェックボックスをオンにすることができるので、結果として所望のチェックボックスが示す単位でもって干渉部分の提示単位を設定することができる。同図ではチェックボックス６０６が選択されている。なお、各チェックボックスはデフォルトでは全て選択されていない状態であるとするが、これに限定されるものではない。
【００６０】
よって、ステップＳ３０３では、ＣＰＵ２０１は、同図のＧＵＩにおいて指示されたチェックボックスに対応する詳細度を設定する。
【００６１】
なお、詳細度の設定操作ができるＧＵＩの構成については同図に示したものに限定するものではなく、様々な構成が考えられる。
【００６２】
図７は、図６に示したＧＵＩを用いて詳細度を設定する場合の、ステップＳ３０３における詳細度設定処理のフローチャートである。
【００６３】
先ず、ＧＵＩを表示部２０８の表示画面上に表示し、チェックボックスに対する指示を受け付ける（ステップＳ７０１）。そして何れかのチェックボックスが指示された場合には対応する詳細度を設定する（ステップＳ７０２、７０３）。
【００６４】
［第３の実施形態］
第１、２の実施形態では、詳細度は手動でもって設定した。即ち、詳細度はコンピュータの操作者の判断に委ねていた。本実施形態では、詳細度はＣＰＵ２０１が判断して設定する。より具体的には、詳細度を干渉箇所の特定が容易なように極力細かくしつつ、提示部位が画面上で占める面積が所定の閾値以上になるように制御する。
【００６５】
本実施形態における、仮想物体同士の干渉部分の通知処理は、図３に示したフローチャートに従った処理において、ステップＳ３０３で図８に示したフローチャートに従った処理を行うことにより成される。なお、本実施例では、選択可能な詳細度が「ユニット」「パーツ」「ポリゴン」「モデル」（仮想物体全体）の４種類だとする。
【００６６】
よって以下では、本実施形態におけるステップＳ３０３において行う処理について、同処理のフローチャートを示す図８を用いて説明する。
【００６７】
先ず、詳細度を最も細かい詳細度であるポリゴン単位に設定する（ステップＳ８０１）。即ち、提示部位を「干渉部分を構成する全てのポリゴン」とする。次に、現在設定している詳細度が最も粗い詳細度（即ち仮想物体単位）であるのかを判断し（ステップＳ８０２）、詳細度を最も粗い詳細度としている場合には本処理を終了するのであるが、詳細度を最も粗い詳細度としていない場合には処理をステップＳ８０３に進め、詳細度に応じた提示部位を決定する（ステップＳ８０３）。これは第１の実施形態と同じである。そして決定した提示部位を表示部２０８の表示画面上に表示した場合の表示サイズ（例えば表示画素数）を求める（ステップＳ８０４）。
【００６８】
そして求めた表示画素数が所定の閾値以上である場合には本処理を終了するのであるが、求めた表示画素数が所定の閾値よりも小さい場合には処理をステップＳ８０６に進め、詳細度を１つ下げる（ステップＳ８０６）。そしてその後、処理をステップＳ８０２に進め、以降の処理を繰り返す。
【００６９】
即ち、初めは提示部位を「干渉部分を構成する全てのポリゴン」に設定し、設定した提示部位の表示画素数が所定の閾値よりも小さい場合には詳細度を１つ下げて提示部位を「干渉部分を構成するポリゴンが属する全てのパーツ」に設定し、更に、設定した提示部位の表示画素数が所定の閾値よりも小さい場合には詳細度を１つ下げて提示部位を「干渉部分を構成するポリゴンが属するパーツが属する全てのユニット」に設定し、更に、設定した提示部位の表示画素数が所定の閾値よりも小さい場合には詳細度を１つ下げて提示部位を「干渉部分を構成するポリゴンが属する仮想物体」に設定する。
【００７０】
このような処理を行うことで、極力干渉箇所を細かく提示しつつも、提示部位の表示画面上における表示サイズが閾値以上になるので、干渉部分が表示画面上で視認しやすくなる。
【００７１】
［第４の実施形態］
第３の実施形態では、詳細度を、提示部位の表示画面上における表示サイズが所定サイズ以上となるように設定していたが、本実施形態では、提示部位がその他の表示対象物に隠蔽されないように、詳細度を決定する。
【００７２】
よって、本実施形態における、仮想物体同士の干渉部分の通知処理は、図３に示したフローチャートに従った処理において、ステップＳ３０３で図９に示したフローチャートに従った処理を行うことにより成される。
【００７３】
よって以下では、本実施形態におけるステップＳ３０３において行う処理について、同処理のフローチャートを示す図９を用いて説明する。
【００７４】
先ず、詳細度を最も細かい詳細度であるポリゴン単位に設定する（ステップＳ９０１）。即ち、提示部位を「干渉部分を構成する全てのポリゴン」とする。次に、現在設定している詳細度が最も粗い詳細度（即ち仮想物体単位）であるのかを判断し（ステップＳ９０２）、詳細度を最も粗い詳細度としている場合には本処理を終了するのであるが、詳細度を最も粗い詳細度としていない場合には処理をステップＳ９０３に進め、詳細度に応じた提示部位を決定する（ステップＳ９０３）。これは第１の実施形態と同じである。ステップＳ９０４では、ステップＳ９０３で探索した部位の奥行き情報を得るために、提示部位のみを描画する。ここで、描画のための設定はステップＳ３０５での描画時と同じとする。ステップＳ９０５では、ステップＳ９０４でデプスバッファに書き込まれた画像をデプス画像１としてメモリ２０２に蓄積する。デプス画像１はデプスバッファ上に描画されたものであるので、周知の通り、デプス画像１を構成する各画素の画素値はデプス値である。
【００７５】
一方、第１の仮想物体、第２の仮想物体を含む全ての仮想物体を描画し（ステップＳ９０６）、なお、ステップＳ９０６の描画時の設定はステップＳ９０４の設定と同じとする。ステップＳ９０７でデプスバッファに書き込まれた画像をデプス画像２としてメモリ２０２に蓄積する。デプス画像２はデプスバッファ上に描画されたものであるので、周知の通り、デプス画像２を構成する各画素の画素値はデプス値である。
【００７６】
そして、デプス画像１中の提示部位を構成する各画素ｉ（＝１、２、、、、ｎ）のデプス値ａｉと、デプス画像２中で提示部位の描画領域を構成する各画素ｉのデプス値ｂｉとを比較し（ステップＳ９０８）、全ての画素について（全てのｉについて）ａｉ＝ｂｉであれば、提示部位はどの表示対象物にも隠蔽されていないということになるので本処理を終了するのであるが、全ての画素について（全てのｉについて）ａｉ＝ｂｉではない場合には、提示部位を構成する何れかの画素が何らかの表示対象物によって隠蔽されていることになるので処理をステップＳ９０９に進め、詳細度を１つ下げる（ステップＳ９０９）。そしてその後、処理をステップＳ９０２に進め、以降の処理を繰り返す。
【００７７】
即ち、初めは提示部位を「干渉部分を構成する全てのポリゴン」に設定し、提示部位のみを描画した場合と全仮想物体を描画した場合とで提示部位の奥行き値を比較し、提示部位全体について視点に近い側に何らかの表示対象物が存在する、即ち、提示部位が完全に隠蔽されている場合には詳細度を１つ下げ、提示部位の表示サイズを大きくし、提示部位をより隠蔽されにくいものにする。
【００７８】
このような処理を繰り返すことで、提示部位をその他のものに完全に隠蔽されることなく表示することができる。
【００７９】
なお、本実施形態では提示部位がその他のものに隠蔽されているのか否かを判断するためにデプス画像を用いたが、隠蔽の検出方法はこれに限定するものではない。
【００８０】
また、本実施形態と第３の実施形態とを組み合わせて用いるようにしても良い。すなわち、提示部位の隠れがない場合であっても、画面上での面積が所定の閾値を下回った場合には詳細度を下げることにする。これにより、本実施形態のみ、もしくは第３の実施形態のみよりも、より干渉部分に対する視認が容易になる。
【００８１】
［第５の実施形態］
上記各実施形態では、干渉箇所の提示範囲を１つの詳細度で設定した。しかし、これに限るものではなく、複数の詳細度を指定して干渉箇所を提示してもよい。その場合、それぞれの詳細度毎に異なる提示方法を適用するようにしても良い。例えば、ユニットレベルはバウンディングボックスを緑色で表示し、パーツレベルはワイヤフレームを黄色で表示し、ポリゴンは赤色の点滅で表示するという方法である。
【００８２】
このような提示方法を用いると、観察者が適宜着目する表示方法を選択することにより、特別な操作を行わずに詳細度を切り替えるのと同じ効果を得ることが出来る。あるいは、低いレベルから高いレベルの詳細度へと順に着目する表示方法を切り替えていくことにより、干渉箇所を画面中から見つけることが容易になる。
【００８３】
あるいは複数の詳細度を指定するのではなく、詳細度の最大値や最小値を設定するようにしても良い。例えば、詳細度の最小値をパーツに指定すれば、提示箇所はポリゴンおよびパーツのレベルで表示されることになる。
【００８４】
［第６の実施形態］
上記実施形態では、詳細度としてモデルデータの階層構造に基づく単位を用いていたが、他の単位を用いても構わない。
【００８５】
例えば、第３または第４の実施形態に記載されている方法を用いて干渉部分の投影画像における状況（表示領域や隠蔽状況）を識別し、第３または第４の実施形態で説明した条件を満たすように、干渉部分に対応するポリゴンを中心としてポリゴン単位で通知領域を広げるようにしても構わない。つまり、条件を満たさない場合は、現在の領域に隣接するポリゴンの領域を追加した領域を通知領域とする。
【００８６】
本実施形態によれば、階層構造に基づく単位にくらべて通知領域を細かく設定することができる。
【００８７】
また、通知領域は干渉した両方の仮想物体に設定しても、どちらか一方のみに設定するようにしても構わない。用途に応じて設定すればよい。
【００８８】
［第７の実施形態］
上記各実施形態では、干渉部分が複数個存在しても、それぞれの干渉部分は同じ詳細度でもって提示部位として提示されていたが、個々の干渉部分で異なる詳細度を設定するようにしても良い。その場合、それぞれの詳細度毎に異なる提示方法を適用するようにしても良い。例えば、ユニットレベルはバウンディングボックスを緑色で表示し、パーツレベルはワイヤフレームを黄色で表示し、ポリゴンは赤色の点滅で表示するという方法である。あるいは、干渉部位ごとに異なる提示方法を適用するようにしても良い。
【００８９】
［その他の実施形態］
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【００９０】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９１】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９２】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【００９３】
【図１】仮想物体同士の干渉部分を説明する図である。
【図２】画像処理装置の基本構成を示すブロック図である。
【図３】仮想物体同士の干渉部分の通知処理のフローチャートである。
【図４】ステップＳ３０１でメモリ２０２にロードするモデルデータの構成例を示す図である。
【図５】ステップＳ３０４における提示部位の設定処理の詳細を示すフローチャートである。
【図６】詳細度を設定するために操作するＧＵＩの表示例を示す図である。
【図７】図６に示したＧＵＩを用いて詳細度を設定する場合の、ステップＳ３０３における詳細度設定処理のフローチャートである。
【図８】第３の実施形態におけるステップＳ３０３において行う処理のフローチャートである。
【図９】第４の実施形態におけるステップＳ３０３において行う処理のフローチャートである。
【図１０】仮想物体の階層的データ構造を示した模式図である。
【図１】
2006178662.tif 000003
【図２】
2006178662.tif 000004
【図３】
2006178662.tif 000005
【図４】
2006178662.tif 000006
【図５】
2006178662.tif 000007
【図６】
2006178662.tif 000008
【図７】
2006178662.tif 000009
【図８】
2006178662.tif 000010
【図９】
2006178662.tif 000011
【図１０】
2006178662.tif 000012