(57)【要約】【課題】  仮想物体同士で干渉する場合に、この干渉している領域の大きさや形状などをユーザに通知するための技術を提供すること。【解決手段】  所定の視点から見える仮想物体２０１の画像、仮想物体２０２の画像を生成する際、仮想物体２０１が仮想物体２０２と干渉している場合には、仮想物体２０１における干渉部分が可視可能なように仮想物体２０１の画像、仮想物体２０２の画像を生成する。【選択図】  図２
2006215750.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間内に配置された第１の仮想物体が、当該仮想空間内に配置された前記第２の仮想物体と干渉しているのか否かを判断する判断工程と、
所定の視点から見える前記第１の仮想物体の画像、前記第２の仮想物体の画像を生成する際、前記判断工程で干渉していると判断した場合には、前記第１の仮想物体における干渉部分が可視可能なように前記第１の仮想物体の画像、前記第２の仮想物体の画像を生成する生成工程と、
前記生成工程で生成した画像を出力する出力工程と
を備えることを特徴とする画像処理方法。
【請求項２】
前記干渉部分は、仮想物体を構成するポリゴン単位で特定されることを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記干渉部分は、仮想物体を構成するパーツ毎に特定されることを特徴とする請求項１に記載の画像処理方法。
【請求項４】
前記生成工程では、所定の視点から見える前記第１の仮想物体の画像、前記第２の仮想物体の画像を生成する際、前記判断工程で干渉していると判断した場合には、前記第１の仮想物体における非干渉部分、及び前記第２の仮想物体を半透明にして前記第１の仮想物体の画像、前記第２の仮想物体の画像を生成することを特徴とする請求項１乃至３の何れか１項に記載の画像処理方法。
【請求項５】
更に、前記干渉部分から前記視点の視線に沿って前記視点の位置側に所定距離だけ移動した位置に、当該視線と略垂直に仮想平面を設定する設定工程と、
前記仮想平面よりも前記視点の位置側の画像生成は行わないように、前記生成工程による処理を制御する制御工程と
を備えることを特徴とする請求項１乃至４の何れか１項に記載の画像処理方法。
【請求項６】
仮想空間内に配置された第１の仮想物体が、当該仮想空間内に配置された前記第２の仮想物体と干渉しているのか否かを判断する判断手段と、
所定の視点から見える前記第１の仮想物体の画像、前記第２の仮想物体の画像を生成する際、前記判断手段が干渉していると判断した場合には、前記第１の仮想物体における干渉部分が可視可能なように前記第１の仮想物体の画像、前記第２の仮想物体の画像を生成する生成手段と、
前記生成手段が生成した画像を出力する出力手段と
を備えることを特徴とする画像処理装置。
【請求項７】
コンピュータに請求項１乃至５に記載の画像処理方法を実行させることを特徴とするプログラム。
【請求項８】
請求項７に記載のプログラムを格納することを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想物体の画像を生成して表示する為の技術に関するものであり、特に仮想物体同士で干渉する場合に、この干渉領域を処理する為の技術に関するものである。
【背景技術】
【０００２】
近年、三次元CADを用いて製品設計や、組立性のシミュレーションを行う事例が増えているが、部品点数が多い、あるいは複雑な部品で構成されている場合、製品を組み立てる際の組立操作や部品点数が膨大になってしまい、設計段階で他の部品との干渉を見落としてしまい、組み立てられない、あるいは部品の移動において干渉が発生してしまい所望の動作を得ることが出来なくなってしまうという問題点を有している。
【０００３】
通常、三次元CADを用いた設計では、設計された部品情報を基に、組み立てた状態で干渉チェックを行い、干渉の発生の有無を確認することで干渉しないように部品の移動、形状変更等を行い、部品が干渉しないようにする。部品の移動による干渉を確認する際は、移動物体をあるステップごとに移動させ、その都度干渉チェックを行い、部品の干渉が発生していないかを確認する。
【０００４】
このようなステップごとに離散的な状態を定義し、干渉チェックを行う方法とは別に、特許文献１に開示されているような物体移動シミュレーション装置もある。この物体移動シミュレーション装置は、移動する物体の移動経路を定義し、移動する物体の移動経路中で移動する物体以外の被観察物体との最短距離を表示し、また干渉が発生したときには干渉点を中心とした半透明な球を表示することで干渉点を観察しやすくする例を開示している。
【特許文献１】特開平１１-１８４８９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら従来例にて開示されている方法では、干渉点を中心とする双方の物体の最大外形を内包する球を表示するという構成になっているので、干渉領域の大きさ、形状等を把握することができないという問題点を有している。
【０００６】
本発明は以上の問題に鑑みて成されたものであり、仮想物体同士で干渉する場合に、この干渉している領域の大きさや形状などをユーザに通知するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の目的を達成するために、例えば本発明の画像処理方法は以下の構成を備える。
【０００８】
即ち、仮想空間内に配置された第１の仮想物体が、当該仮想空間内に配置された前記第２の仮想物体と干渉しているのか否かを判断する判断工程と、
所定の視点から見える前記第１の仮想物体の画像、前記第２の仮想物体の画像を生成する際、前記判断工程で干渉していると判断した場合には、前記第１の仮想物体における干渉部分が可視可能なように前記第１の仮想物体の画像、前記第２の仮想物体の画像を生成する生成工程と、
前記生成工程で生成した画像を出力する出力工程と
を備えることを特徴とする。
【０００９】
本発明の目的を達成するために、例えば本発明の画像処理装置は以下の構成を備える。
【００１０】
即ち、仮想空間内に配置された第１の仮想物体が、当該仮想空間内に配置された前記第２の仮想物体と干渉しているのか否かを判断する判断手段と、
所定の視点から見える前記第１の仮想物体の画像、前記第２の仮想物体の画像を生成する際、前記判断手段が干渉していると判断した場合には、前記第１の仮想物体における干渉部分が可視可能なように前記第１の仮想物体の画像、前記第２の仮想物体の画像を生成する生成手段と、
前記生成手段が生成した画像を出力する出力手段と
を備えることを特徴とする。
【発明の効果】
【００１１】
本発明の構成により、仮想物体同士で干渉する場合に、この干渉している領域の大きさや形状などをユーザに通知することができる。
【発明を実施するための最良の形態】
【００１２】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００１３】
［第１の実施形態］
先ず、本実施形態に係るシステムの基本構成について説明する。図１は、本実施形態に係るシステムの基本構成を示すブロック図である。図１に示す如く、本実施形態に係るシステムは、コンピュータ１００とＨＭＤ１０１（ヘッドマウントディスプレイ）とで構成されている。
【００１４】
先ず、ＨＭＤ１０１について説明する。ＨＭＤ１０１は姿勢センサ１１３、画像表示装置１１１、撮像装置１１２により構成されている。
【００１５】
姿勢センサ１１３は、ＨＭＤ１０１の位置姿勢を計測するものであり、例えば姿勢センサ１１３が磁気センサである場合には、磁気の発生源から発せられる磁気の変化を検知し、自身の位置姿勢に応じた信号に変換する。そして変換した信号をコンピュータ１００に出力する。ＨＭＤ１０１の位置姿勢の計測技術については周知のものであるので、ここでの説明は省略する。また、ＨＭＤ１０１の位置姿勢の計測方法については特に限定するものではない。
【００１６】
画像表示装置１１１は、ＨＭＤ１０１を頭部に装着したユーザの眼前に位置するようにＨＭＤ１０１に取り付けられたものであり、コンピュータ１００から出力された画像信号を受け、これに従った画像を表示する。従って、ユーザの眼前にはコンピュータ１００から出力された画像信号に従った画像が表示されることになる。この画像信号は、例えばＮＴＳＣ、あるいはＶＧＡ信号等である。
【００１７】
撮像装置１１２は現実空間の動画像を撮像し、撮像した各フレームの画像を順次コンピュータ１００に出力する。なお、この撮像装置１１２は、ＨＭＤ１０１を頭部に装着する観察者の観察光軸に略一致させることが好ましい。
【００１８】
次に、コンピュータ１００について説明する。コンピュータ１００は同図に示す如く、入力部１０５、画像生成モジュール１０３、画像入力モジュール１０２、画像合成モジュール１０４により構成されている。
【００１９】
入力部１０５は、各種の指示を本コンピュータ１００に入力するためのものである。画像生成モジュール１０３は、姿勢センサ１１３から得られる位置姿勢情報を用いて、ＨＭＤ１０１の位置姿勢（以下、視点の位置姿勢と呼称する場合がある）から見える仮想空間の画像を生成する処理を行う。また、この仮想空間内には１以上の仮想物体が存在し、この仮想物体の位置や姿勢を移動させるなど、仮想空間に対する操作は入力部１０５を介して入力される。この入力はコンピュータ１００の操作者が行うようにしても良いし、仮想空間内の変化を予め記述したデータを予めコンピュータ１００内に記憶させておき、これを入力するようにしても良い。また、所定の位置姿勢を有する視点から見える仮想空間の画像を生成する処理については周知のものであるので、ここでの説明は省略する。
【００２０】
画像入力モジュール１０２は、撮像装置１１２から順次出力される現実空間の画像を受け、画像合成モジュール１０４に出力する。
【００２１】
画像合成モジュール１０４は、画像入力モジュール１０２から受けた現実空間の画像上に、画像生成モジュール１０３が生成した仮想空間の画像を重畳させた合成画像を生成する。
【００２２】
なお、画像入力モジュール１０２に、撮像装置１１２から受けた現実空間の画像に含まれている各オブジェクトの奥行き値を算出する機能を持たせ、画像合成モジュール１０４が合成画像を生成する際に、仮想物体の奥行き値と現実物体の奥行き値とを比べてそれらの前後判定を行い、後方にある物体の隠れる部分に相当するマスクを生成して、これらの映像を重畳するようにしても良い。
【００２３】
図３は、上記コンピュータ１００の基本構成を示すブロック図である。
【００２４】
５０１はＣＰＵで、ＲＡＭ５０２やＲＯＭ５０３に格納されているプログラムやデータを用いて本コンピュータ１００全体の制御を行うと共に、コンピュータ１００が行う後述の各処理を実行する。
【００２５】
５０２はＲＡＭで、外部記憶装置５０６からロードされたプログラムやデータを一時的に記憶するためのエリア、Ｉ／Ｆ５０７を介して受信したデータを一時的に記憶するためのエリア等を備えると共に、ＣＰＵ５０１が各種の処理を実行する際に使用するワークエリアを備える。
【００２６】
５０３はＲＯＭで、本コンピュータ１００の設定データやブートプログラムなどを格納する。
【００２７】
５０４は操作装置で、キーボードやマウスなどにより構成されており、各種の指示をＣＰＵ５０１に対して入力することができる。
【００２８】
５０５は表示装置で、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ５０１による処理結果を画像や文字などもでって表示することができる。
【００２９】
５０６は外部記憶装置で、ハードディスクドライブ装置などの大容量情報記憶装置として機能するものであり、ここにＯＳ（オペレーティングシステム）や、コンピュータ１００が行う後述の各処理をＣＰＵ５０１に実行させるためのプログラムやデータが保存されており、これらの一部若しくは全部はＣＰＵ５０１の制御に従ってＲＡＭ５０２にロードされ、ＣＰＵ５０１による処理対象となる。なお、このデータには、仮想空間を構成する各仮想物体を描画するために必要なデータ（例えば仮想物体がポリゴンにより構成されているのであれば、各ポリゴンの頂点の位置データ、各ポリゴンの法線データ、テクスチャデータなど）が含まれている。
【００３０】
５０７はＩ／Ｆで、ここに上記ＨＭＤ１０１が接続され、このＩ／Ｆ５０７を介してコンピュータ１００はＨＤＤ１３０とデータ通信を行うことができる。
【００３１】
５０８は上述の各部を繋ぐバスである。
【００３２】
次に、上記構成を備えるコンピュータ１００が行う処理、即ち、仮想物体同士が干渉した（一方の仮想物体の一部が他方の仮想物体内にめり込む）場合に、この干渉部分を通知する処理について説明する。
【００３３】
図２は、仮想物体同士の干渉について説明する図である。図２（ａ）に示す如く、仮想空間内には２つの仮想物体２０１，２０２が存在し、且つ仮想物体２０１は同図矢印で示す方向に移動しているものとする。この移動はコンピュータ１００の操作者が操作装置５０４を用いて操作するようにしても良いし、プログラムの実行に従って行うようにしても良い。
【００３４】
そして仮想物体２０１はこのような移動を続けると、図２（ｂ）に示す如く、仮想物体２０２と衝突（干渉）する事になる。このとき、仮想物体２０１において仮想物体２０２と干渉している部分は仮想物体２０２の描画により見えなくなってしまっており、当然干渉部分の形状やサイズは推測でしか把握し得ない。そこで本実施形態では、仮想物体２０１の干渉部分以外、即ち、仮想物体２０１における非干渉部分、及び仮想物体２０２を半透明状態にする。
【００３５】
その結果、仮想物体２０１における非干渉部分、及び仮想物体２０２を半透明状態にした仮想物体２０１、仮想物体２０２を視点から見た場合に見える画像を生成すると、図２（ｃ）に示す如く、この干渉部分２０３が可視可能となり、ＨＭＤ１０１を頭部に装着しているユーザは、この干渉部分のサイズや形状などを把握することができる。なお同図では半透明状態にある部分は点線でもって示している。
【００３６】
図４は、以上説明した、仮想物体同士で干渉した場合に、干渉部分以外を半透明にした画像を生成し、これを現実空間の画像上に合成してＨＭＤ１０１の表示装置１１１に出力する一連の処理のフローチャートである。なお、同図のフローチャートに従った処理をＣＰＵ５０１に実行させるためのプログラムやデータは、外部記憶装置５０６に保存されており、これをＣＰＵ５０１の制御に従ってＲＡＭ５０２にロードし、これを用いてＣＰＵ５０１が処理を実行することで、コンピュータ１００は以下説明する各処理を実行することになる。ここでは干渉の判定に用いる仮想物体として図２に示した仮想物体２０１、２０２を用いる。
【００３７】
先ず、撮像装置１１２から現実空間の各フレームの画像が順次入力されるので、ＣＰＵ５０１はこれを順次ＲＡＭ５０２に取得する（ステップＳ４０１）。次に、姿勢センサ１１３が計測した計測値（視点の位置姿勢情報）がＩ／Ｆ５０７を介して本コンピュータ１００に入力されるので、ＣＰＵ５０１はこれをＲＡＭ５０２に取得する（ステップＳ４０１）。なお、ステップＳ４０１，Ｓ４０２における処理はこの順に実行されることに限定するものではなく、例えば、それぞれ平行して行うようにしても良い。
【００３８】
次に、ＣＰＵ５０１は、仮想物体２０１において仮想物体２０２と干渉部分があるのか否かをチェックする（ステップＳ４０３）。このチェック処理については周知のものであるが、例えば、仮想物体２０１，２０２が共にポリゴンにより構成されている場合には、仮想物体２０１を構成する各ポリゴンについて、仮想物体２０２の外部に位置するのか外部に位置するのかをチェックする。ポリゴンが所定の領域の内部にあるのか外部にあるのかをチェックする為の処理については周知のものであるので、これに関する説明は省略する。
【００３９】
このようにして、仮想物体２０１が仮想物体２０２と干渉しているのかを判定することができると共に、干渉していればその干渉部分の特定を行うことができる。
【００４０】
そして仮想物体２０１が仮想物体２０２と干渉している場合には処理をステップＳ４０４に進め、仮想物体２０１において非干渉部分、及び仮想物体２０２を半透明状態にする（ステップＳ４０４）。即ち、仮想物体２０１を構成する各ポリゴンのうち、仮想物体２０２の外部に位置するものについてはそのポリゴンに設定されたα値を制御して、透明度を上げる。また、仮想物体２０２を構成する各ポリゴンについても同様に、α値を制御してポリゴンの透明度を上げる。これにより、仮想物体２０１において干渉部分以外を半透明状態にすることができる。
【００４１】
そして、ステップＳ４０２で取得した位置姿勢情報を用いて、この位置姿勢を有する視点から見える仮想物体２０１、仮想物体２０２の画像（仮想空間の画像）を生成する（ステップＳ４０５）。そして生成した仮想空間の画像を先にステップＳ４０１で取得した現実空間の画像上に重畳させて合成画像を生成し（ステップＳ４０６）、生成した合成画像をＩ／Ｆ５０７を介してＨＭＤ１０１の表示装置１１１に出力する（ステップＳ４０７）。
【００４２】
以上の説明により、本実施形態によって、干渉部分が可視可能となり、ＨＭＤ１０１を頭部に装着しているユーザは、この干渉部分のサイズや形状などを把握することができる。
【００４３】
なお、本実施形態では、干渉部分をポリゴン単位で特定する場合について説明したが、これに限定されるものではなく、仮想物体２０１が複数のパーツにより構成されている場合にはパーツ単位でもって特定するようにしても良い。例えばあるパーツを構成するポリゴンのうち、過半数以上が仮想物体２０２内に位置する場合にはこのパーツを干渉部分とする。
【００４４】
また、本実施形態では干渉部分以外を半透明にすることで干渉部分を可視可能としていたが、更に干渉部分の表示色を異ならせるようにしても良いし、点滅させるようにしても良い。
【００４５】
また、仮想空間の画像を生成する際には、仮想物体同士が干渉している／していないに関わらず、全ての仮想物体を不透明状態でもって描画することで、視点から見た仮想空間の画像を生成し、これを現実空間の画像上に合成した画像を生成する（即ち、図４のフローチャートにおいてステップＳ４０３，Ｓ４０４を省いた処理を行う）。そして、本実施形態で生成した「干渉していない部分以外を半透明状態にすることで生成される仮想空間の画像」を所定サイズに縮小してこの合成画像上に配置するようにしても良い。その結果、仮想物体同士で干渉が生じた場合にのみ、本実施形態で生成した「干渉していない部分以外を半透明状態にすることで生成される仮想空間の画像」の縮小画像が合成画像上に配置されることになる。
【００４６】
［第２の実施形態］
本実施形態では、干渉部分の近傍に視点の視線に略垂直な仮想平面を設け（干渉部分から視点の視線に沿って視点の位置側に所定距離だけ移動した位置に、視線と略垂直に仮想平面を設け）、この仮想平面よりも視点側は、仮想物体の描画は行わないようにする。これにより、この仮想平面よりも向こう側（仮想平面を挟んで視点とは逆の側）しか仮想空間の画像は描画しないので、より高速に仮想空間の画像生成が行えると共に、ＨＭＤ１０１を頭部に装着するユーザに干渉部分をより明瞭に提示することができる。
【００４７】
また、以上の各実施形態では生成した仮想空間の画像を現実空間の画像に合成して出力するとしたが、これに限定されるものではなく、生成した仮想空間の画像のみを出力するようにしても良い。即ち、ＶＲ（バーチャルリアリティー）の技術分野で用いるようにしても良い。
【００４８】
［その他の実施形態］
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【００４９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００５０】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００５１】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【００５２】
【図１】本発明の第１の実施形態に係るシステムの基本構成を示すブロック図である。
【図２】仮想物体同士の干渉について説明する図である。
【図３】コンピュータ１００の基本構成を示すブロック図である。
【図４】仮想物体同士で干渉した場合に、干渉部分以外を半透明にした画像を生成し、これを現実空間の画像上に合成してＨＭＤ１０１の表示装置１１１に出力する一連の処理のフローチャートである。
【図１】
2006215750.tif 000003
【図２】
2006215750.tif 000004
【図３】
2006215750.tif 000005
【図４】
2006215750.tif 000006