(57)【要約】  描画装置で、数値シミュレーション結果を表示する際の処理負荷の軽減を図る。三次元空間における流体の流れを表す流線を、任意の視点位置から見た二次元画像として描画する描画装置が提供される。描画装置は、所定の開始位置から流線を生成する流線生成部と、前記視点位置を前記三次元空間内に設定するビュー設定部と、複数の多角形面を連結した帯状面を、前記設定された視点位置に基づき、前記流線に沿うように形成する帯状面形成部と、前記三次元空間の所定位置に配置された光源に対する前記帯状面の反射光を表すテクスチャを、前記複数の多角形面の各々にマッピングするテクスチャマッピング部とを有する。
2013038548.tif 000002
【特許請求の範囲】
【請求項１】
三次元空間における流体の流れを表す流線を、任意の視点位置から見た二次元画像として描画する描画装置において、
所定の開始位置から流線を生成する流線生成部と、
前記視点位置を前記三次元空間内に設定するビュー設定部と、
複数の多角形面を連結した帯状面を、前記設定された視点位置に基づき、前記流線に沿うように形成する帯状面形成部と、
前記三次元空間の所定位置に配置された光源に対する前記帯状面の反射光を表すテクスチャを、前記複数の多角形面の各々にマッピングするテクスチャマッピング部とを有することを特徴とする描画装置。
【請求項２】
前記テクスチャマッピング部は、
前記三次元空間の所定位置に配置された光源への法線を表す法線情報を用いることにより、前記三次元空間の所定位置に配置された光源に対する前記帯状面の反射光を表すテクスチャを、前記複数の多角形面の各々にマッピングすることを特徴とする請求項１記載の描画装置。
【請求項３】
前記帯状面形成部は、
前記設定された視点位置から見た前記複数の多角形面の各々の面積が最大となるよう、又は、前記複数の多角形面の各々の上に存在する特定の点から延ばした法線に対して、前記設定された視点位置から下ろした垂線の長さが最小となるよう、又は、前記複数の多角形面の各々の各頂点と前記設定された視点位置間の距離の総和が最小となるように、前記複数の多角形面の各々の傾きを決定することを特徴とする請求項１記載の描画装置。
【請求項４】
前記帯状面形成部は、
前記複数の多角形面において互いに隣接する第１の多角形面と第２の多角形面とが共有する辺が、前記流線と交叉するように前記帯状面を形成することを特徴とする請求項１記載の描画装置。
【請求項５】
前記テクスチャマッピング部は、
テクスチャをマッピングする前記複数の多角形面の各々に対応する前記流線の位置における前記流体の物理値に基づいて、テクスチャをマッピングすることを特徴とする請求項１記載の描画装置。
【請求項６】
前記帯状面形成部は、
前記複数の多角形面の各々に対応する前記流線の位置における前記流体の物理値に基づいて、前記複数の多角形面の各々の形状を決定することを特徴とする請求項１記載の描画装置。
【請求項７】
三次元空間における流体の流れを表す流線を、任意の視点位置から見た二次元画像として描画する描画方法において、
コンピュータが、
所定の開始位置から流線を生成し、
前記視点位置を前記三次元空間内に設定し、
複数の多角形面を連結した帯状面を、前記設定された視点位置に基づき、前記流線に沿うように形成し、
前記三次元空間の所定位置に配置された光源に対する前記帯状面の反射光を表すテクスチャを、前記複数の多角形面の各々にマッピングすることを特徴とする描画方法。
【請求項８】
三次元空間における流体の流れを表す流線を、任意の視点位置から見た二次元画像として描画する描画プログラムにおいて、
コンピュータに、
所定の開始位置から流線を生成させ、
前記視点位置を前記三次元空間内に設定させ、
複数の多角形面を連結した帯状面を、前記設定された視点位置に基づき、前記流線に沿うように形成させ、
前記三次元空間の所定位置に配置された光源に対する前記帯状面の反射光を表すテクスチャを、前記複数の多角形面の各々にマッピングさせることを特徴とする描画プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画装置、描画方法及び描画プログラムに関する。
【背景技術】
【０００２】
近年、計算機シミュレーションは、計算機の計算能力の向上により、様々な分野で利用されるようになってきた。そして、計算機シミュレーション結果のデータ量は、計算機の計算能力の向上とともに増加傾向にあり、特に高度科学技術計算（HPC：High  Performance  Computing）の分野においては、従来よりもデータ量が膨大なものとなっている。【０００３】
図１は、計算機シミュレーション結果を可視化した例を示している。図１は、立方体内に存在する流体の流れを示している。流体は、流体を構成している分子が時間と共にその位置を変えている。特定の流体の分子に着目し、その分子が時間の経過によって流体内を移動する軌跡を流線と呼ぶ。計算機シミュレーションにより、1つ以上の開始点を予め定めておき、その開始点から複数の流線を計算することができる。流線自体は、幅を持たない線であるため、計算機シミュレーションのデータから流線だけを描画しても、人間が把握することが容易ではない。このため、図１に示されるように、流線をチューブ状のオブジェクトとして三次元空間上に配置する。そして、視点位置を定め、三次元空間上に配置したオブジェクトを視点位置から見える二次元グラフィック表示としてレンダリング（描画処理）を行うことにより、流線の可視化が実現できる。【０００４】
上述の流線の可視化を行う際には、様々な視点位置および視点方向からの観察が求められる。この場合、三次元形状のチューブの表面を複数のポリゴンで表現することが知られている。チューブに対して、特定の光源からのシェーディング（陰影処理）を施す。チューブの位置における物理値（例えば、流体の速度、温度等）に応じて色づけ又は模様づけをするためにテクスチャマッピングを行う。そして、定められた視点位置および視点方向から見える二次元画像を形成するために、レンダリングを行うこととなる。計算機シミュレーションのデータ量は、従来よりも膨大な量（テラバイト〜ペタバイト単位のデータ量）となる。このため、１回のレンダリングに従来よりも多くの時間を要する。しかも、視点位置および視点方向を変えた場合には、レンダリングを再度行わなければならない。【０００５】
例えば、人物をＶＲ空間において表示しようとする場合、モデルを複数の平面で捉え、視点位置及び視点方向情報に基づき、これらの複数の平面のうち、少なくとも１つの平面を選択し、選択された平面の情報にのみに基づき表示処理する技術が知られている。しかしながら、この技術では、視点位置及び視点方向に対応して、モデルに対して複数の平面を予め用意しておく必要があり、用意すべき平面の数が多くなってしまう。【０００６】
また、三次元画像データによる物体の周囲に複数の投影面を設定し、各投影面に物体の見える面を平行投影し、各投影面の投影画像から物体表面の色データを持つテクスチャ画像を生成する。そして、これらの投影面毎のテクスチャ画像との対応関係を示す関連情報を付加した三次元形状データを生成する。三次元形状データで表現される物体を任意の視点方向から見た二次元画像データを生成し、そのテクスチャ関連情報に基づいて各投影面のテクスチャ画像を多重的にマッピングして物体を再現する技術が知られている。【０００７】
また、三次元仮想空間に設定した物体、光源及び視点に基づいて前記空間の情景（シーン）を表す二次元画像を生成するために、物体のモデルデータを視点の座標系に変換し、視点座標系によるモデルデータを投影面に投影し、視点からの着目物体方向等を基準として、各物体のレンダリング方法を切り替える技術が知られている。【０００８】
図２Ａは、ワイヤーフレームで閉じられた多数のポリゴンで表現された流線を可視化したチューブ状のワイヤーフレームを示している。また、図２Ｂは、流線の可視化処理の流れを示している。上述のように、これらのポリゴンの数は年々増加傾向にある。そして、各空間位置には、物理値が存在している。物理値の例としては、渦度などのスカラー値、速度、応力などのベクトル値、せん断応力などのテンソル値などがある。まず、ステップ２１０で、シミュレーション結果等のデータを入力する。そして、ステップ２２０で、必要に応じて、数値データに対しフィルタ処理などの加工を施す。その後、ステップ２３０で、まず流線を計算する。図２Ａで示したように、流線をチューブ状として表現するために、多数のポリゴンによるチューブ状の形状を生成する。そして、ステップ２４０でグラフィック処理によるシェーディング等を行った後、レンダリングを行なう。物理値は、ポリゴン上に色などを用いて表現する。【０００９】
このように、計算機シミュレーションによる物理値は近年増加しており、しかも従来より多数のポリゴンを有するチューブの形状に色とシェーディングを付与して二次元画像をレンダリングする必要がある。このためには、従来より膨大な計算量及び長時間を要する。【００１０】
加えて、視点を遮る陰面の透過処理を行わない場合や視点を動かさない通常の三次元可視化処理においては、隠面側の視点から見えない形状については、可視化のために必ずしも計算しなくてよい。しかしながら、自由に視点を動かして観察することが必要となる計算機シミュレーションデータ等の可視化の場合には、隠面側の視点から見えない形状についても、可視化のために計算を行っておくことが必要となる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平１０−２２２６９２号公報
【特許文献２】特開平１０−２８３４８７号公報
【特許文献３】特開２００３−１１５０５５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
１つの側面では、本発明は、数値シミュレーション結果を表示する際の処理負荷の軽減を図ることを目的とする。
【課題を解決するための手段】
【００１３】
本装置の一観点によれば、三次元空間における流体の流れを表す流線を、任意の視点位置から見た二次元画像として描画する描画装置において、所定の開始位置から流線を生成する流線生成部と、前記視点位置を前記三次元空間内に設定するビュー設定部と、複数の多角形面を連結した帯状面を、前記設定された視点位置に基づき、前記流線に沿うように形成する帯状面形成部と、前記三次元空間の所定位置に配置された光源に対する前記帯状面の反射光を表すテクスチャを、前記複数の多角形面の各々にマッピングするテクスチャマッピング部を有することを特徴とする描画装置が提供される。
【発明の効果】
【００１４】
数値シミュレーション結果を表示する際の処理負荷の軽減を図ることができる。
【図面の簡単な説明】
【００１５】
【図１】計算機シミュレーション結果の可視化の例を示す図である。
【図２Ａ】多数のポリゴンで表現されたチューブによって流線を示す図である。
【図２Ｂ】流線の可視化処理の流れを示す図である。
【図３】流線を示す図である。
【図４Ａ】流線に沿って四辺形を連結した帯状面を形成する処理を示す図である。
【図４Ｂ】流線に沿って四辺形を連結した帯状面を形成する処理を示す図である。
【図４Ｃ】流線に沿って四辺形を連結した帯状面を形成する処理を示す図である。
【図４Ｄ】流線に沿って四辺形を連結した帯状面を形成する処理を示す図である。
【図５】法線マップを示す図である。
【図６】反射光と物理値に対応するカラーテクスチャのマッピングを示す図である。
【図７】物理値とテクスチャの色とのマッピングを示す図である。
【図８】物理値とチューブの太さとのマッピングを示す図である。
【図９】２つの物理値をチューブの太さと色にマッピングした例を示す図である。
【図１０Ａ】視点Ｉａに対する四辺形の向きの決定を示す図である。
【図１０Ｂ】視点Ｉｂに対する四辺形の向きの決定を示す図である。
【図１０Ｃ】視点Ｉｂに対する四辺形の向きの決定を示す図である。
【図１１Ａ】一実施形態の処理フローを示す図である。
【図１１Ｂ】一実施形態の処理装置を示すブロック図である。
【図１２】一実施形態のハードウエア構成を示す図である。
【図１３】四辺形の傾きを変更した場合の四辺形の修正を示す図である。
【図１４】四辺形の傾きを変更した場合の四辺形の修正を示す図である。
【発明を実施するための形態】
【００１６】
図３は、三次元空間上に満たされた流体（不図示）の流線L３００を示している。一般に、ある瞬間における各点の流体分子の速度ベクトルに沿ってできる曲線を「流線」という。また、同一の開始点から次々と流れる複数の流体分子をある瞬間に結んでできる曲線を「流脈線(流条線)」という。そして、一つの流体分子の移動経路を継続追跡して描かれる曲線を「流跡線」という。定常な流れでは、これら三者は同一となるが、非定常な流れでは異なる線となる。本明細書においては、上記の「流線」、「流脈線(流条線)」及び「流跡線」を、便宜上総称して「流線」の語を用いて説明する。本明細書に記載された複数の実施例は、これら三者のいずれにも適用できることは言うまでもない。
【００１７】
図３において、流線Ｌ３００は、各時間ステップのベクトル場を入力データとして、本出願の出願日時点で当業者に知られているRunge-Kutta法、あるいは、Dormand-Prince法により、流線Ｌ３００を計算することができる。流線Ｌ３００には、曲率の大きな特徴部分に点（節点）Ｐ３０１乃至Ｐ３０６を配置してもよい。
【実施例】
【００１８】
図４Ａ乃至図４Ｄは、流線に沿って四辺形を連結した帯状面を形成する処理を示している。なお、本実施形態では、四辺形（矩形）を用いているが、四辺形以外の多角形面を用いてもよい。【００１９】
図４Ａにおいて、三次元空間上に視点Ｉ及び視線ベクトルＶを設定する。この視点Ｉ及び視線ベクトルＶは、ユーザによって指定されてもよい。ユーザからの指定がない場合は、予め定められた視点Ｉの位置及び視点ベクトルＶの値を用いてもよい。また、様々な角度から、流線を観察するために、これらの値は、ユーザにより適宜変更されてもよい。指定された視点Ｉ及び視線ベクトルＶの情報は、記憶部に記憶され、本実施例のシステムによって利用される。【００２０】
開始位置Ｐ４０１から終端位置Ｐｅｎｄまで、流線Ｌ４００が示されている。まず、流線Ｌ４００の開始位置Ｐ４０１と、隣の節点Ｐ４０２を含むように、四辺形Ｍ４１０を生成する。四辺形Ｍ４１０の辺Ｈ４０１上に開始位置Ｐ４０１が存在し、辺Ｈ４０２上に節点Ｐ４０２が存在するようにしてもよい。節点を通る辺Ｈ４０１、Ｈ４０２は、予め定められた一定の長さとしてもよい。あるいは、節点における物理値（例えば、流体の速度、温度）に応じて、辺の長さを決定してもよい。四辺形Ｍ４１０は、４つの頂点（Ｐ４０１ａ、Ｐ４０１ｂ、Ｐ４０２ａ、Ｐ４０２ｂ）を持つ。四辺形Ｍ４１０の面の傾きは、視点Ｉから四辺形Ｍ４１０が見える面積が最大となるように決定される。同様に、節点Ｐ４０２と節点Ｐ４０３を用いて、四辺形Ｍ４２０を生成する。四辺形Ｍ４２０は、節点Ｐ４０２を通る辺Ｈ４０２と、節点Ｐ４０３を通る辺Ｈ４０３を持ち、４つの頂点（Ｐ４０２ａ、Ｐ４０２ｂ、Ｐ４０３ａ、Ｐ４０３ｂ）を有する。そして、四辺形Ｍ４１０と四辺形Ｍ４２０は、辺Ｈ４０２を共有する。なお、各々の四辺形は、必ずしも長方形又は正方形である必要はなく、平行四辺形又は台形となってもよい。あるいは四辺形以外の三角形やその他の多角形でもよい。以上の操作を繰り返し、終端位置Ｐｅｎｄまで、四辺形を生成する。この操作によって、複数の四辺形により接続された帯状面Ｑ４００が流線Ｌ４００に沿って形成される。なお、各四辺形の面の向きをどのように決定するかのアルゴリズムの詳細は後述する。【００２１】
図４Ｂは、着目する流線と平行になるように新たな流線をコピーする操作を示している。この操作は、図４Ｃで後述するように、四辺形の数を増やし、帯状面Ｑ４００を滑らかにするための前処理として位置づけられる。四辺形を適切な数だけ生成する処理は、ここで述べる方法以外にもあり得る点に留意すべきである。例えば、図４Ａにおいて、予め節点の数を増やしておき、四辺形を生成してもよい。流線Ｌ４００を挟むように、流線Ｌ４００に近似した近似流線Ｌ４００ａ及びＬ４００ｂを描く。Ｌ４００ａは、四辺形の頂点Ｐ４０１ａ、Ｐ４０２ａ、Ｐ４０３ａ、...、Ｐｅｎｄａを通るように、流線Ｌ４００を平行移動して生成した曲線としてもよい。同様に、四辺形の頂点Ｐ４０１ｂ、Ｐ４０２ｂ、Ｐ４０３ｂ、...、Ｐｅｎｄｂを通る曲線Ｌ４００ｂを生成する。なお、本実施形態では、着目する流線を挟むように２つの新たな曲線を生成したが、新たな流線を１つだけ生成してもよい。【００２２】
図４Ｃは、辺を追加することにより、四辺形の数を増加させる操作を示している。例えば、辺Ｈ４０１と辺Ｈ４０２の間に、辺Ｈ４０１ａが追加されている。同様に、辺Ｈ４０２と辺Ｈ４０３の間に、辺Ｈ４０２ａが追加されている。【００２３】
辺の追加は、例えば以下のように行えばよい。
（１）各流線において隣り合う２つの節点を結ぶ線分の勾配（勾配ベクトル）を求める。
（２）２つの節点を結ぶ線分勾配の差が、予め定められた閾値ｔｈより大きい場合、例えば、その２つの節点の中間点に新たな節点を生成する。
（３）各流線において生成した新たな節点を結ぶ新たな辺を生成する。
（４）新たな辺と、隣接する既存の辺とで構成される四辺形を生成する。【００２４】
以上の操作により、例えば、辺Ｈ４０１と、新たな辺Ｈ４０１ａとを持つ新たな四辺形を形成することができる。同様に辺Ｈ４０１ａと辺Ｈ４０２とで、新たな四辺形を形成する。この操作を繰り返すことにより、四辺形の数を増加させることができる。なお、上述のように、四辺形の増加の方法は、この実施形態に限定されない。【００２５】
なお、上記（２）の処理において、２つの節点の中間点以外に新たな節点を生成しても良い。【００２６】
図４Ｄは、三角形のポリゴンを形成する操作を示している。ポリゴンとは、立体形状を三次元的に表現する場合に用いられる当該立体形状の表面を分割する多角形である。計算のしやすさを考慮した場合、ポリゴンとして三角形が用いられる。本実施形態では、三角形のポリゴンを形成している。例えば、四辺形に一本の対角線ｍ４０１を引くことにより、三角形のポリゴンＰｇ４０１とＰｇ４０２が形成される。対角線ｍ４０１乃至ｍ４０４を引くことにより、ポリゴンＰｇ４０１乃至Ｐｇ４０８が形成される。三角形のポリゴンを形成することにより、汎用的な三次元グラフィクスソフト及びレンダリングハードウエアを用いて処理を行うことが容易となる。なお、この段階で、四辺形の辺のうち、流線と交叉している辺の長さを、流線のその位置での物理値に基づいて伸縮させてもよい。辺の長さを伸縮させることにより、チューブの太さを変化させることができる。辺の長さの伸縮は、適切な他の処理段階で行ってもよいことは言うまでもない。なお、最終的なチューブ形状に見える二次元画像をレンダリングするために、ポリゴンを生成することは必須ではない。【００２７】
従来技術では、流線１本あたりのポリゴン数がより多い。このため、処理を行う計算機の画像処理性能によっては、流線の可視化により多大な時間が必要となる。このため、入力の段階において単純にデータ量を減らす方法が知られている。シミュレーションのデータは既に時間空間で離散化されているが、再度サンプリングして、より疎なデータとする。この方法では、観察者が見たい現象を正確に再現できないというリスクがある。すなわち、この方法は、処理前に情報を削減してしまうため、流線の構造が、データの削減前のものと同じにならない可能性が高い。【００２８】
これに比して、本実施例では、データ量を削減せずに、流線の１本あたりのポリゴン数を大幅に削減できる。【００２９】
図５（Ａ）は、法線マップの模式図を示している。四辺形５００は面であるため、このままの状態でレンダリングを行うと、単純な面として描画されてしまう。この四辺形をチューブ形状に見えるようにするために、四辺形の各領域ｃ１乃至ｃ４に、それぞれ法線ベクトルｕ１乃至ｕ４をマッピングする。この法線ベクトルｕ１乃至ｕ４は、チューブ形状の法線をシミュレートするよう設定される。図５（Ｂ）は、法線マップ情報をメモリ上に記憶する際のテーブルの例を示している。それぞれの位置に対応づけて法線ベクトルの値が格納される。なお、この実施形態では、４つの位置に法線ベクトルを対応付けたが、更に多くのベクトルを持つ法線マップを用いて細かい対応付けを行ってもよい。また、法線マップの代わりに、チューブ形状の高さを示す高さマップを保持してもよい。【００３０】
なお、法線マップは、長方形５００に対応して保持しておけば、平行四辺形、台形等の四辺形（矩形）に対する法線マップを計算することができる。たとえば、四辺形５００の四隅の頂点を台形の四隅の頂点と対応付けて、モーフィングと同様の手法で法線マップを台形にマッピングすればよい。同様に、三角形や四辺形以外の多角形に対しても、長方形５００の法線マップを利用することができる。なお、三角形やその他の多角形用のための法線マップ情報を、ライブラリとして別途記憶しておいてもよいことは言うまでもない。【００３１】
なお、上述の例では、ポリゴンとして三角形を用いているが、ポリゴンは、三次元形状のモデリングの手法として用いるものであり、法線マップのデータ構造とは別個に扱うことができる。【００３２】
図６（Ａ）は、反射光のテクスチャのマッピングを示している。上述の法線マップを適用して光源６５０からの光の反射を考慮し、視点Ｉから視線ベクトルＶ方向に見た四辺形６００をレンダリングした結果が示されている。例として、適用したテクスチャは単色である。【００３３】
図６（Ｂ）は、それぞれの流線の位置における物理値（例えば、速度）を色にマッピングしたテクスチャを用いてレンダリングした結果を示している。図６（Ｂ）は、白黒の階調表示で描かれているが、実際には、色を変化させたテクスチャをマッピングしている。【００３４】
このように、流線をチューブ形状によって可視化すると共に、流線の個々の位置における物理値（例えば、温度）を色によって表現することができる。更に、別の物理値（例えば、速度）に応じてチューブ形状の太さを変えることにより、チューブ形状の色と太さにより、二つの物理値（例えば、温度と速度）を同時に表現することができる（図９参照）。【００３５】
図７は、物理値とテクスチャの色とのマッピングを示している。例えば物理値として流体の温度を四辺形に対して色のテクスチャとしてマッピングするための関係を示している。温度が低い場合には、青にマッピングされ、温度が高い場合には赤にマッピングされる。温度が中程度であれば黄色にマッピングされる。【００３６】
図８は、物理値とチューブの太さとのマッピングを示している。例えば、流体の速度（流速）が小さければチューブの太さを太くする（すなわち四辺形の辺のうち、流線と交叉している辺の長さを長くする）。逆に、流体の速度が大きければチューブの太さを捕捉する（すなわち四辺形の辺のうち、流線と交叉している辺の長さを短くする）。【００３７】
図９は、図７及び図８の関係を用いて、帯状面を形成し、テクスチャマッピングを施し、レンダリングを行った結果の例を示している。図９において、９５１乃至９５４は、それぞれ、四辺形を表している。描かれたチューブは、９０１及び９０３の領域で細くなっており、９０２の領域で太くなっている。このことから、９０２の領域では、他の部分に比べて流速が小さいことが分かる（図８参照）。また、図９においては、白黒となっているが、９０１及び９０３の領域では、赤い色を示しており、９０２の領域では黄色い色を示している。したがって、９０２の領域では、他の部分に比べて温度が低いことが分かる。【００３８】
図１０Ａ及び図１０Ｂは、視点を視点Ｉａから視点Ｉｂに移動させた場合に、四辺形Ｍ１００の面の向きを決定する処理を示している。【００３９】
まず、図１０Ａにおいて、視点は、視点Ｉａに位置している。四辺形Ｍ１００において、2つの対向する辺は、流線Ｌ１００の節点Ｐ１０１とＰ１０２において接している。この場合、四辺形Ｍ１００は、方向Ｄ１２０又は方向Ｄ１３０に、面の傾きを変化させることができる。四辺形Ｍ１００の面の傾きは、視点が視点Ｉａの位置にある場合には、例えば以下のように決定することができる。【００４０】
［視点が視点Ｉａの位置にある場合の四辺形Ｍ１００の向きの決定］
（１）四辺形Ｍ１００上に単位面積Ｔ１５０を設定する。そして、視点Ｉａから見てＴ１５０の面積が最大に見えるように、四辺形Ｍ１００の傾きを決定する。又は、
（２）四辺形Ｍ１００上の任意の点Ｓ１６０から四辺形Ｍ１００に対する法線ベクトルＶｓを延ばす。そして、視点Ｉａから法線ベクトルＶｓに垂線を下ろし、その垂線の長さＬａが最小となるように、四辺形Ｍ１００の傾きを決定する。
（３）四辺形Ｍ１００の四隅の点から視点までの距離の総和が最小となるように、四辺形Ｍ１００の傾きを決定する。【００４１】
以上が、四辺形Ｍ１００の面の傾きを決定する処理の例である。上記の決定処理以外にも、当業者であれば、Ｍ１００の面の傾きを決定する手法は見いだせるであろう。【００４２】
図１０Ｂは、視点が視点Ｉａから視点Ｉｂに移動した場合の、四辺形Ｍ１００の面の傾きを決定する処理を示している。【００４３】
上述のように、視点Ｉｂから見て、四辺形Ｍ１００上の単位面積Ｔ１５０が最大に見えるように、四辺形Ｍ１００の面の傾きを決定すればよい。又は、四辺形Ｍ１００上の任意の点Ｓ１６０から四辺形Ｍ１００に対する法線ベクトルＶｓを延ばす。そして、視点Ｉｂから法線ベクトルＶｓに垂線を下ろし、その垂線の長さＬｂが最小となるように、四辺形Ｍ１００の傾きを決定すればよい。【００４４】
図１０Ｃは、視点が視点Ｉａから視点Ｉｂに移動した場合の、四辺形Ｍ１００の面の傾きを決定する別の処理を示している。視点Ｉｂと、四辺形Ｍ１００の各頂点Ｋ１８１、Ｋ１８２、Ｋ１８３、及びＫ１８４とを結んだ直線を、それぞれＮ１８１、Ｎ１８２、Ｎ１８３、及びＮ１８４とする。そして、直線Ｎ１８１、Ｎ１８２、Ｎ１８３、及びＮ１８４の長さの総和が最も小さくなるように、四辺形Ｍ１００の傾きを決定すればよい。【００４５】
以上の操作を他の四辺形の面の傾きの決定にも行えば、帯状面の全体の傾きが変更される。その後、テクスチャマッピングを施し、レンダリングを行えば、新たな視点Ｉｂから見たチューブ状の流線の二次元画像が得られる。【００４６】
このように、帯状面を生成し、テクスチャマッピングを利用して、帯状面をチューブ状に見えるようレンダリングする。三次元空間上にチューブを実際に生成するよりも、帯状面を利用する方が、ポリゴン数を従来よりも減少させることができる。したがって、流線を可視化する処理を従来よりも短縮することが可能である。また、視点を変えた場合にも、上述のように四辺形の面の向きを変更し、テクスチャマッピングを施し、レンダリングを行えばよい。上述のように、少ないポリゴン数のため、視線を変更しても従来よりも高速に二次元画像が得られる。【００４７】
なお、四辺形の面の傾きをより高速に決定するには、更に視線ベクトル及び視野を考慮してもよい（図示せず）。すなわち、視線ベクトルと視野によって、最終的にレンダリングされるべき三次元モデルの部分が特定される。この特定された三次元モデル部分だけに着目して、四辺形の傾きの変更、テクスチャマッピング、レンダリング等の処理を限定して行えばよい。【００４８】
図１１Ａは、一実施形態の処理フローを示している。以下に示す処理フローは、矛盾のない限り、順番を入れ替えてもよい。そして、また、プログラムに係る請求項及び、方法に係る請求項における、各ステップについても、矛盾のない限り順番を入れ替えてもよいことは言うまでもない。そして、請求項内のステップの順番を入れ替えた場合でも、その請求項の技術的範囲に包含される。また、既に記憶部にデータが記憶されており、改めてユーザからの指示を受け付ける必要がない場合がある点に留意すべきである。加えて、ユーザからの指示がない場合には、デフォルト値を用いて処理を行ってもよい。【００４９】
ステップ１１０２で、まず、三次元空間上の視点位置、視線方向、流線開始位置の指示をユーザから受け取る。なお、これらのデータは、予め記憶装置に記憶しておいてもよい。【００５０】
ステップ１１０４で、シミュレーションなどによって得られたベクトル場のデータを読み込む。【００５１】
ステップ１１０６で、記憶部に記憶された流線の開始位置を読み込む。【００５２】
ステップ１１０８で、流線を生成する。【００５３】
ステップ１１１０で、記憶部に記憶された視点位置を読み込む。【００５４】
ステップ１１１２で、流線に沿って、帯状面を生成する。ここでは、まず、複数の四辺形を生成する。次に、流線をコピーして新たな流線を生成する。そして、四辺形の両端の辺において、流線に沿った勾配ベクトルの変化量が、予め定められた閾値ｔｈよりも大きい場合には、例えば中間点において、四辺形を分割する。なお、既に述べたように、流線をコピーせずに、流線における節点を適切に増加させ、隣接する節点間によって四辺形を形成させてもよい。なお、例えば、節点における物理値（例えば、速度、温度等）に基づいて、節点を含む四辺形の辺の長さを、予め定めた関数を用いて決定してもよい。【００５５】
ステップ１１１４で、四辺形に対角線を一本引いて、２つの三角形を生成する。この処理を、全ての四辺形に行う。この処理によって、帯状面は、三角形のポリゴンで表現されることとなる。なお、ポリゴンは、必ずしも三角形である必要はないため、四辺形のままでポリゴンとして扱ってもよい。なお、三角形のポリゴンを用いる場合には、三次元モデルの処理が容易化される。【００５６】
ステップ１１１６で、法線マップのデータを読み込む。法線マップは、長方形に対する法線マップのデータを記憶させておいてもよい。実際の四辺形がひし形、台形である場合には、長方形の法線マップをひし形、台形に適用することができる。例えば、長方形の各頂点を、台形の各頂点と対応させ、変形量を比例配分して台形の法線マップを計算すればよい。【００５７】
ステップ１１１８で、法線マップを利用して、反射を表現するテクスチャを生成する。また、流線の各位置における物理値（例えば、速度、温度等）に対応付けて色を加えたテクスチャを生成してもよい。【００５８】
ステップ１１２０において、未処理の流線があるか否かがチェックされる。未処理の流線がある場合には、ステップ１１０６に戻る。なお、流線の数は、流線の開始位置の個数と一致する。そして、未処理の流線がない場合には、全ての流線に対する帯状面の作成及びテクスチャマッピングが終了したこととなる。この場合には、ステップ１１３０に進む。【００５９】
ステップ１１３０で、視点位置から、視線方向に見たチューブ状の流線が、レンダリングされる。レンダリングされたデータは、表示装置に表示される。そして、処理は「Ａ」を経由してステップ１１４２に進む。【００６０】
ステップ１１４２において、視点を変更するユーザからの指示があるか否かがチェックされる。ユーザは、視点位置を変更して、流線の状況を観察したい場合があるからである。このチェックで、視点位置を変更しない場合には、ステップ１１６２に進む。【００６１】
ステップ１１３２で、視線方向を変更するユーザからの指示があるか否かがチェックされる。このチェックで視線方向の変更が指示されていることが分かった場合には、ステップ１１６４に進む。【００６２】
ステップ１１６４では、ユーザから視線方向の指示を受け取る。この場合には、視点位置は、変更されていないため、視界の変更の指示がなされたことになる。そして、この場合には、ステップ１１３０において指示された視点及び視線方向に対する二次元画像をレンダリングすればよい。【００６３】
ステップ１１４２のチェックで、ＹＥＳである場合には、ステップ１１４４に進む。【００６４】
ステップ１１４４では、視点位置、視線方向の変更指示をユーザから受け取り、記憶部に記憶する。この場合、視線方向については、変更の指示がなく、視点位置のみが変更される場合もある。【００６５】
ステップ１１４６で、受け付けた視点位置を読み込む。【００６６】
ステップ１１４８で、視点位置に基づいて、帯状面の各々の四辺形の傾きを修正する。【００６７】
ステップ１１５０で、ポリゴンの生成が行われる。この処理は、ステップ１１１４と同様である。【００６８】
ステップ１１５２で、法線マップデータが読み込まれる。この処理は、ステップ１１１６と同様である。【００６９】
ステップ１１５４で、法線マップを利用して、反射を表現するテクスチャを生成する。また、流線の各位置における物理値（例えば、速度、温度等）に対応付けて色を加えたテクスチャを生成してもよい。この処理は、ステップ１１１８と同様である。【００７０】
ステップ１１５６で、未処理の流線があるか否かがチェックされる。未処理の流線がある場合には、ステップ１１４６に戻る。そして、未処理の流線がない場合には、全ての流線に対する帯状面の各四辺形の傾きの修正及びテクスチャマッピングが終了したこととなる。この場合には、ステップ１１３０に進み、レンダリングが行われる。【００７１】
ステップ１１６２において、視線方向を変更しない場合（ＮＯ）には、ユーザは、視点位置及び視線方向の変更を望んでいないため、更なる処理は不要であるため、一連の処理が終了する。【００７２】
図１１Ｂは、一実施形態の処理装置のブロック図を示す。まず、データ入力部１１７２から流体の流れのシミュレーションデータ等のベクトルデータを読み込み、記憶部１１９２に記憶する。【００７３】
ビュー設定部１１７４では、ユーザからの指示を受け付ける。例えば、視点位置、視線方向、焦点距離、並びに、三次元空間上での光源の位置等を受付け、記憶部に記憶する。【００７４】
開始位置設定部１１７６では、流体の流れを示す流線の開始位置に関するユーザの指定を受け付ける。このデータは、記憶部に記憶される。【００７５】
色、チューブ形状設定部１１７８では、チューブ形状の色をどのように設定するかに関するユーザからの指定を受け付ける。例えば、流線上の各位置での流体の温度をチューブの色にマッピングする場合には、例えば図７に示したようなマッピング関係を設定する。また、チューブの太さを流体の物理値と関連付けることができる。この場合には、図８に示したように、例えば、流体の流速をチューブの太さに関連付けることができる。なお、チューブの太さは、帯状面を形成する各四辺形の辺の幅を伸縮させることによりコントロールできる。【００７６】
流線生成部１１８０は、開始位置設定部１１７６から受け付けられて記憶部に記憶された流線の開始位置と、シミュレーションデータとを用いて、流線を生成する。複数の開始位置が設定されていれば、複数の流線が生成される。【００７７】
帯状面形成部１１８２は、帯状面を形成する。面形状決定手段１１８４において、流線に沿って複数の四辺形が決定される。面傾き決定部１１８３において、この複数の四辺形の傾きが決定される。この処理を経て、帯状面が形成される。また、帯状面を三角形のポリゴンに分割する。なお、面傾き決定部１１８３は、視点の位置等が変更された場合にも、面の傾きを変更するために利用される。【００７８】
テクスチャマッピング部１１８５は、複数の四辺形の各々にテクスチャをマッピングする。色適用手段１１８６は上述のように、物理値と色とのマッピングから、テクスチャに色を適用する。法線マップ適用手段１１８７は、法線マップ１１９３を記憶部１１９２から読み出す。そして、光源の位置と法線マップの法線ベクトルを四辺形の傾きに適用し、反射をシミュレートしたテクスチャを四辺形にマッピングする。【００７９】
レンダリング部１１８９は、二次元平面に流線を可視化したチューブを描画する。【００８０】
表示部１１９０は、レンダリングされた画像を表示する。【００８１】
図１２は、一実施形態のハードウエア構成１２００を示している。ハードウエアには、ＣＰＵ１２０２、メモリ１２０４、動的メモリ１２０６、媒体１２０９を読み書きするドライブ１２０８、通信インターフェース１２１０、表示装置１２１３等に画像信号を送るビデオインターフェース１２１２、Ｉ／Ｏインターフェース１２１４、Ｉ／Ｏとしてのキーボード１２１６、マウス１２１８、プリンタ１２２０が含まれる。【００８２】
ＣＰＵ１２０２は、メモリ１２０４や動的メモリ１２０６に格納されている上記説明した種々の機能を実現するプログラムを実行する。【００８３】
また、プログラムに係る本発明は、機械読み取り可能な記録媒体に格納されてもよい。機械読み取り可能な記録媒体には、磁気記録媒体、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録媒体には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。光ディスクには、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ（Ｒｅｃｏｒｄａｂｌｅ）／ＲＷ（ＲｅＷｒｉｔａｂｌｅ）などがある。また、光磁気記録媒体には、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｋ）などがある。【００８４】
図１３は、四辺形の傾きを変更した場合の四辺形の修正を示す図である。図１３（ａ）は、流線Ｌ１３００に対し、四辺形Ｍ１３１０及びＭ１３２０が、節点Ｐ１３２０を通る辺Ｈ１３５０を共有している。視点（図示せず）の位置を変更した場合、これらの四辺形の傾きを変更する処理が行われ、図１３（ｂ）のように、二つの四辺形がＭ１３１１及びＭ１３２１のように傾きを変えたと仮定する。この場合、二つの四辺形Ｍ１３１１及びＭ１３２１は、辺を共有しなくなってしまう場合がある。そのため、節点Ｐ１３０２を通り四辺形Ｍ１３１１及びＭ１３２１のそれぞれの面が交わる直線α１３８０を求める。図１３（ｃ）に示すように、先に求めた直線α１３８０を共有する辺Ｈ１３５２として、四辺形Ｍ１３１２及びＭ２３２２に示すように修正すればよい。この処理を他の四辺形と共有する辺に対しても行えばよい。【００８５】
図１４は、四辺形の傾きを変更した場合の四辺形の別の修正を示す図である。図１４（ａ）は、四辺形Ｍ１４１０、Ｍ１４２０、及びＭ１４３０が、流線Ｌ１４００に沿って帯状面を形成している。この３つの四辺形は、それぞれ隣り合う四辺形と辺を共有している。図１４（ｂ）は、視点（図示せず）の位置が変更されたために、１つ置きに四辺形の傾きを変更させた状態を示している。すなわち、四辺形Ｍ１４３１及びＭ１４２１が四辺形の傾きを変えている。そして、この状態で、両四辺形の頂点Ｋ１４９１とＫ１４９４とを結ぶ。同様に両四辺形の頂点Ｋ１４９２とＫ１４９３とを結ぶ。図１４（ｃ）は、その結果、新たな四辺形Ｍ１４１１が形成された様子を示している。この処理により、簡便に四辺形の傾きを変えることができる。なお、新たに作成された四辺形Ｍ１４１１は、厳密に平面にならず、捻れた面となる場合があるが、平面に近似して（例えば、対角線で２分して、２つの三角形ポリゴンに置き換えて）後のレンダリング処理等を行ってもよい。
【図１】
2013038548.tif 000003
【図２Ａ】
2013038548.tif 000004
【図２Ｂ】
2013038548.tif 000005
【図３】
2013038548.tif 000006
【図４Ａ】
2013038548.tif 000007
【図４Ｂ】
2013038548.tif 000008
【図４Ｃ】
2013038548.tif 000009
【図４Ｄ】
2013038548.tif 000010
【図５】
2013038548.tif 000011
【図６】
2013038548.tif 000012
【図７】
2013038548.tif 000013
【図８】
2013038548.tif 000014
【図９】
2013038548.tif 000015
【図１０Ａ】
2013038548.tif 000016
【図１０Ｂ】
2013038548.tif 000017
【図１０Ｃ】
2013038548.tif 000018
【図１１Ａ】
2013038548.tif 000019
【図１１Ｂ】
2013038548.tif 000020
【図１２】
2013038548.tif 000021
【図１３】
2013038548.tif 000022
【図１４】
2013038548.tif 000023
【国際調査報告】
2013038548.tif 000024
2013038548.tif 000025
2013038548.tif 000026
2013038548.tif 000027