以下に添付図面を参照して本願に係る画像表示方法の実施例について説明する。
以下の実施例1では、画像表示方法を実行する装置の構成および処理の流れを順に説明する。
まず最初に、図1を用いて、画像表示方法を実行する情報処理装置の構成について説明する。ここで、図1は、実施例1に係る画像表示方法を実行する情報処理装置を説明するためのブロック図である。情報処理装置1は、記憶部10と、表面特定部2、法線取得部3および視点位置設定部4を有している。
記憶部10は、三次元モデルの情報を記憶している。具体的には、記憶部10は、三次元モデルを形作る点、線および面の情報を記憶している。また、記憶部10は、三次元モデルを形作る点、線および面の位置を示す情報を記憶している。
表面特定部2は、立体が投影された二次元の画像内の一点が指定された場合に、指定された点に対応する立体の表面を特定する。法線取得部3は、表面特定部2によって特定された立体の表面の法線方向を取得する。視点位置設定部4は、法線取得部3によって取得された法線方向に応じて、立体を投影する視点の位置を設定する。
[実施例1の効果]
上述してきたように、実施例1に係る情報処理装置1は、利用者によって指定された点を含む立体の表面を特定し、特定された表面の法線方向に視点を自動的に移動させる。このため、情報処理装置1は、立方体の上部の面に含まれる点を指定された場合には、立方体の上方へ視点を移動させ、前回の視点からでは立方体によって隠されていた範囲を投影させることができる。結果として、情報処理装置1は、隠された範囲を表示させる視点を利用者が容易に設定することができる。
以下の実施例2では、画像表示方法を実行する装置の構成および処理の流れを順に説明する。
まず最初に、図2を用いて、画像表示方法を実行する装置の構成について説明する。ここで、図2は、実施例2に係る画像表示方法を実行する情報処理装置を説明するためのブロック図である。情報処理装置1bは、表示装置5bおよび操作装置6bと接続されている。
情報処理装置1bは、記憶部10bと処理部20bとを有している。記憶部10bは、ポリゴン情報記憶部12bを有している。また、処理部20bは、投影部21b、法線取得部24b、視点位置設定部25b、視点距離計測部23bおよび表面特定部22bを有している。
表示装置5bは、情報処理装置1bによって作成された画像を表示する。具体的には、表示装置5bは、投影部21bによって投影された画像を表示する。例えば、表示装置5bは、液晶ディスプレイやプロジェクタ等である。
操作装置6bは、利用者から情報処理装置1に対する操作を受け付ける。また、操作装置6bは、表示装置5bに表示された画像を介して、利用者が三次元モデルの表面に位置する一点を指定する操作を情報処理装置1bに送信する。例えば、操作装置6bは、マウスやキーボードである。
ポリゴン情報記憶部12bは、三次元モデルを表示するために、三次元モデルを形作る多角形の情報を記憶する。具体的には、ポリゴン情報記憶部12bは、各三次元モデルの表面を構成する小さな三角形平面(ポリゴン)の情報を記憶している。
そのため、ポリゴン情報記憶部12bは、図3に示すように、ポリゴンが有する各頂点の座標と、規格化された法線ベクトルの情報とを記憶している。つまり、ポリゴンは、3つの頂点の位置を示す座標と、ポリゴンの向きを表す法線情報とを用いて表示される三次元モデルである。ここで、図3は、ポリゴン情報記憶部に記憶されたデータを説明するための図である。
例えば、ポリゴン情報記憶部12bは、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ (flash memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
ポリゴン情報記憶部12bは、図3に示すように、ポリゴンIDが「1」であるポリゴンとして、座標(a1、b1、c1)、(d1,e1,f1)、(g1,h1,i1)に頂点を有するポリゴンを記憶している。また、ポリゴン情報記憶部12は、ポリゴンIDが「1」であるポリゴンの法線ベクトルとして、(j1、k1、l1)を記憶している。
ポリゴン情報記憶部12bは、ポリゴンの表と裏とを表現するために、ポリゴンの法線ベクトルを記憶している。ポリゴン法線ベクトルを用いてポリゴンの向きを示す技術は、公知な技術の一つである。
ここで、ポリゴン情報記憶部12は、ポリゴン法線方向に対して反時計周りの順番にポリゴンの頂点の位置を示す座標を記憶している。また、各ポリゴンの法線ベクトルは、規格化されている。例えば、ポリゴンIDが「1」であるポリゴンの法線ベクトル(j1、k1、l1)は、規格化されているので、以下の式を満たす。
投影部21bは、各三次元モデルを二次元の面に投影し、投影された画像を表示装置5bに表示させる。具体的には、投影部21bは、視点位置設定部25bによって設定された視点の位置に応じて、各三次元モデルを二次元の投影面に投影する。そして、投影部21bは、三次元モデルを投影した画像を表示装置5bに表示させる。
例えば、投影部21bは、ASIC(Application Specific Integrated Circuit)やFPGA (Field Programmable Gate Array)などの集積回路、または、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。
投影部21bは、三次元モデルを二次元の面に投影する場合には、視点位置設定部25bによって設定された視点を焦点として、三次元モデルを投影する。まず、投影部21bは、視点から所定の距離離れた位置に所定の大きさの投影面を設定する。ここで、投影面は、細かなドットの集合で表現される。投影部21bは、視点と投影面上のドットを結ぶ直線が三次元モデルの表面と交差した場合には、三次元モデルと直線との交点を投影面上のドットに投影する。
例えば、投影部21bは、投影面上のドットNと視点とを結ぶ直線が三次元モデルの表面の点Mと交差している場合には、投影面上のドットNに三次元モデルの表面の点Mを投影する。投影部21bは、投影面上の全てのドットに投影を行う。また、投影部21bは、投影面上のドットと視点とを結ぶ直線が複数の三次元モデルと交差する場合には、投影面に最も近い点のみを投影面に反映させる。
表面特定部22bは、立体が投影された二次元の画像内の一点が指定された場合に、指定された点に対応する立体の表面を特定する。具体的には、表面特定部22bは、表示装置に表示された画像上の点が利用者によって指定された場合には、当該指定された画像上の点が三次元モデルの表面上においてどの位置と対応するのかを計算し、特定する。
利用者は、三次元モデル上の点を指定する場合には、操作装置6bを介して、三次元モデルを投影した二次元の画像上の一点を指定する。そのため、情報処理装置1bは、表示装置上の点が三次元モデル上のどの点と対応するかを計算する必要がある。そこで、表面特定部22bは、三次元モデルが投影された投影面の位置と視点の位置とを用いて、指定された点が三次元モデル上のどの位置に存在する点であるのかを計算する。以降に、表面特定部22bが実行する処理について詳しく説明する。
例えば、表面特定部22bは、ASIC(Application Specific Integrated Circuit)やFPGA (Field Programmable Gate Array)などの集積回路、または、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。
表面特定部22bが行う計算の一例として、利用者が表示装置に表示されれた画像上の点P(X、Y)を指定した場合を説明する。ここで、点P(X、Y)は、表示装置5bに表示された画像の中心を原点(0、0)として、利用者によって指定された画像上の点を二次元の座標系で表すものとする。
表面特定部22bは、利用者によって点P(X、Y)を指定された場合には、表示装置5bに表示された投影画像の視点の位置を投影部21bから取得する。また、表面特定部22bは、投影面の位置を投影部21bから取得する。そして、表面特定部22bは、取得された視点および投影面の情報を用いて、指定された点P(X,Y)の座標を三次元空間の座標に変換する。
例えば、表面特定部22bは、三次元座標系での視点の位置(x1、y1、z1)を投影部21bより取得する。また、表面特定部22bは、投影面が(a、0、0)、(0、b、0)、(0,0、c)を通る面であるという情報を投影部21bより取得する。
次に、表面特定部22bは、取得された視点の位置と投影面の位置を用いて、視点から投影面に対する垂線が投影面と交差する点の座標C1(xc1、yc1、zc1)を計算する。また、原点から投影面に降ろした垂線をzx平面上に投影した線がx軸となす角度を「α」とし、原点から投影面に降ろした垂線がxz平面となす角度を「β」とする。
ここで、k1=sinα、k2=cosα/sinβ、k3=cosα・cosα/sinβ、ai=1/A、bi=1/b、ci=1/cと表記した場合は、指定された画像上の点P(X、Y)を三次元モデルの座標系で表した点P(x、y、z)は、以下の値となる。
表面特定部22bは、数2〜数4を用いて、投影面上の点P(x、y、z)を計算する。次に、表面特定部22bは、視点と点Pとを結ぶ直線と交わり、かつ視点に最も近い位置に存在する三次元モデルの表面を検索する。具体的には、表面特定部22bは、視点(x1、y1、z1)および点P(x、y、z)を通る直線を示す方程式を計算する。そして、表面特定部22bは、ポリゴン情報記憶部に記憶された情報を用いて、視点と点Pとを結ぶ直線と交わる三次元モデルの表面を検索する。
まず、表面特定部22bは、視点(x1、y1、z1)および点P(x、y、z)を通る直線を示すベクトルPを計算する。ここで、視点(x1、y1、z1)の位置ベクトルをa、点P(x、y、z)の位置ベクトルをbとすると、視点および点Pを通る直線ベクトルPは、以下の式で表すことができる。
ここで、rは、直線上の位置を示すパラメータである。また、r>1であるとする。一方、点V0を通り法線ベクトルnを有する平面Hは、以下の式で表すことができる。
すると、点V0を通り法線ベクトルnを有する平面Hと直線ベクトルPとの交点をPxとすると、ベクトルPxは、以下の式で表すことができる。
ここで、ベクトルPxは、数7にポリゴン情報記憶部12bに記憶された各ポリゴンのデータを代入した場合には、各ポリゴンを無限に大きくした平面と、数5によって表される直線との交点の位置ベクトルを表す。そこで、表面特定部22bは、ベクトルPxが各ポリゴンの範囲内にあるかを判定する。具体的には、表面特定部22bは、ポリゴン情報記憶部12bに記憶された各ポリゴンのデータを数7に代入し、ベクトルPxを計算する。次に、表面特定部22bは、以下の式を計算する。
ここで、ポリゴン情報記憶部12bに記憶された各ポリゴンの頂点をベクトルA、ベクトルB、ベクトルCで表す。また、数8に示したsおよびtは定数である。ここで、ベクトルPxで表される点がベクトルA、ベクトルB、ベクトルCで表される頂点を有するポリゴンに含まれる場合には、以下の式を満たす。
表面特定部22bは、数7を用いて、ポリゴン情報記憶部12bに記憶された各ポリゴンについてベクトルPxを計算する。また、表面特定部22bは、数9〜数11を用いて、ベクトルPxで表される点が各ポリゴンの範囲内にあるかを判定する。
次に、表面特定部22bは、ベクトルPxで表される点をポリゴンの範囲内に含むポリゴンが複数ある場合には、直線ベクトルPとポリゴンとの各交点から視点までの距離を計算し、視点から最も近い位置に存在する交点を指定された点とする。
例えば、表面特定部22bは、ポリゴン情報記憶部12bに記憶されたポリゴンID「1」のポリゴンと、直線ベクトルPとの交点を判定する場合には、法線ベクトルをnとして(j1、k1、l1)を数7へ代入する。また、表面特定部22bは、点V0として、ポリゴンID「1」のポリゴン頂点から任意の点、例えば、(a1、b1、c1)を数7へ代入する。
次に、表面特定部22bは、ベクトルPxを計算した場合には、(a1、b1、c1)をベクトルAとして数8に代入する。また、表面特定部22bは、(d1、e1、f1)をベクトルBとして数8に代入する。また、表面特定部22bは、(g1、h1、i1)をベクトルCとして数8に代入する。また、表面特定部22bは、計算されたベクトルPxを数8に代入する。
次に、表面特定部22bは、数8を計算した結果、定数sおよび定数tが数9〜11を満たすかどうかを判定する。表面特定部22bは、数8を計算した結果、定数sおよび定数tが数9〜11を満たす場合には、直線ベクトルPとポリゴンID「1」のポリゴンとが位置ベクトルPxの点で交わると判定する。
その後、表面特定部22bは、ポリゴン情報記憶部12bに記憶された全てのポリゴンについて、直線ベクトルPと交わるかを判定する。表面特定部22bは、複数のポリゴンが直線ベクトルPと交わる場合には、各交点と視点との距離を比較し、最も視点に近い交点が指定された点であると特定する。
表面特定部22bは、指定された画像上の点と対応する立体の表面に含まれる点の位置を特定した場合には、指定された点の座標を視点距離計測部23bおよび視点位置設定部25bへ通知する。また、表面特定部22bは、指定された点を含むポリゴンのIDをポリゴン情報記憶部12bより取得し、取得されたポリゴンIDを法線取得部24bへ通知する。
視点距離計測部23bは、指定された点と、視点との距離を計測する。具体的には、視点距離計測部24bは、指定された点の座標を表面特定部22bから通知された場合は、視点の座標と指定された点の座標とを用いて、指定された点と、視点との距離を計測する。例えば、視点距離計測部23bは、ASIC(Application Specific Integrated Circuit)やFPGA (Field Programmable Gate Array)などの集積回路、または、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。
例えば、視点距離計測部23bは、視点の位置を(x1、y1、z1)、指定された点の座標を(x2、y2、z2)とした場合には、以下の式を用いて、視点から指定された点までの距離Rを計算する。
視点距離計測部23bは、視点と指定された点との距離Rを計算した場合には、計算された距離Rを視点位置設定部25bへ通知する。
法線取得部24bは、表面特定部22bによって特定された立体の表面の法線方向を取得する。具体的には、法線取得部24bは、表面特定部22bから通知されたポリゴンIDと関連付けられて記憶されたポリゴン法線データをポリゴン情報記憶部12bより取得する。
例えば、法線取得部24bは、ASIC(Application Specific Integrated Circuit)やFPGA (Field Programmable Gate Array)などの集積回路、または、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。
例えば、法線取得部24bは、ポリゴンID「n」を表面特定部22bより通知された場合には、ポリゴン情報記憶部12bからポリゴン法線データ(jn、kn、ln)を取得する。そして、法線取得部24bは、取得されたポリゴン法線データを視点位置設定部25bへ通知する。
視点位置設定部25bは、法線取得部24bによって取得された法線方向に応じて、立体を投影する視点の位置を設定する。具体的には、法線取得部24bによって取得された法線データに応じて、立体を投影するための視点の位置を設定する。
また、視点位置設定部25bは、指定された点から法線方向上に存在する点であって、指定された点から視点距離計測部23bによって計測された距離分離れたところに位置する点を新たな視点の位置として設定する。具体的には、視点位置設定部25bは、表面特定部22bによって通知された点から法線取得部24bによって取得された法線が示す方向に向かって、視点距離計測部23bによって計測された視点と指定された点との距離分離れた点を新たな視点として設定する。
例えば、視点位置設定部25bは、ASIC(Application Specific Integrated Circuit)やFPGA (Field Programmable Gate Array)などの集積回路、または、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。
視点位置設定部25bは、指定された点の位置ベクトルをPx、取得された法線ベクトルをni、計測された距離をRとすると、新たな視点の位置ベクトルTを以下の式で計算する。
その後、視点位置設定部25bは、数13を用いて計算されたベクトルTで表される位置を、新たな視点の位置として設定し、投影部21bへ通知する。
[情報処理装置の処理]
次に、図4を用いて、情報処理装置1bが実行する処理の流れを説明する。図4は、実施例2に係る画像表示方法の処理の流れを説明するためのフローチャートである。情報処理装置1bは、利用者が表示装置5bに表示された投影画像上の点を指定したことをトリガとして、処理を開始する。
まず、表面特定部22bは、指定されたモニタ上の座標を三次元モデルの座標に変換する(ステップS101)。次に、表面特定部22bは、視点と指定された投影面上の点を通る直線を表すベクトル式を算出する(ステップS102)。次に、表面特定部22bは、算出された直線と、ポリゴンとの交点を算出し、算出された交点を三次元モデル表面上の指定された点として特定する(ステップS103)。次に、視点距離計測部23bは、三次元モデル上の指定された点と、視点との距離を計算する(ステップS104)。
次に、法線取得部24bは、三次元モデル上の指定された点を含むポリゴンをポリゴン情報記憶部12bから検索する(ステップS105)。次に、法線取得部24bは、検索されたポリゴンが有するポリゴン法線データを取得する(ステップS106)。次に、視点位置設定部25bは、法線取得部24bによって取得されたポリゴン法線データと、視点距離計測部23bによって計測された距離と、表面特定部22bによって算出された交点の位置とを用いて、新たな視点の位置を設定する(ステップS107)。
次に、投影部21bは、視点位置設定部25bによって新たに設定された視点を視点として、三次元モデルを投影した投影画像を作成する(ステップS108)。次に、投影部21bは、投影画像を表示装置5bに表示させる(ステップS109)。その後、情報処理装置1bは、処理を終了する。
次に、図5を用いて、実施例2に係る情報処理装置1bが実行する処理の例を説明する。図5は、実施例2に係る視点位置を変更する処理を説明するための図である。例えば、情報処理装置1bは、図5に示すように、視点Tから三次元モデルCおよび三次元モデルDを表示させている。
情報処理装置1bは、表示装置5bに表示させた画像から利用者によって一点が指定され、指定された画像上の点が図5に示す指定点Pと対応すると特定した場合には、指定点Pを含むポリゴンが有するポリゴン法線の方向を取得する。次に、情報処理装置1bは、指定点Pと視点Tとの距離を計測する。次に、情報処理装置1bは、指定点Pから法線方向上に存在する点であって、指定点Pから視点Tまでの距離と同じ距離分離れたところに位置する点T’を新たな視点の位置として設定する。
つまり、情報処理装置1bは、三次元モデルの上方向に視点を新たに設定した場合には、三次元モデルの横方向に視点を設定するよりも、三次元モデルによって隠された範囲を表示させ易い。ここで、情報処理装置1bが視点Tを視点として三次元モデルCおよび三次元モデルDを投影した画像を図6に示す。図6は、実施例2に係る情報処理装置が視点Tから投影した図である。
情報処理装置1bは、視点Tを視点として各三次元モデルを投影した場合には、図6に示すように、隠された範囲βを表示していない。次に、情報処理装置1bが新視点T’を視点として三次元モデルCおよび三次元モデルDを投影した画像を図7に示す。情報処理装置1bは、新視点T’を視点として各三次元モデルを投影した場合には、図7に示すように、隠された範囲βを表示することができる。図7は、実施例2に係る情報処理装置が視点T’から投影した図である。
[実施例2の効果]
上述してきたように、実施例2に記載の情報処理装置1bは、三次元モデルが投影された二次元の画像内から利用者によって一点が指定された場合には、指定された点に対応する三次元モデル上の表面の位置を特定する。また、情報処理装置1bは、特定された点を含むポリゴンの法線方向を取得する。また、情報処理装置1bは、特定された点から現在の視点までの距離を計測する。そして、情報処理装置1bは、特定された点から取得された法線方向に向かって計測された距離分離れた点を新たな視点の位置として設定する。
そのため、情報処理装置1bは、三次元モデルに隠された範囲を表示するので、利用者が三次元モデルに隠された範囲を容易に識別することができる。すなわち、情報処理装置1bは、利用者が三次元モデルの表面上から選択した点の位置に応じて、新たな視点の位置を設定する。そのため、情報処理装置1bは、利用者に対して容易に視点の位置を変更させることができる。
情報処理装置1bは、指定された点の法線方向を取得し、取得された法線方向に新たな視点を設定するので、視点された点の近隣に存在する隠された範囲を投影可能な視点を設定することができる。結果として、情報処理装置1bは、隠された範囲を表示させる視点を利用者が容易に設定することができる。
また、情報処理装置1bは、指定された点を含むポリゴンの法線方向を取得し、取得されたポリゴン法線方向に応じて、新たな視点を設定する。ここで、ポリゴンの法線方向は、ポリゴンを表示するために記憶部10bに記憶されている。また、一つのポリゴン上に存在する任意の点は、同一の法線方向を有している。そのため、情報処理装置1bは、余計な計算処理等を実行することなく、記憶部10bに記憶されたデータからポリゴンの法線方向を取得することができる。
以下の実施例3では、画像表示方法を実行する情報処理装置の構成および処理の流れを順に説明する。なお、実施例3と同様の処理および機能については、説明を省略する。
[情報処理装置の構成]
まず最初に、図8を用いて、画像表示方法を実行する装置の構成について説明する。ここで、図8は、実施例3に係る画像表示方法を実行する情報処理装置を説明するためのブロック図である。実施例3に係る情報処理装置1cは、記憶部10cおよび処理部20cを有している。また、表示装置5cは、表示装置5bと同様の表示装置である。また、操作装置6cは、操作装置6bと同様の表示装置である。
記憶部10cは、三次元モデル情報記憶部11cおよびポリゴン情報記憶部12cを有している。ポリゴン情報記憶部12cは、実施例2に係るポリゴン情報記憶部12bと同様の機能を発揮する。
三次元モデル情報記憶部11cは、複数の三次元モデルの情報を記憶している。具体的には、三次元モデル情報記憶部11cは、図9に示すように、三次元モデルが有する辺の情報を記憶している。図9は、実施例3に係る三次元モデル情報記憶部が記憶する情報の一例を表す図である。
三次元モデル情報記憶部11cは、各辺にIDを付して記憶している。例えば、三次元モデル情報記憶部11cは、辺IDが「1」である辺として、点P1から点P2までの線分で表すことができる辺を記憶している。また、三次元モデル情報記憶部11cは、各辺を有する面を示す情報として、面IDを記憶している。
例えば、三次元モデル情報記憶部11cは、面ID「1」の面が辺ID「1〜3」の辺を有していることを記憶している。三次元モデル情報記憶部11cは、図9に示すように、面ID「1」の面として、頂点(P1、P2、P3)を有する三角形の平面を記憶している。例えば、三次元モデル情報記憶部11bは、RAM(Random Access Memory)、 ROM(Read Only Memory)、フラッシュメモリ (flash memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
処理部20cは、投影部21c、表面特定部22c、視点距離計測部23c、法線取得部24cおよび視点位置設定部25cを有している。投影部21cは、実施例2に係る投影部21bと同様の機能を発揮する。表面特定部22cは、表面特定部22bと同様の機能を発揮する。法線取得部24cは、実施例2に係る法線取得部24bと同様の機能を発揮する。
視点距離計測部23cは、指定された点を有する立体の表面を囲む各辺のうち指定された点から最も近い辺を判定し、指定された点から判定された辺への垂線が判定された辺と交差する交点から現在の視点までの距離を計測する。具体的には、視点距離計測部23cは、指定された点の位置情報を取得した場合には、指定された点を含む三次元モデル上の平面を示す情報を三次元モデル情報記憶部11cより取得する。
例えば、視点距離計測部23cは、面IDが「1」である面の情報を三次元モデル情報記憶部11cから取得した場合には、辺IDが「1〜3」の辺の情報を取得する。次に、視点距離計測部23cは、取得された平面の情報と指定された点の位置情報とを用いて、取得された平面が有する辺のうち、指定された点に最も近い辺を判定する。ここで、指定された点を含む平面が有する辺をエッジという。視点距離計測部23cは、取得された平面を囲む各エッジと指定された点との距離を以下の式、および数12を用いて計算する。
ここで、aおよびdは、エッジの両端に存在する点の位置ベクトルである。pは、指定された点の位置ベクトルである。qは、指定された点からエッジに下ろした垂線とエッジとの交点の位置ベクトルである。視点距離計測部23cは、各エッジと指定された点との距離を計算した場合には、指定された点に最も近いエッジを判定する。
具体的には、視点距離計測部23cは、数12にベクトルpとベクトルqを代入し、指定された点から各エッジに下ろした垂線と各エッジとの交点のうち、最も指定された点に近い交点を判定する。そして、視点距離計測部23cは、指定された点に最も近いエッジを判定する。
視点距離計測部23cは、指定された点に最も近いエッジを判定した場合には、指定された点から判定されたエッジに下ろした垂線とエッジとの交点を判定する。視点距離計測部23cは、交点を判定した場合には、判定された交点から視点までの距離を数12を用いて計測し、計測した距離を視点位置設定部25cへ通知する。また、視点距離計測部23cは、判定された交点の位置を視点位置設定部25cへ通知する。
視点位置設定部25cは、指定された点から指定された点に最も近いエッジへ下ろした垂線と、指定された点に最も近いエッジとの交点を基点とする。また、視点位置設定部25cは、基点とした点から、法線取得部24cによって取得された法線方向上の点であって、交点から視点距離計測部23cによって計測された距離分離れたところに位置する点を新たな視点の位置として設定する。
具体的には、視点位置設定部25cは、視点距離計測部23cによって判定された交点の位置ベクトルをPx、法線取得部24cによって取得された法線ベクトルをniとする。また、視点位置設定部25cは、視点距離計測部23cによって計測された距離をRとする。
そして、視点位置設定部25cは、Px、niおよびRを用いて、ベクトルTを数13を用いて計算する。その後、視点位置設定部25cは、数13を用いて計算されたベクトルTで表される位置を新たな視点の位置として設定し、投影部21cへ通知する。
[情報処理装置の処理]
次に、図10を用いて、情報処理装置1cが実行する処理の流れを説明する。図10は、実施例3に係る画像表示方法が実行する処理の流れを説明するためのフローチャート(1)である。情報処理装置1cは、利用者が操作装置6cを用いて、表示装置5cに表示された投影画像上の点を指定したことをトリガとして、処理を開始する。
まず、表面特定部22cは、指定されたモニタ上の座標を三次元モデルの座標に変換する(ステップS201)。次に、表面特定部22cは、視点と指定された投影面上の点を通る直線を表すベクトル式を算出する(ステップS202)。次に、表面特定部22cは、算出された直線と、ポリゴンとの交点を算出し、算出された交点を三次元モデル上の指定された点として特定する(ステップS203)。
次に、法線取得部24cは、三次元モデル上の指定された点を含むポリゴンをポリゴン情報記憶部12cから検索する(ステップS204)。次に、法線取得部24cは、検索されたポリゴンが有するポリゴン法線データを取得する(ステップS205)。
次に、情報処理装置1cは、エッジ視点処理を実行する(ステップS206)。次に、情報処理装置1cは、エッジ視点処理によって設定された新たな視点からの画像を作成する(ステップS207)。次に、投影部21bは、投影画像を表示装置5bに表示させる(ステップS208)。その後、情報処理装置1cは、処理を終了する。
次に、図11を用いて、エッジ視点処理の流れを具体的に説明する。図11は、実施例3に係る画像表示方法の処理の流れを説明するためのフローチャート(2)である。情報処理装置1cは、法線取得部24がポリゴン法線データを取得したことを契機として、エッジ視点処理を実行する。
まず、視点距離計測部23cは、指定された点から一番近いエッジを判定する(ステップS301)。次に、視点距離計測部23cは、指定された点から判定されたエッジに下ろした垂線とエッジとの交点を判定する(ステップS302)。次に、視点距離計測部23cは、判定された交点から視点までの距離を計測する(ステップS303)。
次に、視点位置設定部25cは、視点距離計測部23cによって判定された交点の位置と、視点距離計測部23cによって計測された距離と、法線取得部24cによって取得された法線データとを用いて、新たな視点の位置を設定する(ステップS304)。
例えば、図12に示すように、情報処理装置1cは、利用者によって点P2が指定された場合には、点P2における三次元モデル表面の法線方向を取得する。次に、情報処理装置1cは、点P2から最も近くに存在するエッジを判定する。また、情報処理装置1cは、点P2から判定されたエッジに下ろした垂線とエッジとの交点P2’を判定する。
次に、情報処理装置1cは、点P2’から点T2までの距離を計測する。次に、情報処理装置1cは、点P2’から取得された法線方向へ、計測された距離だけ離れた位置を新たな視点T2’の位置として設定する。その後、情報処理装置1cは、エッジ視点処理を終了する。ここで、図12は、実施例3に係る視点位置を変更する処理を説明するための図である。
ここで、図12を用いて、情報処理装置1cが特定された点の位置を変更する処理を具体的に説明する。情報処理装置1cは、図12に示すように、視点T2の位置を視点として三次元モデルEおよび三次元モデルFを投影した場合には、範囲γが三次元モデルEに隠されてしまうため、範囲γを表示させることができない。ここで、指定された点P2よりも、特定された点に基づいて判定された点P2’の方が範囲γに近い。
一般的に、三次元モデルに隠された範囲は、三次元モデルが有するエッジの近辺に存在すると考えられる。情報処理装置1cは、指定された点よりも、より隠された範囲に近い点を基点して新たな視点T2’を設定するので、利用者が隠された範囲を識別しやすくすることができる。結果として、情報処理装置1cは、隠された範囲を表示させるとともに、隠された範囲がより利用者にとって識別されやすいように表示させることができる。
[実施例3の効果]
上述してきたように、実施例3に記載の情報処理装置1cは、三次元モデルの表面上から一つの点が指定された場合には、指定された点の法線方向を取得する。また、情報処理装置1cは、指定された点を有する平面を囲むエッジのうち、指定された点に最も近いエッジを判定し、指定された点から判定されたエッジへ下ろした垂線と判定されたエッジとの交点を判定する。
また情報処理装置1cは、判定された交点から視点までの距離を計測する。そして、情報処理装置1cは、判定された交点から、取得された法線方向へ計測された距離分離れた点を視点の位置として新たに設定する。そのため、情報処理装置1cは、投影された範囲を利用者がより識別しやすいように三次元モデルを投影することができる。
これまで本発明の実施例について、説明したが本発明は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例4として本発明に含まれる他の実施例を説明する。
(1)オフセット及び遮蔽物を避ける処理について
実施例1および実施例2に係る情報処理装置は、指定された点の法線方向を取得し、指定された点から取得された法線方向へ所定の距離離れた位置を新たな視点の位置としていた。また、実施例3に係る情報処理装置は、指定された点の法線方向を取得し、指定された点から最も近いエッジへ下ろした垂線とエッジとの交点から、取得された法線方向へ所定の距離離れた位置を新たな視点の位置としていた。しかし、実施例4に係る情報処理装置はこれに限定されるものではなく、他の処理を付加してもよい。
例えば、三次元モデルの真上に視点を設定した場合は、投影された画像のコントラストが不明瞭となり、利用者による識別が困難となる場合がある。そのため、情報処理装置は、新たに設定される視点の位置にオフセットを考慮してもよい。例えば、情報処理装置は、図13に示すように、計算された視点の位置T4’に対して所定の角度傾けた位置Uを新たな視点の位置として設定してもよい。
また、情報処理装置は、図13に示したT4’を新たな視点として設定した場合には、P4’を中心としT4及びT4’を有する円弧の延長上の点Uを新たな視点の位置として設定してもよい。
また、情報処理装置は、公知の技術を利用して、遮蔽物を避ける処理を行ってもよい。一例として、情報処理装置は、図14に示すように、指定された点Pと新たに計算された視点T3’との間に三次元モデルが存在する場合について説明する。ここで、図14は、遮蔽物を避ける処理の一例を説明するための図である。
例えば、本実施例に係る情報処理装置1dは、各実施例において説明した処理を実行する各部21d〜25dを有している。さらに、情報処理装置1dは、補正方向判定部26dと新視点補正部27dとを有している。補正方向判定部26dは、視点位置設定部25dによって新たに設定された視点と、指定された点とを結ぶ線分が他の立体と交差するかを判定する。
また、補正方向判定部26dは、新たな視点と指定された点とを結ぶ線分が他の立体と交差する場合には、新たな視点と指定された点とを結ぶ線分と交差する立体に含まれる辺のうち、交差する点から最も近い辺の方向を補正方向として判定する。
具体的には、補正方向判定部26dは、視点位置設定部25dが新たな視点T3’の位置を設定した場合には、指定された点Pから新たな視点T3’までの線分を表すベクトルPT 3’を計算する。次に、補正方向判定部26dは、ベクトルPT 3’と三次元モデルが交差するかどうかを判定する。
そして、補正方向判定部26dは、ベクトルPT3’と三次元モデルが交差する場合は、ベクトルPT 3’と三次元モデルが交差する点のうち、もっとも点Pに近い交点の位置を算出する。一例として、線分PT3’と三次元モデルが交差する点のうち、最も点Pに近い交点Qを図14に示した。
次に、補正方向判定部26dは、交点Qから最も近い位置にあるエッジを判定する。次に、情報処理装置は、交点Qから判定されたエッジに下ろした垂線と判定されたエッジとの交点を交点Sとして判定する。そして、補正方向判定部26dは、交点Qから交点Sの方向を補正方向として判定する。
新視点補正部27dは、指定された点と新たに設定された視点との距離を変更することなく、補正方向判定部26dによって判定された補正方向へ傾けるように、新たに設定された視点の位置を補正する。具体的には、新視点補正部27dは、図14に示す点Pの位置を固定したままで、線分PT3’を補正方広範手部26dによって判定された交点Qから交点Sの方向へ傾ける。
また新視点補正部27dは、線分PT 3’が判定されたエッジと交わった場合には、さらに線分PT3’を所定の角度傾ける。図14に示した場合には、新視点補正部27dは、線分PT 3’をさらにθだけ傾けている。新視点補正部27dは、得られた線分PT3’が有する点T 3’’の位置を新たな視点の位置として補正する。そして、情報処理装置1dは、新視点補正部27dによって補正された視点T3’’から各三次元モデルを投影する。
例えば、情報処理装置は、視点T 3’から三次元モデルを投影した場合には、範囲Δを表示させることができないが、視点T3’’に視点を移動して三次元モデルを投影した場合には、図15に示すように、範囲Δを表示させることができる。
情報処理装置は、遮蔽物を避ける処理を行った場合には、新たな視点を設定したにもかかわらず、利用者が識別したい範囲が遮蔽物によって投影されないという問題をさらに解決することができる。
(2)視点の距離について
実施例1および実施例2では、指定された点から視点までの距離と指定された点から新たに設定される視点までの距離を変更せずに、新たな視点の位置を設定していた。また、実施例3では、指定された点から最近傍のエッジに下ろした垂線とエッジとの交点から視点までの距離と、垂線とエッジとの交点から新たに設定される視点までの距離を変更せずに、新たな視点の位置を設定していた。
しかし、実施例はこれに限定されるものではなく、例えば、情報処理装置は、指定された点と新たに設定される視点までの距離をあらかじめ利用者が設定するようにしてもよい。また、指定された点を含む三次元モデルの大きさに応じて、指定された点と新たに設定される視点までの距離を自動的に設定してもよい。
例えば、情報処理装置は、指定された点を含む三次元モデル全体が投影面に投影されるように、指定された点と新たに設定される視点との距離を自動的に設定してもよい。
(3)取得する法線方向について
実施例1〜3に係る情報処理装置は、指定された点を含むポリゴンが有する法線方向のみを取得していた。しかし、実施例はこれに限定されるものではなく、例えば、複数のポリゴンが有する法線方向を用いてもよい。例えば、法線取得部は、指定された点の近傍に存在する各ポリゴンの法線方向を取得し、取得された各法線方向を合成した方向を取得してもよい。
具体的には、法線取得部は、指定された点を有するポリゴンおよび指定されたポリゴンと接している複数のポリゴンが有する法線方向を取得し、取得された各法線方向を合成した後に規格化した法線ベクトルを用いて、新たな視点を設定してもよい。
また、実施例1〜3に係る情報処理装置は、三次元モデル上の一点を指定されていた。しかし、実施例はこれに限定されるものではなく、情報処理装置は、矩形選択を用いて、三次元モデル上の一部分を指定されてもよい。
例えば、情報処理装置は、三次元モデル上の一部分を矩形選択によって指定された場合には、矩形選択に含まれるポリゴンの法線方向を合成した後に規格化した法線ベクトルを取得する。そして、情報処理装置は、矩形選択によって指定された範囲の重心点を基点とし、取得された法線ベクトルの方向に所定の距離離れた位置を新たな視点として設定してもよい。
複雑な形状を有する三次元モデルは、様々な向きのポリゴンを有している。しかし、一定の範囲内に含まれる複数のポリゴンは、各ポリゴン法線の向きが大まかにそろっている。そのため、利用者は、好適なポリゴン法線を有するポリゴンを一つ指定するよりも、好適なポリゴン法線を有する大まかな範囲を指定した場合に、新たに設定される好適な視点の位置の方向を容易に指定することができる。
情報処理装置は、利用者によって指定された範囲に含まれるポリゴンの各ポリゴン法線を合成し、合成されたポリゴン法線に応じた視点を新たに設定するので、利用者が好適なポリゴン法線を容易に指定することができるからである。
(4)表示方法について
実施例1〜3に係る情報処理装置は、指定された視点に応じて三次元モデルを投影し、投影された画像を画像表示装置に表示させていた。しかし、実施例はこれに限定されるものではなく、例えば、情報処理装置は、新たな視点の位置が設定された場合には、新たに設定された視点に応じて投影された画像を作成し、作成された画像を直前に表示させた画像とは別途表示させてもよい。
具体的には、情報処理装置は、新たな視点の位置が設定された場合には、新たな視点の位置に応じて投影された画像を作成し、作成された画像を直前に表示された画像とは別ウインドウで表示してもよい。
また、情報処理装置は、新たな視点が設定された場合には、直前の視点と新たに設定された視点とを結ぶ曲線上から複数の視点を選択し、各視点に応じて投影された画像を段階的に表示するようにしてもよい。例えば、情報処理装置は、新たな視点を設定した場合には、直前の視点の位置から新たな視点の位置まで視点を一定距離ずつ動かしながら、各位置で三次元モデルを投影する。そして情報処理装置は、各視点の位置で投影された三次元モデルの画像を連続で表示させる。
(5)エッジの選択について
実施例3に係る情報処理装置では、指定された点から指定された点に最も近い辺に垂線を下ろし、垂線と辺との交点を基点として新たな視点を設定していた。しかし、実施例はこれに限定されるものではない。
例えば、情報処理装置は、三次元モデルが投影された二次元の画像内から一点が指定された場合には、指定された点に対応する立体の表面上の点を特定し、特定された点を含む平面を囲む各辺のうち、視点を基準として指定された点の奥側にある辺を判定する。そして、情報処理装置は、指定された点から判定された辺へ垂線を下ろし、垂線と辺との交点を基点として新たな視点を設定してもよい。
通常、オクルージョンとなった範囲は、視点を基準として三次元モデルの奥側に発生する。そのため、情報処理装置は、視点を基準として指定された点の奥側にある辺が有する点を基点とした場合には、オクルージョンとなった範囲により近い視点を新たに設定することができる。結果として、情報処理装置は、より適切な視点を新たに設定することができる。
(6)プログラム
ところで、実施例2および実施例3に係る情報処理装置は、ハードウェアを利用して各種の処理を実現する場合を説明した。しかし、実施例はこれに限定されるものではなく、あらかじめ用意されたプログラムを情報処理装置で実行することによって実現するようにしてもよい。
そこで、以下では、図16を用いて、実施例2および実施例3に示した情報処理装置と同様の機能を有するプログラムを実行する情報処理装置の一例を説明する。図16は、画像表示プログラムを実行するコンピュータを説明するための図である。
図16に例示された情報処理装置200は、HDD(Hard Disc Drive)150、RAM(Random Access Memory)120、ROM(Read Only Memory)130、がバス170で接続されている。
また、図11に例示された情報処理装置200は、CPU(Central Processing Unit)140がバス170で接続されている。さらにバス170には、表示装置5および操作装置6と接続するための接続端子部分I/O(Input/Output)160が接続されている。
HDD150には、三次元モデル情報記憶テーブル151およびポリゴン情報記憶テーブル152が記憶されている。三次元モデル情報記憶テーブル151は、図8に示した実施例3に係る三次元モデル情報記憶部11cと同様の情報を有している。また、ポリゴン情報記憶テーブル152は、図8に示したポリゴン情報記憶部12cと同様の情報、または、図2に示した実施例2に係るポリゴン情報記憶部12bと同様の情報を有している。
ROM130には、投影プログラム131、表面特定プログラム132、視点距離計測プログラム133、法線取得プログラム134および視点位置設定プログラム135があらかじめ保持されている。CPU140が各プログラム131〜135をROM130から読み出して実行することによって、図11に示すように、各プログラム131〜135は、投影プロセス141、表面特定プロセス142、視点距離計測プロセス143、法線取得プログラム144および視点位置プロセス145として機能するようになる。
なお、各プロセス141〜145は、図3に示した投影部21b、表面特定部22b、視点距離計測部23、法線取得部24b、視点位置設定部25bと同様の機能を発揮する。また、各プロセス141〜145は、図8に示した各部21c〜25cと同様の機能を発揮するようにすることも可能である。
なお、各プログラム141〜145はROM130に保持されている必要は無く、例えばHDD150に記録されており、CPU140によって展開され、各プロセス141〜145として機能するようにしてもよい。また、各プログラム141〜145は、RAM120に保持されてもよい。
なお、本実施例で説明した複製作成プログラムは、あらかじめ用意されたプログラムをパーソナル情報処理装置やワークステーションなどの情報処理装置で実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。
また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM,MO、DVDなどの情報処理装置で読取可能な記録媒体に記録され、情報処理装置によって記録媒体から読み出されることによって実行することもできる。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)立体が投影された二次元の画像内の一点が指定された場合に、該指定された点に対応する立体の表面を特定する表面特定ステップと、
前記表面特定ステップによって特定された立体の表面の法線方向を取得する法線取得ステップと、
前記法線取得ステップによって取得された法線方向に応じて、前記立体を投影する視点の位置を設定する視点位置設定ステップと、
を含んだことを特徴とする画像表示方法。
(付記2)前記指定された点と対応する立体の表面上の点から現在の視点までの距離を計測する視点距離計測ステップをさらに含み、
前記視点位置設定ステップは、前記指定された点と対応する立体の表面上の点から前記法線方向上に存在する点であって、前記指定された点と対応する立体の表面上の点から前記視点距離計測ステップによって計測された前記距離分離れたところに位置する点を新たな視点の位置として設定する事を特徴とする付記1に記載の画像表示方法。
(付記3)前記法線取得ステップは、前記立体の表面が複数の多角形平面で形成されている場合には、前記指定された点と対応する立体の表面上の点の近傍に存在する各多角形平面の法線方向を取得し、当該取得された各法線方向を合成した方向を取得することを特徴とする付記1または2に記載の画像表示方法。
(付記4)前記視点距離計測ステップは、前記指定された点と対応する立体の表面上の点を有する前記立体の表面を囲む各辺のうち前記立体の表面上の点から最も近い辺を判定し、前記立体の表面上の点から前記判定された辺への垂線が前記判定された辺と交差する交点から前記現在の視点までの距離を計測し、
前記視点位置設定ステップは、前記交点を基点とした前記法線方向上の点であって、前記交点から前記視点距離計測ステップによって計測された前記距離分離れたところに位置する点を新たな視点の位置として設定することを特徴とする付記1または3に記載の画像表示方法。
(付記5)前記視点位置設定ステップによって新たに設定された視点と、前記指定された点と対応する立体の表面上の点とを結ぶ線分が他の前記立体と交差する場合には、当該他の立体に含まれる辺のうち、前記交差する点から最も近い辺の方向を補正方向として判定する補正方向判定ステップと、
前記表面上の点と前記新たに設定された視点との距離を変更することなく、前記新たに設定された視点の位置を、前記補正方向判定ステップによって判定された前記補正方向へ傾けるように補正する新視点補正ステップと、をさらに含むことを特徴とする付記1から4のいずれか一つに記載の画像表示方法。
(付記6)前記視点位置判定ステップによって、前記新たな視点の位置が判定された場合には、当該新たに判定された視点の位置に応じた平面へ、前記立体の形状を投影した画像を作成し、画像を表示する表示装置に、前回表示した画像とは別途表示させる表示ステップをさらに含むことを特徴とする付記1から5のいずれか一つに記載の画像表示方法。
(付記7)前記視点位置判定ステップによって、前記新たな視点の位置が判定された場合には、前回判定された前記視点と前記新たな視点とを結ぶ曲線上に存在する複数の点を通過視点として複数選択し、当該選択された各通過視点の位置に応じた各平面へ、立体の形状を投影した画像を作成し、当該作成された画像を段階的に表示することを特徴とする付記1から6のいずれか一つに記載の画像表示方法。
(付記8)二次元の平面に投影されている立体の表面から一つの点が指定された場合には、該指定された点における表面の法線方向を取得する法線取得部と、
前記法線取得部によって取得された法線方向に応じて、前記立体を投影する視点の位置を設定する視点位置設定部と、
を備えることを特徴とする情報処理装置。
(付記9)立体が投影された二次元の画像内の一点が指定された場合に、該指定された点を含む立体の表面を特定する表面特定手順と、
前記表面特定手順によって特定された立体の表面の法線方向を取得する法線取得手順と、
前記法線取得手順によって取得された法線方向に応じて、前記立体を投影する視点の位置を設定する視点位置設定手順と、
を含んだことを特徴とする画像表示プログラム。