説明

透明物体表示回路

【課題】コンピュータグラフィックス描画技術に関し、ガラス等様態の透明物体に映し出される屈折を伴う映像の描画手段と、その手段の論理回路実装を提供する。
【解決手段】透明物体を囲む環境キューブと、物体空間を設け、物体空間はさらに細かな空間に分割する。透明物体の描画点での視線ベクトルVおよび面法線Nから屈折計算回路40で屈折ベルトルTを求め直線式発生回路41では直線式を求め、この直線と分割空間との交差テストを回路41と回路42で行い、面交差空間である場合は、所定のポリゴンデータを読み出す。ポリゴンデータは回路41と交差計算回路45で交差点座標値を求める。交点での座標値、面法線が屈折計算回路40に与えられ、物体から抜け出たベクトルを求めることと、次の交点のテストと交点計算を繰り返す。次に回路41で物体空間の外郭に到達したベクトルを用いて環境キューブとの交点を求めこの輝度を最初の描画点の輝度とする。

【発明の詳細な説明】
【技術分野】
【001】
この発明は コンピュータグラフィックスにおいて、ガラス等の透明物体に映し出される屈折を伴う映像の描画手段と、その手段の論理回路実装の技術分野に関する。
【背景技術】
【002】
コンピュータグラフィックスにおいて透明物体上に映し出される映像表現は、描画点での視線ベクトルが物体に入射屈折し、さらにその物体から抜け出た視線ベクトルがその先にある映像と交差する点の輝度(映像)を求め、これを物体上(描画点)の輝度とすることで表現できる。従来描画点における輝度を決定する手段としてレイトレーシング法が比較的正確に映像を表現できる点で高細密な映像表現に用いられてきたが、この手法はコンピュータ負荷が重く実時間処理には適していない。実時間性を重視するポリゴンレンダリング法においては、描画点での物体の法線と、視線ベクトルおよび物体の屈折率から物体内部を通過する屈折ベクトルを求め、このベクトルがその延長線上にある物体外部の映像と交差する点の輝度を求め、これを描画点の輝度とする最初の物体上の1次屈折のみを考慮した方法が提案されている。屈折ベクトルが最後に交わる交点は、予め6面の環境キューブを設け、キューブ中心を投影中心とした6面に投影される映像を記憶し、キューブ面との交点計算で得ている。この方法は透明物体から屈折ベクトルが抜け出す際の2次屈折を考慮していないため実態とは大きく異なる映像となる。一方、屈折ベクトルの1次屈折で得られるキューブ面上の交差位置と、描画点座標値を延長したキューブ面の交点それぞれの位置から、そのおよそ中間となる位置を屈折ベクトルの新たな交点として、一次屈折のもつ誤差を少なくする手法も提案されている。しかしいずれの方法であっても、物体内部の屈折ベクトルが再び物体から抜け出す正しい位置とその際の2次屈折作用を考慮しない限り、より現実的な映像表現を得ることはできない。
本発明では、屈折ベクトルが物体から抜け出る2次屈折点の位置を正確に求め、その点における屈折を計算し、さらに複雑な形状をもつ物体で生じる多次の屈折も可能な実時間に適した描画手段とそのアルゴリズムの実装回路を提案するものである。
【発明の開示】
【発明が解決しようとする課題】
【003】
本発明は、透明物体の多次屈折を考慮した描画を実時間で実行するアルゴリズムとそのハードウエア実装を課題としている。
【課題を解決するための手段】
【004】
ポリゴンデータで定義された透明物体の描画においては、描画点情報として視線ベクトルと面法線がポリゴン頂点データから補間され求められる。また透明物体の透過率も前もって定義されていることから物体内部における視線ベクトル(以下屈折ベクトルという)を求めることができる。屈折ベクトルが物体のどの位置と交差し、再び物体から抜け出るかが最も計算負荷が重く、これまでの技術では実時間処理では得られていない。本発明では、透明物体の描画について、前処理と描画処理の2つに分ける。前処理は物体の変形が無い限り再計算は発生しないため、描画速度には影響を与えない。これを前提に本発明では物体を取り囲む直方体の空間(以下物体空間という)を定義し、この物体空間を任意の大きさで空間分割する。分割されたそれぞれの物体空間(以下分割空間という)には物体面が交差する分割空間、物体の完全内部および物体の完全外部となる3つの状態をもつ分割空間がそれぞれ含まれる。分割空間の座標値に対応したアドレスをもつバッファをそれぞれ設けて、分割空間情報を記憶する。すなわちx、y、z座標に対しmxnxpの分割(それぞれ任意の値)であれば、m、n、pを単純にビットフィールドに配列したアドレス構造でもよい。よってその分割数分のアドレス数とアドレス当たり所定の大きさのワード数からなるバッファとなる。本発明では、前記3つの状態の分割空間を、例えば外部ではA、内部ではB、また物体面を含む空間をCのフラグ情報として、前記の対応するアドレスのバッファ内に記憶する。
【005】
一方、物体面を含む分割空間には、その空間に含まれるポリゴン情報を記憶する。これは対応するアドレスのバッファに、ポリゴン情報を記憶した別のバッファのアドレスにリンクするためのアドレスを記憶しておき、A,Bならば無視、Cのフラグがあれば、さらにリンクアドレスを読み出して、その先にあるポリゴン情報を読み出す方法である。一つの分割空間には複数のポリゴンが記憶されることや、同じポリゴンが複数の分割空間を跨ぐ場合には複数の分割空間に同一ポリゴンが記憶されることもある。分割空間当たりのポリゴン数は分割サイズに依存し、空間分割が前処理で行われることから最適化を図ることができる。
【006】
描画実行中において描画点(1次屈折点)の屈折ベクトルを求め、本発明では描画点座標値と屈折ベクトルから直線式を立て、その直線と交差する分割空間のみを検索する。直線の歩進は、3次元座標系の内、直線が長軸(直線の傾きの最も大きな軸)となる座標軸を基軸に、分割空間の辺長を単位として3軸それぞれの直線式に代入して得た点を含む分割空間のみをテストすれば良い。このテストとは前記[004]のA,B,Cのフラグをバッファから読み出して調べることであり、A、Bであればスキップしさらに歩進を進め、フラグCを検出することである。フラグCが検出されれば、所定のリンクアドレスからポリゴン情報を読み出し、直線式とポリゴン面との交差計算を行う。直線と面との交点計算は既知の数式的処理で可能である。
【007】
本発明ではポリゴン情報として3角形の頂点データと共に頂点における属性情報も定義する。それらは面法線、屈折率、透過率、減衰率、テキスチャーアドレスとなる。3角形面が多面体の一部である場合、それぞれの頂点における面法線は異なるため、交差点における面法線は、屈折ベクトルとポリゴン面との交差点座標値からそれぞれのポリゴン頂点に定義された3つの法線による3点補間法を用いる。これは透明物体の表面加工により透過率や減衰率が異なり、ポリゴン頂点にそれぞれ異なる前記の透過率や減衰率が定義されている場合も同様な補間法で対応できる。一方これらが頂点属性ではなくマップ方式で定義されている場合には交点のテキスチャー座標からそれらを求める方法もある。また3点補間法は直線と面との交差計算と同様に四則演算で求められるため補間処理の回路化により高速処理が可能である。
【008】
屈折ベクトルの交差点(2次屈折点)での座標値と面法線および屈折率とから、透明物体から抜け出る屈折ベクトル(以下出力視線ベクトルという)が求まる。この出力点と出力視線ベクトルを用いて、透明物体をさらに囲む環境キューブ面との交点を求め、この面の輝度を描画点(1次屈折点)の輝度とする。所定の点から環境キューブ面との交差計算方式は、(反射ベクトル)位置依存型の環境キューブ描画技術で既知の方式であり、本発明の新規範囲には含まれないので詳細は省略する。
【009】
屈折計算において屈折率と入力視線ベクトルあるいは屈折ベクトルと法線との関係から全反射が生じることがある。物体外部面での全反射であれば、視線ベクトルと面法線から反射ベクトルを求め、全反射点を新たな始点とし[006]と同様な手段で引き続き分割空間をテストし次の交点を求める。分割空間が物体空間の外郭分割空間となった場合は、反射ベクトルの延長線上にある環境キューブ面との交差する点を求めることとなる。内部での全反射の場合も同様に[006]の手段で引き続き分割空間をテストし、次の交点を求める。内部において全反射が繰り返されるループとなり、環境キューブへ到達しない場合も考えられる。この場合は屈折次数の上限を定め、それを超える場合は打ち切り、予め定義した輝度に設定することが必要となる。
【010】
直線と分割空間を[006]においてテストする際、2次元では直線式に代入して得た座標値あたり2つ、3次元では4つの分割空間が直線とポリゴン面とのテスト空間となる。Cの分割空間が検出されれば、前記[007][008]と同様な手段で交点(2次屈折点)を求める。もし交点が無ければ、さらに交点が検出されるまで直線式を進める。凹面をもつ物体では最初に交点が検出された場合は[008]に提案した環境キューブとの交点を直ちに求めることはできない。この場合、それぞれの屈折点毎に直線式を求めて、直線が物体空間の外面に到着するまで続ける必要がある。
【011】
本発明では凹面形状においては、描画点(1次屈折点)での情報を保存すると同時に2次屈折点での出力視線ベクトルを求め、2次屈折点を起点として再び[006]の処理に入る。これを透明物体の物体空間の外面に到達するまで実行する。この結果、例えば最後のn次屈折点とそのn次出力視線ベクトルとなった場合は、それらを用いて前記環境キューブとの交点計算に入る。前記保存された情報は最終的な輝度の決定に用いられる。
【012】
屈折計算において、物体内を通過する屈折ベクトル、あるいは出力視線ベクトルが次の表面と交差し再び物体内を透過してゆく際、一部に不透明物質が混じる場合、あるいは物体表面が塗装されている場合もある。これらを表現するには、すべての交点で入力視点ベクトルから始まったベクトルのそれぞれが、交点毎に屈折か反射ベクトル(反射にも鏡面性および鏡面性を持たないものがある)のいずれになるかをテストし、決定されたベクトルの方向で次の交点をテストする必要がある。
【013】
本発明では[007]の属性がポリゴン情報として定義される。ここで減衰率は物体内の屈折ベクトルの通過長(1次屈折から交点までの距離)により環境キューブから得られる輝度を減衰する輝度減衰スケール値となる。また透過率は透過率が高ければ透明感が強いもの、透明率が低い場合は不透明となりテキスチャー座標値から交点におけるテキスチャー輝度を求める。
この場合、屈折ベクトルは不透明面に交差したことになりそれ以上の屈折・反射処理は打ち切りとなる。よってテキスチャーの色が1次屈折点(描画点)の色となり、屈折ベクトルは物体空間内にあっても描画点当たりの処理は終了する。
【発明の効果】
【014】
本発明により、透明物体上に透過して映る多次屈折映像を高速に描画でき、実時間コンピュータグラフィックス映像において現実感を高めることができる。
【発明を実施するための最良の形態】
【015】
本発明の手段は組み込みソフトウエアあるいは回路としてグラフィックスLSIに実装するか、IP(Intelligent Property)としての形態で実施される。
【実施例】
【016】
以下、本発明の実施例を説明する。図1には本発明に係わる透明物体を囲む空間を格子状に分割したもので、透明物体12を囲む空間11を表す。透明物体上の描画点Pでの輝度を決定するに当たり視点10の視線ベクトルVと描画点の面法線Npとから物体点Pでの屈折(1次屈折)を求め屈折ベクトルTの経路13を得る。物体空間11は予め任意のサイズに空間分割してリスト化し、物体面12が交差する分割空間をCのフラグを付け、物体の完全に外にある空間をA、物体の完全内部をBとする。分割空間の番号をxおよびy軸上においたアドレス(x、y)で表現すると図1の例においては、P点は(1,4)にあり(2,4)、(3,4)、(4,3)を通り(5,3)の点Qにおいて物体面と交差する。実際の物体は立体の3次元であり分割空間のアドレスはz軸を含めた3軸となるが便宜上以下2次元で説明する。
【017】
屈折ベクトルTの経路13は(1,4)(4,3)および(5,3)において分割空間のフラグCを通過する。この分割空間では物体面があることを示したフラグとなるため、リストに登録された物体面のポリゴンとそれぞれ交差計算を行う。この交差計算は点Pと屈折ベクトルとから直線を導出し、この直線と登録されたポリゴン平面との一般的に知られた交差テストを行うものである。交差計算によって、交点Qが求まれば、点Qでの屈折計算(2次屈折)を行い、物体外部に出る出力視線ベクトル14を求める。このベクトル14は(5,3)と(6,3)を通過するが、アドレス(6,3)は物体空間Cの外郭空間であり、このアドレスに交差面がなければ出力視線ベクトル14は物体外部に出たことになり、物体との屈折交差計算は終了する。この後は透明物体を含む環境マッピングによって出力視線ベクトル14が交差する環境キューブ面の輝度を求め、これに表面属性効果を付加して点Pの輝度とすることで、屈折による映像が表現できる。
【018】
図2は本発明に係わる屈折ベクトルの通過する分割空間を決定する関係を示す。物体空間には屈折ベクトルの通過域とは無関係な分割空間が多数存在する。交差テストでは関係する分割空間のみを高速に検出し、記憶されたフラグをテストすることが必要である。本発明では屈折ベクトルTと視点の物体入射点P0から直線20を導出する。直線式はx、y、z軸の内、長軸となる軸(直線の傾きが最も大きい軸)を分母とするそれぞれの軸に対する式となるが、分割空間の単位幅(x1−x0)を代入して直線を進行させる。図2の2次元座標で説明すると、直線20はx軸により傾いており、直線式はx軸を基軸としてyi=(Δy/Δx)(xi−x0)+y0で与えられる。ここでyiはxi点のyの値である。また(x0,y0)は始点P0点の座標値である。Xiの歩進値は分割空間の単位長となる。図2においてx1の時y軸はC0で交差しx2ではC1と交差さらにx3ではC2と交差する。C0とx1が共有する分割空間はその左右であり、以下同様にC1およびC2もそれぞれの交差点を共有する分割空間(図2の影部)は、それぞれ直線20が通過する領域となる。直線がy軸を一つ歩進しない限り、一つ前の領域と次の領域のフラグテストはダブルことになるため、共有領域が代入毎に2つであっても、テストは新たな領域の1回となる。このように長軸座標値を代入して得る座標点を共有する領域は容易に検出できる。この対象領域のフラグをテストし、物体面の有無のフラグを検出するまで直線を更新する。この更新は物体空間の外郭空間となった時点で終了する。
【019】
図3は本発明に関する多次屈折の関係図を示す。始点30からの入力視線ベクトルVが物体31面上のP0点(現在の描画点)に入り、P0点の面法線N0と透過率とフレネル式を用いて物体内部の屈折ベクトルT0を求める。前記分割空間における交差テストプロセスを経て交点Q0を求めその点の面法線N1と透過率から、物体を抜け出た出力視線ベクトルT1を求める。さらに前記同様に次の交点を求め点P1を検出すると、その点での面法線N2と透過率から再び物体内部の屈折ベクトルT2を求める。以下同様にQ1と面法線N3を経て出力視線ベクトルT3を得る。さらに分割空間テストを行うが物体外郭32に到達するため、この時点で交差テストと計算は終了する。ベクトルT3と最後の点Q1から、物体31をさらに取り囲む環境キューブに対し(図には記載していない)T3のキューブと交差する点の輝度を取得し、これを点P0の輝度とする。
【020】
それぞれの交点P0,P1がもつ属性値あるいは物体内部の半透明度や散乱特性等を考慮し、前記環境キューブから取得した輝度を減衰することができる。これはそれぞれの交点毎に属性情報を記憶し、環境キューブ輝度が得られた時点で、記憶された属性値を用いて所定の計算(例えばアルファーブレンディング等)を行うことで得られる。
【021】
図4は本発明の論理回路構成図を示す。描画点での視線ベクトルVおよび面法線Nが屈折計算回路40に加わる。ここでは予め与えられた屈折率を用いて屈折ベルトルTを求める。回路はフレネル屈折式で構成する。さらに直線式発生回路41において描画点座標値P(x、y、z)と前記Tおよび既知の物体空間の大きさによって直線式を求める。直線式では逐次長軸側の分割空間単位値を代入して歩進が始まる。回路41から出力される情報は直線が分割空間の格子軸と交差する座標値であり、この座標値を共有する分割空間の番号(アドレス)となる。このアドレスはボリューム境界および分割空間交差テスト回路42に加わり、分割空間状態バッファ43をアクセスし、フラグを読み出す。読みだされたフラグは回路42において分割空間が完全内部、外部あるいは物体面交差であるかどうかをテストする。完全内部あるいは外部では回路41を歩進させ、一方、面交差空間である場合は、その分割空間に対応して前記[007]記載のそれぞれのポリゴン情報が記憶された面交差ポリゴンバッファ44をアクセスし、所定のポリゴン情報を読み出す。ポリゴン情報は通常3角形であり、ポリゴンを構成する3頂点の座標値、面法線等で構成されている。読みだされたこれらポリゴン情報は回路41がもつ直線式と交差計算回路45で交差点座標値を求める。交差しないポリゴンの場合は回路45から42にポリゴンの読み出しを歩進させる。交点が求まると、交点での座標値、面法線が経路Aを経て屈折計算回路40に与えられ、物体から抜け出たベクトルを求めることと、すでに最初の屈折ベクトルは回路40にあるため、これらを用いて再度前記同様の次の交点のテストと交点計算を繰り返す。回路41で直線の歩進が物体空間の外郭空間に達した時、交差テストは終了する。
これらの一連の処理を高速化するためには回路40から回路45を1組として屈折次数分のパイプライン構造とすることも可能となる。
【022】
【産業上の利用可能性】
【023】
本発明の回路はIP(Intelligent property)として提供したり、グラフィックスプロセッサLSIに実装されることで、リアリティーのあるCG映像製作やアムーズメントシステムに利用される。
【図面の簡単な説明】
【024】
【図1】「本発明に係わる物体空間と屈折ベクトルおよび分割空間の関係を示す。」
【図2】「本発明に係わる視線あるいは屈折ベクトルの通過分割空間の関係を示す。」
【図3】「本発明に係わる多次屈折状態を示す。」
【図4】「本発明に係わる透明物体表示回路を示す。」
【符号の説明】
図1
10 視点
11 物体空間
12 透明物体
13 屈折ベクトル
14 物体外部屈折ベクトル
図2
20 屈折ベクトル直線
21 分割空間格子
図3
30 視点
31 透明物体
32 物体空間
図4
40 屈折計算回路
41 直線式発生回路
42 ボリューム境界および分割空間交差テスト回路
43 分割空間状態バッファ
44 面交差ポリゴンバッファ
45 交差計算回路

【特許請求の範囲】
【請求項1】
コンピュータグラフィックスによる透明物体の描画回路に関し、描画点の輝度を決定する手段として、透明物体を囲う環境マッピングのための環境キューブと物体空間をそれぞれ設け、この物体空間を任意の大きさに空間分割して、分割した空間を前記透明物体の面が交差する空間、完全物体外部空間、および完全物体内部空間のそれぞれ3つの空間に分類し、分割した前記空間の座標値に対応するアドレスをもつバッファを設け、このバッファには前記3つの空間を識別するフラグを記憶する手段と、さらに前記物体面が交差する分割空間では、その空間に含まれる物体面を構成するポリゴン情報を記憶するバッファを設けるそれぞれの手段をもって、前記透明物体の描画開始の前処理とすると共に、描画点におけるポリゴンの面法線、入力視線ベクトルおよび屈折率とから前記透明物体内を通過する屈折ベクトルと、描画点を始点とする直線式を求め、この直線と交差する前記分割空間に関して前記バッファに記憶したフラグを読み出し前記分割空間の状態をテストし、前記ポリゴン面を含む分割空間である場合、前記記憶したポリゴンをバッファから逐次読み出して前記直線式との交点計算を行い、交差点の無い場合はさらに直線を歩進し、一方、交差点がある場合は、ポリゴン情報から交差した点の面法線を求め、この面法線と前記屈折ベクトルから、再び前記物体から前記屈折ベクトルが抜け出る出力視線ベクトルを求める手段と、この出力視線ベクトルが前記環境キューブの面と交差する点を求め、前記環境キューブ面上にある輝度を前記描画点の輝度とするそれぞれの手段からなる透明物体表示回路。
【請求項2】
請求項1の回路において、描画点を始点とする直線式が通過する分割空間を選択する手段として、前記直線式の傾きが最も大きな座標軸(以下長軸という)を基軸としてそれぞれの座標についての直線式を求め、前記分割空間の単位長を代入して歩進し、得られた座標点を含む分割空間に対応する前記バッファに記憶されたフラグを読み出してテストし、完全物体内部及び外部の場合は前記直線式を歩進する一方、物体面と交差するフラグのある場合は、前記バッファからポリゴン情報を読み出して前記直線式と前記面ポリゴンとの交点計算を行う手段と、前記ポリゴン情報には、頂点座標値、頂点面法線、頂点テキスチャー座標値、透過率および減衰率を含む手段と、読み出した前記頂点座標値と、交点計算により得られた前記交点座標値から、前記交差点でのそれぞれのポリゴン情報を求め、前記環境キューブ面で得た輝度に対して、前記ポリゴン情報を用いて、前記描画点の最終輝度を決定する手段をそれぞれ併せ持つ透明物体表示回路。
【請求項3】
請求項1および2の回路において、描画点を含むそれぞれの交差点の屈折率を用いた屈折計算において、入射視線、屈折および出力視線ベクトルが全反射する場合は、その反射ベクトルを求め、全反射点を始点とする直線式を求めた後、請求項1および2と同様な手段で、その直線式が通過する分割空間のフラグをテストし、前記物体面が交差する分割空間である場合は交差点を求め、再びその点からの屈折あるいは反射ベクトルを求める前記処理を所定の回数まで繰り返す手段と、前記屈折あるいは出力視線ベクトルによる直線が物体空間の外郭分割空間に到達した時点で分割空間との交差処理を終了し、前記環境キューブ面との交差計算に移る手段を有する透明物体表示回路。
【請求項4】
請求項1から3までに記載の透明物体表示回路を用いたコンピュータグラフィック画像装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2011−138445(P2011−138445A)
【公開日】平成23年7月14日(2011.7.14)
【国際特許分類】
【出願番号】特願2009−299608(P2009−299608)
【出願日】平成21年12月29日(2009.12.29)
【出願人】(505050935)有限会社カーディックコーポレイション (18)
【Fターム(参考)】