情報処理方法、情報処理装置
【課題】 仮想物体同士の干渉部分を所望の通知形態でもって通知する為の技術を提供すること。
【解決手段】 S302で検索した干渉部分を通知するのであるが、通知する詳細度を設定し(S303)、設定された詳細度でもって、干渉部分を含む提示部位を設定する(S304)。
【解決手段】 S302で検索した干渉部分を通知するのであるが、通知する詳細度を設定し(S303)、設定された詳細度でもって、干渉部分を含む提示部位を設定する(S304)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想物体同士の干渉部分を通知するための技術に関するものである。
【背景技術】
【0002】
従来より、3次元形状モデルの階層的構造をシーングラフとして管理し、仮想物体同士の干渉箇所をシーングラフ上で探索することが可能であった(製品例:米国TGS社製のグラフィクスライブラリ”Open Inventor”(登録商標))。
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、干渉箇所が視点から遠くにある場合や、干渉箇所が他のオブジェクトに隠されている場合は、干渉箇所を表示しても視認することが困難であるか、視認できなかった。
【0004】
本発明は以上の問題に鑑みてなされたものであり、仮想物体同士の干渉部分を所望の通知形態でもって通知する為の技術を提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【0006】
即ち、干渉部分を通知する際の詳細度を設定する詳細度設定工程と、
第1の仮想物体と第2の仮想物体との干渉部分を検出する検出工程と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定工程と
を有することを特徴とする。
【0007】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【0008】
即ち、仮想物体を示すモデルデータを取得する取得工程と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成工程と、
前記仮想物体の干渉部分を検出する検出工程と、
前記干渉部分の前記投影画像における状況を識別する識別工程と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定工程と
を有することを特徴とする。
【0009】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【0010】
即ち、形状が階層構造をなす第1の仮想物体が第2の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理方法であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定工程と、
前記設定工程で設定された単位でもって前記干渉部分を通知する通知工程と
を備えることを特徴とする。
【0011】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【0012】
即ち、干渉部分を通知する際の詳細度を設定する詳細度設定手段と、
第1の仮想物体と第2の仮想物体との干渉部分を検出する検出手段と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定手段と
を有することを特徴とする。
【0013】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【0014】
即ち、仮想物体を示すモデルデータを取得する取得手段と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成手段と、
前記仮想物体の干渉部分を検出する検出手段と、
前記干渉部分の前記投影画像における状況を識別する識別手段と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定手段と
を有することを特徴とする。
【0015】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【0016】
即ち、形状が階層構造をなす第1の仮想物体が第2の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理装置であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定手段と、
前記設定手段によって設定された単位でもって前記干渉部分を通知する通知手段と
を備えることを特徴とする。
【発明の効果】
【0017】
本発明の構成により、仮想物体同士の干渉部分を良好に通知することができる。
【発明を実施するための最良の形態】
【0018】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【0019】
[第1の実施形態]
以下の説明で用いる仮想物体(3次元仮想物体)は階層的な構造を持つとする。すなわち、1つの仮想物体は単数または複数のユニットから構成され、1つのユニットは単数または複数のパーツから構成され、1つのパーツは多角形の平面(ポリゴン)の集合であるとする。
【0020】
よって本実施形態では、仮想物体同士が干渉部分を有する場合に、この干渉部分をユーザに通知するのであるが、この干渉部分をユニット・パーツ・ポリゴンのいずれの単位で通知するかをユーザが設定できる。
【0021】
図1は、仮想物体同士の干渉部分を説明する図である。図1(d)において、101、102はそれぞれ3次元仮想物体である。
【0022】
仮想物体101は6面体のオブジェクトとしての仮想物体であり、全体で1つのユニットとなっている。6面体の各面はパーツとしてユニットを構成し、その一面である107は同図点線で示す如く、8枚のポリゴンにより構成されている。
【0023】
一方、円柱形の仮想物体102は全体で1つのユニットおり、このユニットは上面、下面、側面の3つのパーツにより構成されている。また、上面、下面、側面のそれぞれは複数のポリゴンにより構成されている。
【0024】
即ち、仮想物体101、仮想物体102は単一のユニット、複数のパーツにより構成されていると共に、それぞれのパーツは複数のポリゴンにより構成されている。
【0025】
図1(a)は、仮想物体102との干渉部分を有している仮想物体101を示す図で、同図に示す如く、仮想物体101は仮想物体102とポリゴン103でもって干渉している。図1(b)はこの干渉の様子を上方から見た様子を示しており、同図に示す如く、仮想物体101は、パーツ107を構成するポリゴン103でもって、仮想物体102と干渉している。
【0026】
よって、ポリゴン単位で干渉する部分を通知する際には、図1(a)に示す如く、ポリゴン103をその他のポリゴンとは異なる表示色でもって表示すればよい。しかし、この仮想物体101、102が存在する仮想空間に設定された視点や仮想物体の配置によっては、このポリゴン103が見えないなどの問題が起こる可能性がある。例えば,図1(a)の場合は,干渉部位のポリゴン103が仮想物体102に隠されて見えない。そこで、このような場合には、上記の階層であるパーツ単位で干渉部分を通知する。すなわち、干渉しているポリゴン103が属するパーツを通知する。同図ではポリゴン103が属するパーツはパーツ107であるので、図1(c)に示す如く、パーツ107を、その他のパーツの表示色とは異なる表示色でもって表示する。
【0027】
このように、状況に応じて干渉部分の通知単位を変更する。
【0028】
図2は、上記各処理を実行する画像処理装置の基本構成を示すブロック図である。この画像処理装置には一般のPC(パーソナルコンピュータ)やWS(ワークステーション)などが適用可能である。
【0029】
201はCPUで、メモリ202にロードされているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する各処理を実行する。
【0030】
202はメモリで、外部記憶装置205からロードされたプログラムやデータを一時的に記憶するためのエリアを備えると共に、CPU201が各処理を実行する際に用いるワークエリアを備える。
【0031】
203はCPU201、メモリ202が接続されているバスであり、更にこのバス203には後述するインターフェース204が接続されている。
【0032】
インターフェース204には外部記憶装置205、キーボード206、マウス207、表示部208が接続されており、これらの機器と上記バス203に接続された上述の各部とのデータ通信の際のインターフェースとして機能する。
【0033】
205は外部記憶装置で、ハードディスクドライブ装置などの大容量情報記憶装置として機能するものであり、ここにはOS(オペレーティングシステム)や、コンピュータが行う後述の各処理をCPU201に実行させるためのプログラムやデータが保存されており、これらの一部もしくは全部はCPU201の制御に基づいてメモリ202にロードされる。
【0034】
206、207はそれぞれキーボード、マウスで、コンピュータの操作者が操作することで、各種の指示をCPU201に対して入力することができる。
【0035】
208は表示部で、CRTや液晶画面などにより構成されており、CPU201による処理結果を画像や文字などでもって表示することができる。
【0036】
次に、上記構成を有するコンピュータが行う、仮想物体同士の干渉部分の通知処理について、同処理のフローチャートを示す図3を用いて以下説明する。なお、同図のフローチャートに従った処理をCPU201に実行させるためのプログラムやデータは外部記憶装置205に保存されており、これをCPU201の制御に従ってメモリ202にロードし、CPU201がこのロードされたプログラムやデータを用いて処理を実行することで、本コンピュータは以下説明する各処理を実行することになる。
【0037】
先ず、外部記憶装置205に保存されている仮想物体のデータ(モデルデータ)をメモリ202にロードする(ステップS301)。
【0038】
図4は、ステップS301でメモリ202にロードするモデルデータのファイルフォーマットを示す図である。いま、この形状モデルがm個のユニットから構成されるとすると、データファイルにはユニットの情報が順番に記述されている。すなわち、401、402、403、404はそれぞれ第1、第2、第3から第m−1、第mのユニットのデータを記述した部分である。
【0039】
各ユニットの記述はユニットの区切りを表すユニットデリミタおよびパーツの記述から構成されている。例えば第1のユニットがn個のパーツから構成されるとすると、405、406、407・・・にはそれぞれ第1、第2、第3から第nまでのパーツのデータが記述されている。
【0040】
各パーツの記述はパーツの区切りを表すパーツデリミタおよびパーツ属性から構成される。なお、各パーツ属性にはポリゴンの形状を記述するデータや、ポリゴンを表示する際の色付けを設定するデータなどが含まれている。
【0041】
以上のように、モデルデータは、仮想物体を構成するユニット、ユニットを構成するパーツ、パーツを構成するポリゴン、というように、仮想物体を階層的に記述するためのデータである。なお、モデルデータの構成はこれに限定されるものではなく、様々な構成が考えられる。例えばモデルデータを、個々のパーツの属性を記述する複数のパーツデータファイルと、パーツ及びユニットの階層構造を記述する階層構造データファイルに分割することも可能である。
【0042】
本実施形態では、第1の仮想物体のモデルデータ、第2の仮想物体のモデルデータをメモリ202にロードする。
【0043】
次に、第1の仮想物体と第2の仮想物体との干渉状態をチェックし、干渉していれば、干渉した仮想物体それぞれについて干渉している部分を検索する(ステップS302)。このようなステップS302における一連の処理については周知の技術でもってなしえるものであるので、これに関する説明は省略する。
【0044】
次に、ステップS302で検索した干渉部分を通知するのであるが、通知する詳細度を設定する(ステップS303)。ここでの詳細度とは、所謂、どの単位でもって干渉部分を通知するのかを示すものであり、上述の通り、干渉部分をポリゴン単位でもって通知するのか、それとも干渉部分を含むパーツ単位でもって通知するのか、それとも干渉部分を含むパーツが属するユニット単位でもって通知するのかを示すものである。
【0045】
また、詳細度の設定方法については特に限定するものではないが、例えば、詳細度をポリゴン単位に設定するためのキー、詳細度をパーツ単位に設定するためのキー、詳細度をユニット単位に設定するためのキーをそれぞれキーボード206に配されたキーに割り当てておき、何れかのキーが押下されたことをCPU201が検知した場合には、検知したキーに割り当てられた詳細度を設定する。なお、設定指示が成されなかった場合には、デフォルトの詳細度(例えばポリゴン単位)を設定する。
【0046】
次に、設定された詳細度でもって、干渉部分を含む提示部位を設定する(ステップS304)。即ち、詳細度をポリゴン単位に設定した場合には、干渉部分を構成する全てのポリゴンを提示部位として設定するし、詳細度をパーツ単位に設定した場合には、干渉部分が属するパーツ(を構成する全てのポリゴン)を提示部位として設定するし、詳細度をユニット単位に設定した場合には、干渉部分が属するパーツが属するユニット(を構成する全てのポリゴン)を提示部位として設定する。本ステップにおける処理については後述する。
【0047】
そして第1の仮想物体、第2の仮想物体を表示部208の表示画面に表示するのであるが、その際に、各仮想物体において提示部位を構成する各ポリゴンを、その他のポリゴンとは異なる表示色でもって表示する(ステップS305)。表示色としては、例えば強調色としての赤を用いればよい。なお、仮想物体の画像を表示する際には、仮想物体を仮想空間中の所定の位置姿勢に配置し、これを仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成し、表示する。
【0048】
図10は、仮想物体のデータ構造の例を模式的に示した図である。ステップS301でモデルデータを読み込むと、図10と同様の構成のデータがメモリ202上に作成される。同図では仮想物体(モデル)1001は3つのユニット(1002、1003、1004)により構成されており、ユニット1003は更に、3つのパーツ(1005、1006、1007)により構成されている。そしてこれら3つのパーツはそれぞれポリゴン1008、1009、1010により構成されている。そしてモデル1001、ユニット1002〜1004、パーツ1005から1007はそれぞれ単位データとして記述される。
【0049】
同図に示すように、モデルのデータとユニットのデータ間、およびユニットのデータとパーツのデータ間は子部品(”child”)、親部品(”parent”)の関係でリンクされている。また、各パーツはそれを構成するポリゴンのデータ(1008〜1010)とリンクされている。このようなデータの構成とすることにより、リンクをたどって階層間を移動することができる。したがって、例えば特定のポリゴンが指定された場合に、そのポリゴンが属するパーツあるいはユニットを探索することが可能である。
【0050】
例えば、干渉部分がポリゴン1008であり、これをユニット単位でもって通知する場合には、ポリゴン1008を含むパーツ1005を探索し、さらにパーツ1005を含むユニット1003を探索した上で,ユニット1003を構成するパーツ1005〜1007のそれぞれを構成する各ポリゴンを、その他のポリゴンとは異なる表示色でもって表示することになる。
【0051】
図5は、ステップS304における提示部位の設定処理の詳細を示すフローチャートである。先ず、提示部位の階層を最も細かい詳細度であるポリゴンに設定する(ステップS501)。即ち、提示部位を「干渉部分を構成する全てのポリゴン」とする。次に、提示部位の階層と、ステップS303で設定した詳細度が示す階層とを比較し(ステップS502)、異なっていれば処理をステップS504に進め、提示部位の階層を1つ上げ(ステップS504)、処理をステップS502に進める。一方、ステップS502において、提示部位の階層と詳細度が等しければステップS503に処理を進める。ステップS503では,干渉部分を構成する全てのポリゴンから図10に示したようなリンクをたどって、提示部位の階層の単位データを探索する。
【0052】
このような処理により、初めは提示部位を「干渉部分を構成する全てのポリゴン」に設定し、ステップS303で設定した詳細度が示す階層が「ポリゴンの階層」ではない場合には提示部位の階層を1つあげて「干渉部分を構成するポリゴンが属する全てのパーツ」に設定し、更に、ステップS303で設定した詳細度が示す階層が「パーツの階層」ではない場合には提示部位の階層を1つあげて「干渉部分を構成するポリゴンが属するパーツが属する全てのユニット」に設定し、、、、というようにして、提示部位を、ステップS303で設定した詳細度が示す階層におけるものとすることができる。
【0053】
以上の説明により、本実施形態によって、干渉部分を提示する単位を任意に設定することができるので、仮想空間における視点位置から干渉部分が遠いなどの問題で、干渉部分が見えにくい場合であっても、詳細度を下げることによって提示される範囲を拡大し、干渉部分に対する視認がより容易になるように調整することが出来る。
【0054】
なお、本実施形態では提示部分を構成する各ポリゴンを、その他のポリゴンとは異なる表示色でもって表示することで、提示部分をより容易に視認できるようにしたが、提示部分の提示方法についてはこれに限定されるものではなく、様々な方法が考えられ、例えば以下のようなものが考えられる。
【0055】
・ 提示部位以外を非表示にする
・ 提示部位以外を半透明状態で表示する
・ 提示部位以外をワイヤフレームで表示する
・ 提示部位を点滅表示させる
・ 提示部位を明るく表示する
・ 提示部位のバウンディングボックスを表示する
また当然、これらの方法を組み合わせて用いるようにしても良い。例えば、提示部位以外を半透明状態にして、提示部位を点滅表示にするようにしても良い。
【0056】
なお、上記の説明では仮想物体がユニット・パーツ・ポリゴンの階層構造から構成されるとしたが、上記説明の本質はこれに限定されるものではなく、ステップS302で検出される干渉部分から、干渉部分を含む上位階層の構造を探索することが可能であれば、モデルデータがどのような階層から構成されるかは問わない。ただし、詳細度は探索可能な階層の中から選択しなければならない。
【0057】
[第2の実施形態]
本実施形態では、ステップS303における詳細度の設定をGUI(グラフィカルユーザインターフェース)を介して行う。図6は、詳細度を設定するために操作するGUIの表示例を示す図である。同図のGUI601は表示部208の表示画面に表示されるものであり、GUI601は、仮想物体の表示領域602と、詳細度を設定するための領域603とに大別される。領域602には、干渉状態をチェックするための仮想物体が表示される。
【0058】
本実施例では、選択可能な詳細度が「ユニット」「パーツ」「ポリゴン」「モデル」(仮想物体全体)の4種類だとする。領域603には、干渉部分をユニット単位でもって提示する(即ち提示部分をユニット単位とする)ことを指示するためのチェックボタン604、干渉部分をパーツ単位でもって提示する(即ち提示部分をパーツ単位とする)ことを指示するためのチェックボタン606、干渉部分をポリゴン単位でもって提示する(即ち提示部分をポリゴン単位とする)ことを指示するためのチェックボタン605、干渉部分をモデル単位でもって提示する(即ち提示部分をモデル単位とする)ことを指示するためのチェックボタン607が配されており、詳細度を設定するためには、これらのうちの1つをカーソル608でもって指示する。
【0059】
より具体的には、マウス207を操作してカーソル608をこれら4つのチェックボックスのうち所望のチェックボックスの位置に移動させ、そこでマウスボタンをクリックすることで、所望のチェックボックスをオンにすることができるので、結果として所望のチェックボックスが示す単位でもって干渉部分の提示単位を設定することができる。同図ではチェックボックス606が選択されている。なお、各チェックボックスはデフォルトでは全て選択されていない状態であるとするが、これに限定されるものではない。
【0060】
よって、ステップS303では、CPU201は、同図のGUIにおいて指示されたチェックボックスに対応する詳細度を設定する。
【0061】
なお、詳細度の設定操作ができるGUIの構成については同図に示したものに限定するものではなく、様々な構成が考えられる。
【0062】
図7は、図6に示したGUIを用いて詳細度を設定する場合の、ステップS303における詳細度設定処理のフローチャートである。
【0063】
先ず、GUIを表示部208の表示画面上に表示し、チェックボックスに対する指示を受け付ける(ステップS701)。そして何れかのチェックボックスが指示された場合には対応する詳細度を設定する(ステップS702、703)。
【0064】
[第3の実施形態]
第1、2の実施形態では、詳細度は手動でもって設定した。即ち、詳細度はコンピュータの操作者の判断に委ねていた。本実施形態では、詳細度はCPU201が判断して設定する。より具体的には、詳細度を干渉箇所の特定が容易なように極力細かくしつつ、提示部位が画面上で占める面積が所定の閾値以上になるように制御する。
【0065】
本実施形態における、仮想物体同士の干渉部分の通知処理は、図3に示したフローチャートに従った処理において、ステップS303で図8に示したフローチャートに従った処理を行うことにより成される。なお、本実施例では、選択可能な詳細度が「ユニット」「パーツ」「ポリゴン」「モデル」(仮想物体全体)の4種類だとする。
【0066】
よって以下では、本実施形態におけるステップS303において行う処理について、同処理のフローチャートを示す図8を用いて説明する。
【0067】
先ず、詳細度を最も細かい詳細度であるポリゴン単位に設定する(ステップS801)。即ち、提示部位を「干渉部分を構成する全てのポリゴン」とする。次に、現在設定している詳細度が最も粗い詳細度(即ち仮想物体単位)であるのかを判断し(ステップS802)、詳細度を最も粗い詳細度としている場合には本処理を終了するのであるが、詳細度を最も粗い詳細度としていない場合には処理をステップS803に進め、詳細度に応じた提示部位を決定する(ステップS803)。これは第1の実施形態と同じである。そして決定した提示部位を表示部208の表示画面上に表示した場合の表示サイズ(例えば表示画素数)を求める(ステップS804)。
【0068】
そして求めた表示画素数が所定の閾値以上である場合には本処理を終了するのであるが、求めた表示画素数が所定の閾値よりも小さい場合には処理をステップS806に進め、詳細度を1つ下げる(ステップS806)。そしてその後、処理をステップS802に進め、以降の処理を繰り返す。
【0069】
即ち、初めは提示部位を「干渉部分を構成する全てのポリゴン」に設定し、設定した提示部位の表示画素数が所定の閾値よりも小さい場合には詳細度を1つ下げて提示部位を「干渉部分を構成するポリゴンが属する全てのパーツ」に設定し、更に、設定した提示部位の表示画素数が所定の閾値よりも小さい場合には詳細度を1つ下げて提示部位を「干渉部分を構成するポリゴンが属するパーツが属する全てのユニット」に設定し、更に、設定した提示部位の表示画素数が所定の閾値よりも小さい場合には詳細度を1つ下げて提示部位を「干渉部分を構成するポリゴンが属する仮想物体」に設定する。
【0070】
このような処理を行うことで、極力干渉箇所を細かく提示しつつも、提示部位の表示画面上における表示サイズが閾値以上になるので、干渉部分が表示画面上で視認しやすくなる。
【0071】
[第4の実施形態]
第3の実施形態では、詳細度を、提示部位の表示画面上における表示サイズが所定サイズ以上となるように設定していたが、本実施形態では、提示部位がその他の表示対象物に隠蔽されないように、詳細度を決定する。
【0072】
よって、本実施形態における、仮想物体同士の干渉部分の通知処理は、図3に示したフローチャートに従った処理において、ステップS303で図9に示したフローチャートに従った処理を行うことにより成される。
【0073】
よって以下では、本実施形態におけるステップS303において行う処理について、同処理のフローチャートを示す図9を用いて説明する。
【0074】
先ず、詳細度を最も細かい詳細度であるポリゴン単位に設定する(ステップS901)。即ち、提示部位を「干渉部分を構成する全てのポリゴン」とする。次に、現在設定している詳細度が最も粗い詳細度(即ち仮想物体単位)であるのかを判断し(ステップS902)、詳細度を最も粗い詳細度としている場合には本処理を終了するのであるが、詳細度を最も粗い詳細度としていない場合には処理をステップS903に進め、詳細度に応じた提示部位を決定する(ステップS903)。これは第1の実施形態と同じである。ステップS904では、ステップS903で探索した部位の奥行き情報を得るために、提示部位のみを描画する。ここで、描画のための設定はステップS305での描画時と同じとする。ステップS905では、ステップS904でデプスバッファに書き込まれた画像をデプス画像1としてメモリ202に蓄積する。デプス画像1はデプスバッファ上に描画されたものであるので、周知の通り、デプス画像1を構成する各画素の画素値はデプス値である。
【0075】
一方、第1の仮想物体、第2の仮想物体を含む全ての仮想物体を描画し(ステップS906)、なお、ステップS906の描画時の設定はステップS904の設定と同じとする。ステップS907でデプスバッファに書き込まれた画像をデプス画像2としてメモリ202に蓄積する。デプス画像2はデプスバッファ上に描画されたものであるので、周知の通り、デプス画像2を構成する各画素の画素値はデプス値である。
【0076】
そして、デプス画像1中の提示部位を構成する各画素i(=1、2、、、、n)のデプス値aiと、デプス画像2中で提示部位の描画領域を構成する各画素iのデプス値biとを比較し(ステップS908)、全ての画素について(全てのiについて)ai=biであれば、提示部位はどの表示対象物にも隠蔽されていないということになるので本処理を終了するのであるが、全ての画素について(全てのiについて)ai=biではない場合には、提示部位を構成する何れかの画素が何らかの表示対象物によって隠蔽されていることになるので処理をステップS909に進め、詳細度を1つ下げる(ステップS909)。そしてその後、処理をステップS902に進め、以降の処理を繰り返す。
【0077】
即ち、初めは提示部位を「干渉部分を構成する全てのポリゴン」に設定し、提示部位のみを描画した場合と全仮想物体を描画した場合とで提示部位の奥行き値を比較し、提示部位全体について視点に近い側に何らかの表示対象物が存在する、即ち、提示部位が完全に隠蔽されている場合には詳細度を1つ下げ、提示部位の表示サイズを大きくし、提示部位をより隠蔽されにくいものにする。
【0078】
このような処理を繰り返すことで、提示部位をその他のものに完全に隠蔽されることなく表示することができる。
【0079】
なお、本実施形態では提示部位がその他のものに隠蔽されているのか否かを判断するためにデプス画像を用いたが、隠蔽の検出方法はこれに限定するものではない。
【0080】
また、本実施形態と第3の実施形態とを組み合わせて用いるようにしても良い。すなわち、提示部位の隠れがない場合であっても、画面上での面積が所定の閾値を下回った場合には詳細度を下げることにする。これにより、本実施形態のみ、もしくは第3の実施形態のみよりも、より干渉部分に対する視認が容易になる。
【0081】
[第5の実施形態]
上記各実施形態では、干渉箇所の提示範囲を1つの詳細度で設定した。しかし、これに限るものではなく、複数の詳細度を指定して干渉箇所を提示してもよい。その場合、それぞれの詳細度毎に異なる提示方法を適用するようにしても良い。例えば、ユニットレベルはバウンディングボックスを緑色で表示し、パーツレベルはワイヤフレームを黄色で表示し、ポリゴンは赤色の点滅で表示するという方法である。
【0082】
このような提示方法を用いると、観察者が適宜着目する表示方法を選択することにより、特別な操作を行わずに詳細度を切り替えるのと同じ効果を得ることが出来る。あるいは、低いレベルから高いレベルの詳細度へと順に着目する表示方法を切り替えていくことにより、干渉箇所を画面中から見つけることが容易になる。
【0083】
あるいは複数の詳細度を指定するのではなく、詳細度の最大値や最小値を設定するようにしても良い。例えば、詳細度の最小値をパーツに指定すれば、提示箇所はポリゴンおよびパーツのレベルで表示されることになる。
【0084】
[第6の実施形態]
上記実施形態では、詳細度としてモデルデータの階層構造に基づく単位を用いていたが、他の単位を用いても構わない。
【0085】
例えば、第3または第4の実施形態に記載されている方法を用いて干渉部分の投影画像における状況(表示領域や隠蔽状況)を識別し、第3または第4の実施形態で説明した条件を満たすように、干渉部分に対応するポリゴンを中心としてポリゴン単位で通知領域を広げるようにしても構わない。つまり、条件を満たさない場合は、現在の領域に隣接するポリゴンの領域を追加した領域を通知領域とする。
【0086】
本実施形態によれば、階層構造に基づく単位にくらべて通知領域を細かく設定することができる。
【0087】
また、通知領域は干渉した両方の仮想物体に設定しても、どちらか一方のみに設定するようにしても構わない。用途に応じて設定すればよい。
【0088】
[第7の実施形態]
上記各実施形態では、干渉部分が複数個存在しても、それぞれの干渉部分は同じ詳細度でもって提示部位として提示されていたが、個々の干渉部分で異なる詳細度を設定するようにしても良い。その場合、それぞれの詳細度毎に異なる提示方法を適用するようにしても良い。例えば、ユニットレベルはバウンディングボックスを緑色で表示し、パーツレベルはワイヤフレームを黄色で表示し、ポリゴンは赤色の点滅で表示するという方法である。あるいは、干渉部位ごとに異なる提示方法を適用するようにしても良い。
【0089】
[その他の実施形態]
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【0090】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0091】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0092】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【0093】
【図1】仮想物体同士の干渉部分を説明する図である。
【図2】画像処理装置の基本構成を示すブロック図である。
【図3】仮想物体同士の干渉部分の通知処理のフローチャートである。
【図4】ステップS301でメモリ202にロードするモデルデータの構成例を示す図である。
【図5】ステップS304における提示部位の設定処理の詳細を示すフローチャートである。
【図6】詳細度を設定するために操作するGUIの表示例を示す図である。
【図7】図6に示したGUIを用いて詳細度を設定する場合の、ステップS303における詳細度設定処理のフローチャートである。
【図8】第3の実施形態におけるステップS303において行う処理のフローチャートである。
【図9】第4の実施形態におけるステップS303において行う処理のフローチャートである。
【図10】仮想物体の階層的データ構造を示した模式図である。
【技術分野】
【0001】
本発明は、仮想物体同士の干渉部分を通知するための技術に関するものである。
【背景技術】
【0002】
従来より、3次元形状モデルの階層的構造をシーングラフとして管理し、仮想物体同士の干渉箇所をシーングラフ上で探索することが可能であった(製品例:米国TGS社製のグラフィクスライブラリ”Open Inventor”(登録商標))。
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、干渉箇所が視点から遠くにある場合や、干渉箇所が他のオブジェクトに隠されている場合は、干渉箇所を表示しても視認することが困難であるか、視認できなかった。
【0004】
本発明は以上の問題に鑑みてなされたものであり、仮想物体同士の干渉部分を所望の通知形態でもって通知する為の技術を提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【0006】
即ち、干渉部分を通知する際の詳細度を設定する詳細度設定工程と、
第1の仮想物体と第2の仮想物体との干渉部分を検出する検出工程と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定工程と
を有することを特徴とする。
【0007】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【0008】
即ち、仮想物体を示すモデルデータを取得する取得工程と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成工程と、
前記仮想物体の干渉部分を検出する検出工程と、
前記干渉部分の前記投影画像における状況を識別する識別工程と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定工程と
を有することを特徴とする。
【0009】
本発明の目的を達成するために、例えば、本発明の情報処理方法は以下の構成を備える。
【0010】
即ち、形状が階層構造をなす第1の仮想物体が第2の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理方法であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定工程と、
前記設定工程で設定された単位でもって前記干渉部分を通知する通知工程と
を備えることを特徴とする。
【0011】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【0012】
即ち、干渉部分を通知する際の詳細度を設定する詳細度設定手段と、
第1の仮想物体と第2の仮想物体との干渉部分を検出する検出手段と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定手段と
を有することを特徴とする。
【0013】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【0014】
即ち、仮想物体を示すモデルデータを取得する取得手段と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成手段と、
前記仮想物体の干渉部分を検出する検出手段と、
前記干渉部分の前記投影画像における状況を識別する識別手段と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定手段と
を有することを特徴とする。
【0015】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。
【0016】
即ち、形状が階層構造をなす第1の仮想物体が第2の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理装置であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定手段と、
前記設定手段によって設定された単位でもって前記干渉部分を通知する通知手段と
を備えることを特徴とする。
【発明の効果】
【0017】
本発明の構成により、仮想物体同士の干渉部分を良好に通知することができる。
【発明を実施するための最良の形態】
【0018】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【0019】
[第1の実施形態]
以下の説明で用いる仮想物体(3次元仮想物体)は階層的な構造を持つとする。すなわち、1つの仮想物体は単数または複数のユニットから構成され、1つのユニットは単数または複数のパーツから構成され、1つのパーツは多角形の平面(ポリゴン)の集合であるとする。
【0020】
よって本実施形態では、仮想物体同士が干渉部分を有する場合に、この干渉部分をユーザに通知するのであるが、この干渉部分をユニット・パーツ・ポリゴンのいずれの単位で通知するかをユーザが設定できる。
【0021】
図1は、仮想物体同士の干渉部分を説明する図である。図1(d)において、101、102はそれぞれ3次元仮想物体である。
【0022】
仮想物体101は6面体のオブジェクトとしての仮想物体であり、全体で1つのユニットとなっている。6面体の各面はパーツとしてユニットを構成し、その一面である107は同図点線で示す如く、8枚のポリゴンにより構成されている。
【0023】
一方、円柱形の仮想物体102は全体で1つのユニットおり、このユニットは上面、下面、側面の3つのパーツにより構成されている。また、上面、下面、側面のそれぞれは複数のポリゴンにより構成されている。
【0024】
即ち、仮想物体101、仮想物体102は単一のユニット、複数のパーツにより構成されていると共に、それぞれのパーツは複数のポリゴンにより構成されている。
【0025】
図1(a)は、仮想物体102との干渉部分を有している仮想物体101を示す図で、同図に示す如く、仮想物体101は仮想物体102とポリゴン103でもって干渉している。図1(b)はこの干渉の様子を上方から見た様子を示しており、同図に示す如く、仮想物体101は、パーツ107を構成するポリゴン103でもって、仮想物体102と干渉している。
【0026】
よって、ポリゴン単位で干渉する部分を通知する際には、図1(a)に示す如く、ポリゴン103をその他のポリゴンとは異なる表示色でもって表示すればよい。しかし、この仮想物体101、102が存在する仮想空間に設定された視点や仮想物体の配置によっては、このポリゴン103が見えないなどの問題が起こる可能性がある。例えば,図1(a)の場合は,干渉部位のポリゴン103が仮想物体102に隠されて見えない。そこで、このような場合には、上記の階層であるパーツ単位で干渉部分を通知する。すなわち、干渉しているポリゴン103が属するパーツを通知する。同図ではポリゴン103が属するパーツはパーツ107であるので、図1(c)に示す如く、パーツ107を、その他のパーツの表示色とは異なる表示色でもって表示する。
【0027】
このように、状況に応じて干渉部分の通知単位を変更する。
【0028】
図2は、上記各処理を実行する画像処理装置の基本構成を示すブロック図である。この画像処理装置には一般のPC(パーソナルコンピュータ)やWS(ワークステーション)などが適用可能である。
【0029】
201はCPUで、メモリ202にロードされているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する各処理を実行する。
【0030】
202はメモリで、外部記憶装置205からロードされたプログラムやデータを一時的に記憶するためのエリアを備えると共に、CPU201が各処理を実行する際に用いるワークエリアを備える。
【0031】
203はCPU201、メモリ202が接続されているバスであり、更にこのバス203には後述するインターフェース204が接続されている。
【0032】
インターフェース204には外部記憶装置205、キーボード206、マウス207、表示部208が接続されており、これらの機器と上記バス203に接続された上述の各部とのデータ通信の際のインターフェースとして機能する。
【0033】
205は外部記憶装置で、ハードディスクドライブ装置などの大容量情報記憶装置として機能するものであり、ここにはOS(オペレーティングシステム)や、コンピュータが行う後述の各処理をCPU201に実行させるためのプログラムやデータが保存されており、これらの一部もしくは全部はCPU201の制御に基づいてメモリ202にロードされる。
【0034】
206、207はそれぞれキーボード、マウスで、コンピュータの操作者が操作することで、各種の指示をCPU201に対して入力することができる。
【0035】
208は表示部で、CRTや液晶画面などにより構成されており、CPU201による処理結果を画像や文字などでもって表示することができる。
【0036】
次に、上記構成を有するコンピュータが行う、仮想物体同士の干渉部分の通知処理について、同処理のフローチャートを示す図3を用いて以下説明する。なお、同図のフローチャートに従った処理をCPU201に実行させるためのプログラムやデータは外部記憶装置205に保存されており、これをCPU201の制御に従ってメモリ202にロードし、CPU201がこのロードされたプログラムやデータを用いて処理を実行することで、本コンピュータは以下説明する各処理を実行することになる。
【0037】
先ず、外部記憶装置205に保存されている仮想物体のデータ(モデルデータ)をメモリ202にロードする(ステップS301)。
【0038】
図4は、ステップS301でメモリ202にロードするモデルデータのファイルフォーマットを示す図である。いま、この形状モデルがm個のユニットから構成されるとすると、データファイルにはユニットの情報が順番に記述されている。すなわち、401、402、403、404はそれぞれ第1、第2、第3から第m−1、第mのユニットのデータを記述した部分である。
【0039】
各ユニットの記述はユニットの区切りを表すユニットデリミタおよびパーツの記述から構成されている。例えば第1のユニットがn個のパーツから構成されるとすると、405、406、407・・・にはそれぞれ第1、第2、第3から第nまでのパーツのデータが記述されている。
【0040】
各パーツの記述はパーツの区切りを表すパーツデリミタおよびパーツ属性から構成される。なお、各パーツ属性にはポリゴンの形状を記述するデータや、ポリゴンを表示する際の色付けを設定するデータなどが含まれている。
【0041】
以上のように、モデルデータは、仮想物体を構成するユニット、ユニットを構成するパーツ、パーツを構成するポリゴン、というように、仮想物体を階層的に記述するためのデータである。なお、モデルデータの構成はこれに限定されるものではなく、様々な構成が考えられる。例えばモデルデータを、個々のパーツの属性を記述する複数のパーツデータファイルと、パーツ及びユニットの階層構造を記述する階層構造データファイルに分割することも可能である。
【0042】
本実施形態では、第1の仮想物体のモデルデータ、第2の仮想物体のモデルデータをメモリ202にロードする。
【0043】
次に、第1の仮想物体と第2の仮想物体との干渉状態をチェックし、干渉していれば、干渉した仮想物体それぞれについて干渉している部分を検索する(ステップS302)。このようなステップS302における一連の処理については周知の技術でもってなしえるものであるので、これに関する説明は省略する。
【0044】
次に、ステップS302で検索した干渉部分を通知するのであるが、通知する詳細度を設定する(ステップS303)。ここでの詳細度とは、所謂、どの単位でもって干渉部分を通知するのかを示すものであり、上述の通り、干渉部分をポリゴン単位でもって通知するのか、それとも干渉部分を含むパーツ単位でもって通知するのか、それとも干渉部分を含むパーツが属するユニット単位でもって通知するのかを示すものである。
【0045】
また、詳細度の設定方法については特に限定するものではないが、例えば、詳細度をポリゴン単位に設定するためのキー、詳細度をパーツ単位に設定するためのキー、詳細度をユニット単位に設定するためのキーをそれぞれキーボード206に配されたキーに割り当てておき、何れかのキーが押下されたことをCPU201が検知した場合には、検知したキーに割り当てられた詳細度を設定する。なお、設定指示が成されなかった場合には、デフォルトの詳細度(例えばポリゴン単位)を設定する。
【0046】
次に、設定された詳細度でもって、干渉部分を含む提示部位を設定する(ステップS304)。即ち、詳細度をポリゴン単位に設定した場合には、干渉部分を構成する全てのポリゴンを提示部位として設定するし、詳細度をパーツ単位に設定した場合には、干渉部分が属するパーツ(を構成する全てのポリゴン)を提示部位として設定するし、詳細度をユニット単位に設定した場合には、干渉部分が属するパーツが属するユニット(を構成する全てのポリゴン)を提示部位として設定する。本ステップにおける処理については後述する。
【0047】
そして第1の仮想物体、第2の仮想物体を表示部208の表示画面に表示するのであるが、その際に、各仮想物体において提示部位を構成する各ポリゴンを、その他のポリゴンとは異なる表示色でもって表示する(ステップS305)。表示色としては、例えば強調色としての赤を用いればよい。なお、仮想物体の画像を表示する際には、仮想物体を仮想空間中の所定の位置姿勢に配置し、これを仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成し、表示する。
【0048】
図10は、仮想物体のデータ構造の例を模式的に示した図である。ステップS301でモデルデータを読み込むと、図10と同様の構成のデータがメモリ202上に作成される。同図では仮想物体(モデル)1001は3つのユニット(1002、1003、1004)により構成されており、ユニット1003は更に、3つのパーツ(1005、1006、1007)により構成されている。そしてこれら3つのパーツはそれぞれポリゴン1008、1009、1010により構成されている。そしてモデル1001、ユニット1002〜1004、パーツ1005から1007はそれぞれ単位データとして記述される。
【0049】
同図に示すように、モデルのデータとユニットのデータ間、およびユニットのデータとパーツのデータ間は子部品(”child”)、親部品(”parent”)の関係でリンクされている。また、各パーツはそれを構成するポリゴンのデータ(1008〜1010)とリンクされている。このようなデータの構成とすることにより、リンクをたどって階層間を移動することができる。したがって、例えば特定のポリゴンが指定された場合に、そのポリゴンが属するパーツあるいはユニットを探索することが可能である。
【0050】
例えば、干渉部分がポリゴン1008であり、これをユニット単位でもって通知する場合には、ポリゴン1008を含むパーツ1005を探索し、さらにパーツ1005を含むユニット1003を探索した上で,ユニット1003を構成するパーツ1005〜1007のそれぞれを構成する各ポリゴンを、その他のポリゴンとは異なる表示色でもって表示することになる。
【0051】
図5は、ステップS304における提示部位の設定処理の詳細を示すフローチャートである。先ず、提示部位の階層を最も細かい詳細度であるポリゴンに設定する(ステップS501)。即ち、提示部位を「干渉部分を構成する全てのポリゴン」とする。次に、提示部位の階層と、ステップS303で設定した詳細度が示す階層とを比較し(ステップS502)、異なっていれば処理をステップS504に進め、提示部位の階層を1つ上げ(ステップS504)、処理をステップS502に進める。一方、ステップS502において、提示部位の階層と詳細度が等しければステップS503に処理を進める。ステップS503では,干渉部分を構成する全てのポリゴンから図10に示したようなリンクをたどって、提示部位の階層の単位データを探索する。
【0052】
このような処理により、初めは提示部位を「干渉部分を構成する全てのポリゴン」に設定し、ステップS303で設定した詳細度が示す階層が「ポリゴンの階層」ではない場合には提示部位の階層を1つあげて「干渉部分を構成するポリゴンが属する全てのパーツ」に設定し、更に、ステップS303で設定した詳細度が示す階層が「パーツの階層」ではない場合には提示部位の階層を1つあげて「干渉部分を構成するポリゴンが属するパーツが属する全てのユニット」に設定し、、、、というようにして、提示部位を、ステップS303で設定した詳細度が示す階層におけるものとすることができる。
【0053】
以上の説明により、本実施形態によって、干渉部分を提示する単位を任意に設定することができるので、仮想空間における視点位置から干渉部分が遠いなどの問題で、干渉部分が見えにくい場合であっても、詳細度を下げることによって提示される範囲を拡大し、干渉部分に対する視認がより容易になるように調整することが出来る。
【0054】
なお、本実施形態では提示部分を構成する各ポリゴンを、その他のポリゴンとは異なる表示色でもって表示することで、提示部分をより容易に視認できるようにしたが、提示部分の提示方法についてはこれに限定されるものではなく、様々な方法が考えられ、例えば以下のようなものが考えられる。
【0055】
・ 提示部位以外を非表示にする
・ 提示部位以外を半透明状態で表示する
・ 提示部位以外をワイヤフレームで表示する
・ 提示部位を点滅表示させる
・ 提示部位を明るく表示する
・ 提示部位のバウンディングボックスを表示する
また当然、これらの方法を組み合わせて用いるようにしても良い。例えば、提示部位以外を半透明状態にして、提示部位を点滅表示にするようにしても良い。
【0056】
なお、上記の説明では仮想物体がユニット・パーツ・ポリゴンの階層構造から構成されるとしたが、上記説明の本質はこれに限定されるものではなく、ステップS302で検出される干渉部分から、干渉部分を含む上位階層の構造を探索することが可能であれば、モデルデータがどのような階層から構成されるかは問わない。ただし、詳細度は探索可能な階層の中から選択しなければならない。
【0057】
[第2の実施形態]
本実施形態では、ステップS303における詳細度の設定をGUI(グラフィカルユーザインターフェース)を介して行う。図6は、詳細度を設定するために操作するGUIの表示例を示す図である。同図のGUI601は表示部208の表示画面に表示されるものであり、GUI601は、仮想物体の表示領域602と、詳細度を設定するための領域603とに大別される。領域602には、干渉状態をチェックするための仮想物体が表示される。
【0058】
本実施例では、選択可能な詳細度が「ユニット」「パーツ」「ポリゴン」「モデル」(仮想物体全体)の4種類だとする。領域603には、干渉部分をユニット単位でもって提示する(即ち提示部分をユニット単位とする)ことを指示するためのチェックボタン604、干渉部分をパーツ単位でもって提示する(即ち提示部分をパーツ単位とする)ことを指示するためのチェックボタン606、干渉部分をポリゴン単位でもって提示する(即ち提示部分をポリゴン単位とする)ことを指示するためのチェックボタン605、干渉部分をモデル単位でもって提示する(即ち提示部分をモデル単位とする)ことを指示するためのチェックボタン607が配されており、詳細度を設定するためには、これらのうちの1つをカーソル608でもって指示する。
【0059】
より具体的には、マウス207を操作してカーソル608をこれら4つのチェックボックスのうち所望のチェックボックスの位置に移動させ、そこでマウスボタンをクリックすることで、所望のチェックボックスをオンにすることができるので、結果として所望のチェックボックスが示す単位でもって干渉部分の提示単位を設定することができる。同図ではチェックボックス606が選択されている。なお、各チェックボックスはデフォルトでは全て選択されていない状態であるとするが、これに限定されるものではない。
【0060】
よって、ステップS303では、CPU201は、同図のGUIにおいて指示されたチェックボックスに対応する詳細度を設定する。
【0061】
なお、詳細度の設定操作ができるGUIの構成については同図に示したものに限定するものではなく、様々な構成が考えられる。
【0062】
図7は、図6に示したGUIを用いて詳細度を設定する場合の、ステップS303における詳細度設定処理のフローチャートである。
【0063】
先ず、GUIを表示部208の表示画面上に表示し、チェックボックスに対する指示を受け付ける(ステップS701)。そして何れかのチェックボックスが指示された場合には対応する詳細度を設定する(ステップS702、703)。
【0064】
[第3の実施形態]
第1、2の実施形態では、詳細度は手動でもって設定した。即ち、詳細度はコンピュータの操作者の判断に委ねていた。本実施形態では、詳細度はCPU201が判断して設定する。より具体的には、詳細度を干渉箇所の特定が容易なように極力細かくしつつ、提示部位が画面上で占める面積が所定の閾値以上になるように制御する。
【0065】
本実施形態における、仮想物体同士の干渉部分の通知処理は、図3に示したフローチャートに従った処理において、ステップS303で図8に示したフローチャートに従った処理を行うことにより成される。なお、本実施例では、選択可能な詳細度が「ユニット」「パーツ」「ポリゴン」「モデル」(仮想物体全体)の4種類だとする。
【0066】
よって以下では、本実施形態におけるステップS303において行う処理について、同処理のフローチャートを示す図8を用いて説明する。
【0067】
先ず、詳細度を最も細かい詳細度であるポリゴン単位に設定する(ステップS801)。即ち、提示部位を「干渉部分を構成する全てのポリゴン」とする。次に、現在設定している詳細度が最も粗い詳細度(即ち仮想物体単位)であるのかを判断し(ステップS802)、詳細度を最も粗い詳細度としている場合には本処理を終了するのであるが、詳細度を最も粗い詳細度としていない場合には処理をステップS803に進め、詳細度に応じた提示部位を決定する(ステップS803)。これは第1の実施形態と同じである。そして決定した提示部位を表示部208の表示画面上に表示した場合の表示サイズ(例えば表示画素数)を求める(ステップS804)。
【0068】
そして求めた表示画素数が所定の閾値以上である場合には本処理を終了するのであるが、求めた表示画素数が所定の閾値よりも小さい場合には処理をステップS806に進め、詳細度を1つ下げる(ステップS806)。そしてその後、処理をステップS802に進め、以降の処理を繰り返す。
【0069】
即ち、初めは提示部位を「干渉部分を構成する全てのポリゴン」に設定し、設定した提示部位の表示画素数が所定の閾値よりも小さい場合には詳細度を1つ下げて提示部位を「干渉部分を構成するポリゴンが属する全てのパーツ」に設定し、更に、設定した提示部位の表示画素数が所定の閾値よりも小さい場合には詳細度を1つ下げて提示部位を「干渉部分を構成するポリゴンが属するパーツが属する全てのユニット」に設定し、更に、設定した提示部位の表示画素数が所定の閾値よりも小さい場合には詳細度を1つ下げて提示部位を「干渉部分を構成するポリゴンが属する仮想物体」に設定する。
【0070】
このような処理を行うことで、極力干渉箇所を細かく提示しつつも、提示部位の表示画面上における表示サイズが閾値以上になるので、干渉部分が表示画面上で視認しやすくなる。
【0071】
[第4の実施形態]
第3の実施形態では、詳細度を、提示部位の表示画面上における表示サイズが所定サイズ以上となるように設定していたが、本実施形態では、提示部位がその他の表示対象物に隠蔽されないように、詳細度を決定する。
【0072】
よって、本実施形態における、仮想物体同士の干渉部分の通知処理は、図3に示したフローチャートに従った処理において、ステップS303で図9に示したフローチャートに従った処理を行うことにより成される。
【0073】
よって以下では、本実施形態におけるステップS303において行う処理について、同処理のフローチャートを示す図9を用いて説明する。
【0074】
先ず、詳細度を最も細かい詳細度であるポリゴン単位に設定する(ステップS901)。即ち、提示部位を「干渉部分を構成する全てのポリゴン」とする。次に、現在設定している詳細度が最も粗い詳細度(即ち仮想物体単位)であるのかを判断し(ステップS902)、詳細度を最も粗い詳細度としている場合には本処理を終了するのであるが、詳細度を最も粗い詳細度としていない場合には処理をステップS903に進め、詳細度に応じた提示部位を決定する(ステップS903)。これは第1の実施形態と同じである。ステップS904では、ステップS903で探索した部位の奥行き情報を得るために、提示部位のみを描画する。ここで、描画のための設定はステップS305での描画時と同じとする。ステップS905では、ステップS904でデプスバッファに書き込まれた画像をデプス画像1としてメモリ202に蓄積する。デプス画像1はデプスバッファ上に描画されたものであるので、周知の通り、デプス画像1を構成する各画素の画素値はデプス値である。
【0075】
一方、第1の仮想物体、第2の仮想物体を含む全ての仮想物体を描画し(ステップS906)、なお、ステップS906の描画時の設定はステップS904の設定と同じとする。ステップS907でデプスバッファに書き込まれた画像をデプス画像2としてメモリ202に蓄積する。デプス画像2はデプスバッファ上に描画されたものであるので、周知の通り、デプス画像2を構成する各画素の画素値はデプス値である。
【0076】
そして、デプス画像1中の提示部位を構成する各画素i(=1、2、、、、n)のデプス値aiと、デプス画像2中で提示部位の描画領域を構成する各画素iのデプス値biとを比較し(ステップS908)、全ての画素について(全てのiについて)ai=biであれば、提示部位はどの表示対象物にも隠蔽されていないということになるので本処理を終了するのであるが、全ての画素について(全てのiについて)ai=biではない場合には、提示部位を構成する何れかの画素が何らかの表示対象物によって隠蔽されていることになるので処理をステップS909に進め、詳細度を1つ下げる(ステップS909)。そしてその後、処理をステップS902に進め、以降の処理を繰り返す。
【0077】
即ち、初めは提示部位を「干渉部分を構成する全てのポリゴン」に設定し、提示部位のみを描画した場合と全仮想物体を描画した場合とで提示部位の奥行き値を比較し、提示部位全体について視点に近い側に何らかの表示対象物が存在する、即ち、提示部位が完全に隠蔽されている場合には詳細度を1つ下げ、提示部位の表示サイズを大きくし、提示部位をより隠蔽されにくいものにする。
【0078】
このような処理を繰り返すことで、提示部位をその他のものに完全に隠蔽されることなく表示することができる。
【0079】
なお、本実施形態では提示部位がその他のものに隠蔽されているのか否かを判断するためにデプス画像を用いたが、隠蔽の検出方法はこれに限定するものではない。
【0080】
また、本実施形態と第3の実施形態とを組み合わせて用いるようにしても良い。すなわち、提示部位の隠れがない場合であっても、画面上での面積が所定の閾値を下回った場合には詳細度を下げることにする。これにより、本実施形態のみ、もしくは第3の実施形態のみよりも、より干渉部分に対する視認が容易になる。
【0081】
[第5の実施形態]
上記各実施形態では、干渉箇所の提示範囲を1つの詳細度で設定した。しかし、これに限るものではなく、複数の詳細度を指定して干渉箇所を提示してもよい。その場合、それぞれの詳細度毎に異なる提示方法を適用するようにしても良い。例えば、ユニットレベルはバウンディングボックスを緑色で表示し、パーツレベルはワイヤフレームを黄色で表示し、ポリゴンは赤色の点滅で表示するという方法である。
【0082】
このような提示方法を用いると、観察者が適宜着目する表示方法を選択することにより、特別な操作を行わずに詳細度を切り替えるのと同じ効果を得ることが出来る。あるいは、低いレベルから高いレベルの詳細度へと順に着目する表示方法を切り替えていくことにより、干渉箇所を画面中から見つけることが容易になる。
【0083】
あるいは複数の詳細度を指定するのではなく、詳細度の最大値や最小値を設定するようにしても良い。例えば、詳細度の最小値をパーツに指定すれば、提示箇所はポリゴンおよびパーツのレベルで表示されることになる。
【0084】
[第6の実施形態]
上記実施形態では、詳細度としてモデルデータの階層構造に基づく単位を用いていたが、他の単位を用いても構わない。
【0085】
例えば、第3または第4の実施形態に記載されている方法を用いて干渉部分の投影画像における状況(表示領域や隠蔽状況)を識別し、第3または第4の実施形態で説明した条件を満たすように、干渉部分に対応するポリゴンを中心としてポリゴン単位で通知領域を広げるようにしても構わない。つまり、条件を満たさない場合は、現在の領域に隣接するポリゴンの領域を追加した領域を通知領域とする。
【0086】
本実施形態によれば、階層構造に基づく単位にくらべて通知領域を細かく設定することができる。
【0087】
また、通知領域は干渉した両方の仮想物体に設定しても、どちらか一方のみに設定するようにしても構わない。用途に応じて設定すればよい。
【0088】
[第7の実施形態]
上記各実施形態では、干渉部分が複数個存在しても、それぞれの干渉部分は同じ詳細度でもって提示部位として提示されていたが、個々の干渉部分で異なる詳細度を設定するようにしても良い。その場合、それぞれの詳細度毎に異なる提示方法を適用するようにしても良い。例えば、ユニットレベルはバウンディングボックスを緑色で表示し、パーツレベルはワイヤフレームを黄色で表示し、ポリゴンは赤色の点滅で表示するという方法である。あるいは、干渉部位ごとに異なる提示方法を適用するようにしても良い。
【0089】
[その他の実施形態]
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【0090】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0091】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0092】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【0093】
【図1】仮想物体同士の干渉部分を説明する図である。
【図2】画像処理装置の基本構成を示すブロック図である。
【図3】仮想物体同士の干渉部分の通知処理のフローチャートである。
【図4】ステップS301でメモリ202にロードするモデルデータの構成例を示す図である。
【図5】ステップS304における提示部位の設定処理の詳細を示すフローチャートである。
【図6】詳細度を設定するために操作するGUIの表示例を示す図である。
【図7】図6に示したGUIを用いて詳細度を設定する場合の、ステップS303における詳細度設定処理のフローチャートである。
【図8】第3の実施形態におけるステップS303において行う処理のフローチャートである。
【図9】第4の実施形態におけるステップS303において行う処理のフローチャートである。
【図10】仮想物体の階層的データ構造を示した模式図である。
【特許請求の範囲】
【請求項1】
干渉部分を通知する際の詳細度を設定する詳細度設定工程と、
第1の仮想物体と第2の仮想物体との干渉部分を検出する検出工程と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定工程と
を有することを特徴とする情報処理方法。
【請求項2】
さらに、仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成工程を有することを特徴とする請求項1記載の情報処理方法。
【請求項3】
前記詳細度設定工程は、前記検出工程で検出された干渉部分に基づき前記詳細度を設定することを特徴とする請求項1または2に記載の情報処理方法。
【請求項4】
前記詳細度設定工程は、前記投影画像上における、前記検出工程で検出された干渉部分の画素数に応じて、前記詳細度を設定することを特徴とする請求項2に記載の情報処理方法。
【請求項5】
前記詳細度設定工程は、前記検出された干渉部分の隠蔽状況に応じて、前記詳細度を設定することを特徴とする請求項4記載の情報処理方法。
【請求項6】
前記詳細度は、ポリゴン数であることを特徴とする請求項1乃至5のいずれかに記載の情報処理方法。
【請求項7】
前記仮想物体を示すモデルデータは階層構造で定義され、
前記詳細度設定工程は、階層構造に含まれる階層を設定することを特徴とする請求項1乃至6のいずれかに記載の情報処理方法。
【請求項8】
前記階層には、パーツおよびポリゴンが含まれることを特徴とする請求項7記載の情報処理方法。
【請求項9】
仮想物体を示すモデルデータを取得する取得工程と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成工程と、
前記仮想物体の干渉部分を検出する検出工程と、
前記干渉部分の前記投影画像における状況を識別する識別工程と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定工程と
を有することを特徴とする情報処理方法。
【請求項10】
前記検出工程は、干渉部分のポリゴンを検出し、
前記部位設定工程は、前記検出されたポリゴンを含む領域を設定することを特徴とする請求項9記載の情報処理方法。
【請求項11】
形状が階層構造をなす第1の仮想物体が第2の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理方法であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定工程と、
前記設定工程で設定された単位でもって前記干渉部分を通知する通知工程と
を備えることを特徴とする情報処理方法。
【請求項12】
前記階層構造のうち最下位を除く階層は、当該階層の1段階下位の階層に属する1以上の要素から構成されることを特徴とする請求項11に記載の情報処理方法。
【請求項13】
前記最下位の階層に属する構成要素はポリゴンであることを特徴とする請求項11又は12に記載の情報処理方法。
【請求項14】
前記設定工程では、前記干渉部分を所定の単位で表示する場合に、当該所定の単位の表示領域のサイズが所定サイズ以上となるように、前記干渉部分の通知単位を設定することを特徴とする請求項11乃至13のいずれかに記載の情報処理方法。
【請求項15】
前記設定工程では、前記干渉部分を所定の単位で表示する場合に、当該所定の単位の表示領域全体がその他の表示対象物に隠蔽されないように、前記干渉部分の通知単位を設定することを特徴とする請求項11乃至13のいずれかに記載の情報処理方法。
【請求項16】
前記通知工程では、通知する対象の表示色を、通知対象以外の表示色と異ならせて通知することを特徴とする請求項11乃至15のいずれかに記載の情報処理方法。
【請求項17】
コンピュータに請求項1乃至16のいずれかに記載の情報処理方法を実行させることを特徴とするプログラム。
【請求項18】
請求項17に記載のプログラムを格納したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項19】
干渉部分を通知する際の詳細度を設定する詳細度設定手段と、
第1の仮想物体と第2の仮想物体との干渉部分を検出する検出手段と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定手段と
を有することを特徴とする情報処理装置。
【請求項20】
仮想物体を示すモデルデータを取得する取得手段と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成手段と、
前記仮想物体の干渉部分を検出する検出手段と、
前記干渉部分の前記投影画像における状況を識別する識別手段と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定手段と
を有することを特徴とする情報処理装置。
【請求項21】
形状が階層構造をなす第1の仮想物体が第2の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理装置であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定手段と、
前記設定手段によって設定された単位でもって前記干渉部分を通知する通知手段と
を備えることを特徴とする情報処理装置。
【請求項1】
干渉部分を通知する際の詳細度を設定する詳細度設定工程と、
第1の仮想物体と第2の仮想物体との干渉部分を検出する検出工程と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定工程と
を有することを特徴とする情報処理方法。
【請求項2】
さらに、仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成工程を有することを特徴とする請求項1記載の情報処理方法。
【請求項3】
前記詳細度設定工程は、前記検出工程で検出された干渉部分に基づき前記詳細度を設定することを特徴とする請求項1または2に記載の情報処理方法。
【請求項4】
前記詳細度設定工程は、前記投影画像上における、前記検出工程で検出された干渉部分の画素数に応じて、前記詳細度を設定することを特徴とする請求項2に記載の情報処理方法。
【請求項5】
前記詳細度設定工程は、前記検出された干渉部分の隠蔽状況に応じて、前記詳細度を設定することを特徴とする請求項4記載の情報処理方法。
【請求項6】
前記詳細度は、ポリゴン数であることを特徴とする請求項1乃至5のいずれかに記載の情報処理方法。
【請求項7】
前記仮想物体を示すモデルデータは階層構造で定義され、
前記詳細度設定工程は、階層構造に含まれる階層を設定することを特徴とする請求項1乃至6のいずれかに記載の情報処理方法。
【請求項8】
前記階層には、パーツおよびポリゴンが含まれることを特徴とする請求項7記載の情報処理方法。
【請求項9】
仮想物体を示すモデルデータを取得する取得工程と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成工程と、
前記仮想物体の干渉部分を検出する検出工程と、
前記干渉部分の前記投影画像における状況を識別する識別工程と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定工程と
を有することを特徴とする情報処理方法。
【請求項10】
前記検出工程は、干渉部分のポリゴンを検出し、
前記部位設定工程は、前記検出されたポリゴンを含む領域を設定することを特徴とする請求項9記載の情報処理方法。
【請求項11】
形状が階層構造をなす第1の仮想物体が第2の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理方法であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定工程と、
前記設定工程で設定された単位でもって前記干渉部分を通知する通知工程と
を備えることを特徴とする情報処理方法。
【請求項12】
前記階層構造のうち最下位を除く階層は、当該階層の1段階下位の階層に属する1以上の要素から構成されることを特徴とする請求項11に記載の情報処理方法。
【請求項13】
前記最下位の階層に属する構成要素はポリゴンであることを特徴とする請求項11又は12に記載の情報処理方法。
【請求項14】
前記設定工程では、前記干渉部分を所定の単位で表示する場合に、当該所定の単位の表示領域のサイズが所定サイズ以上となるように、前記干渉部分の通知単位を設定することを特徴とする請求項11乃至13のいずれかに記載の情報処理方法。
【請求項15】
前記設定工程では、前記干渉部分を所定の単位で表示する場合に、当該所定の単位の表示領域全体がその他の表示対象物に隠蔽されないように、前記干渉部分の通知単位を設定することを特徴とする請求項11乃至13のいずれかに記載の情報処理方法。
【請求項16】
前記通知工程では、通知する対象の表示色を、通知対象以外の表示色と異ならせて通知することを特徴とする請求項11乃至15のいずれかに記載の情報処理方法。
【請求項17】
コンピュータに請求項1乃至16のいずれかに記載の情報処理方法を実行させることを特徴とするプログラム。
【請求項18】
請求項17に記載のプログラムを格納したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項19】
干渉部分を通知する際の詳細度を設定する詳細度設定手段と、
第1の仮想物体と第2の仮想物体との干渉部分を検出する検出手段と、
前記検出された干渉部分および前記設定された詳細度に基づき、干渉部分として通知する部位を設定する部位設定手段と
を有することを特徴とする情報処理装置。
【請求項20】
仮想物体を示すモデルデータを取得する取得手段と、
前記仮想物体を示すモデルデータを用いて、仮想空間に配置した仮想のカメラから観察した場合の投影画像を生成する生成手段と、
前記仮想物体の干渉部分を検出する検出手段と、
前記干渉部分の前記投影画像における状況を識別する識別手段と、
前記識別結果に応じて、前記干渉部分として通知する部位の領域を設定する部位設定手段と
を有することを特徴とする情報処理装置。
【請求項21】
形状が階層構造をなす第1の仮想物体が第2の仮想物体と干渉する部分を有する場合に、当該干渉部分を通知する情報処理装置であって、
前記干渉部分を通知する単位を前記形状の階層から選択し、設定する設定手段と、
前記設定手段によって設定された単位でもって前記干渉部分を通知する通知手段と
を備えることを特徴とする情報処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2006−178662(P2006−178662A)
【公開日】平成18年7月6日(2006.7.6)
【国際特許分類】
【出願番号】特願2004−369919(P2004−369919)
【出願日】平成16年12月21日(2004.12.21)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成18年7月6日(2006.7.6)
【国際特許分類】
【出願日】平成16年12月21日(2004.12.21)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]