(57)【要約】      （修正有）【課題】コンピュータグラフィックス描画技術に関し、ガラス等様態の透明物体に映し出される屈折を伴う映像の描画手段と、その手段の論理回路実装を提供する。【解決手段】透明物体を囲む環境キューブと、物体空間を設け、物体空間はさらに細かな空間に分割する。透明物体の描画点での視線ベクトルＶおよび面法線Ｎから屈折計算回路４０で屈折ベルトルＴを求め直線式発生回路４１では直線式を求め、この直線と分割空間との交差テストを回路４１と回路４２で行い、面交差空間である場合は、所定のポリゴンデータを読み出す。ポリゴンデータは回路４１と交差計算回路４５で交差点座標値を求める。交点での座標値、面法線が屈折計算回路４０に与えられ、物体から抜け出たベクトルを求めることと、次の交点のテストと交点計算を繰り返す。次に回路４１で物体空間の外郭に到達したベクトルを用いて環境キューブとの交点を求めこの輝度を最初の描画点の輝度とする。【選択図】図４
2011138445.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータグラフィックスによる透明物体の描画回路に関し、描画点の輝度を決定する手段として、透明物体を囲う環境マッピングのための環境キューブと物体空間をそれぞれ設け、この物体空間を任意の大きさに空間分割して、分割した空間を前記透明物体の面が交差する空間、完全物体外部空間、および完全物体内部空間のそれぞれ３つの空間に分類し、分割した前記空間の座標値に対応するアドレスをもつバッファを設け、このバッファには前記３つの空間を識別するフラグを記憶する手段と、さらに前記物体面が交差する分割空間では、その空間に含まれる物体面を構成するポリゴン情報を記憶するバッファを設けるそれぞれの手段をもって、前記透明物体の描画開始の前処理とすると共に、描画点におけるポリゴンの面法線、入力視線ベクトルおよび屈折率とから前記透明物体内を通過する屈折ベクトルと、描画点を始点とする直線式を求め、この直線と交差する前記分割空間に関して前記バッファに記憶したフラグを読み出し前記分割空間の状態をテストし、前記ポリゴン面を含む分割空間である場合、前記記憶したポリゴンをバッファから逐次読み出して前記直線式との交点計算を行い、交差点の無い場合はさらに直線を歩進し、一方、交差点がある場合は、ポリゴン情報から交差した点の面法線を求め、この面法線と前記屈折ベクトルから、再び前記物体から前記屈折ベクトルが抜け出る出力視線ベクトルを求める手段と、この出力視線ベクトルが前記環境キューブの面と交差する点を求め、前記環境キューブ面上にある輝度を前記描画点の輝度とするそれぞれの手段からなる透明物体表示回路。
【請求項２】
請求項１の回路において、描画点を始点とする直線式が通過する分割空間を選択する手段として、前記直線式の傾きが最も大きな座標軸（以下長軸という）を基軸としてそれぞれの座標についての直線式を求め、前記分割空間の単位長を代入して歩進し、得られた座標点を含む分割空間に対応する前記バッファに記憶されたフラグを読み出してテストし、完全物体内部及び外部の場合は前記直線式を歩進する一方、物体面と交差するフラグのある場合は、前記バッファからポリゴン情報を読み出して前記直線式と前記面ポリゴンとの交点計算を行う手段と、前記ポリゴン情報には、頂点座標値、頂点面法線、頂点テキスチャー座標値、透過率および減衰率を含む手段と、読み出した前記頂点座標値と、交点計算により得られた前記交点座標値から、前記交差点でのそれぞれのポリゴン情報を求め、前記環境キューブ面で得た輝度に対して、前記ポリゴン情報を用いて、前記描画点の最終輝度を決定する手段をそれぞれ併せ持つ透明物体表示回路。
【請求項３】
請求項１および２の回路において、描画点を含むそれぞれの交差点の屈折率を用いた屈折計算において、入射視線、屈折および出力視線ベクトルが全反射する場合は、その反射ベクトルを求め、全反射点を始点とする直線式を求めた後、請求項１および２と同様な手段で、その直線式が通過する分割空間のフラグをテストし、前記物体面が交差する分割空間である場合は交差点を求め、再びその点からの屈折あるいは反射ベクトルを求める前記処理を所定の回数まで繰り返す手段と、前記屈折あるいは出力視線ベクトルによる直線が物体空間の外郭分割空間に到達した時点で分割空間との交差処理を終了し、前記環境キューブ面との交差計算に移る手段を有する透明物体表示回路。
【請求項４】
請求項１から３までに記載の透明物体表示回路を用いたコンピュータグラフィック画像装置。
【発明の詳細な説明】
【技術分野】
【００１】  この発明は  コンピュータグラフィックスにおいて、ガラス等の透明物体に映し出される屈折を伴う映像の描画手段と、その手段の論理回路実装の技術分野に関する。
【背景技術】
【００２】  コンピュータグラフィックスにおいて透明物体上に映し出される映像表現は、描画点での視線ベクトルが物体に入射屈折し、さらにその物体から抜け出た視線ベクトルがその先にある映像と交差する点の輝度（映像）を求め、これを物体上（描画点）の輝度とすることで表現できる。従来描画点における輝度を決定する手段としてレイトレーシング法が比較的正確に映像を表現できる点で高細密な映像表現に用いられてきたが、この手法はコンピュータ負荷が重く実時間処理には適していない。実時間性を重視するポリゴンレンダリング法においては、描画点での物体の法線と、視線ベクトルおよび物体の屈折率から物体内部を通過する屈折ベクトルを求め、このベクトルがその延長線上にある物体外部の映像と交差する点の輝度を求め、これを描画点の輝度とする最初の物体上の１次屈折のみを考慮した方法が提案されている。屈折ベクトルが最後に交わる交点は、予め６面の環境キューブを設け、キューブ中心を投影中心とした６面に投影される映像を記憶し、キューブ面との交点計算で得ている。この方法は透明物体から屈折ベクトルが抜け出す際の２次屈折を考慮していないため実態とは大きく異なる映像となる。一方、屈折ベクトルの１次屈折で得られるキューブ面上の交差位置と、描画点座標値を延長したキューブ面の交点それぞれの位置から、そのおよそ中間となる位置を屈折ベクトルの新たな交点として、一次屈折のもつ誤差を少なくする手法も提案されている。しかしいずれの方法であっても、物体内部の屈折ベクトルが再び物体から抜け出す正しい位置とその際の２次屈折作用を考慮しない限り、より現実的な映像表現を得ることはできない。
本発明では、屈折ベクトルが物体から抜け出る２次屈折点の位置を正確に求め、その点における屈折を計算し、さらに複雑な形状をもつ物体で生じる多次の屈折も可能な実時間に適した描画手段とそのアルゴリズムの実装回路を提案するものである。
【発明の開示】
【発明が解決しようとする課題】
【００３】  本発明は、透明物体の多次屈折を考慮した描画を実時間で実行するアルゴリズムとそのハードウエア実装を課題としている。
【課題を解決するための手段】
【００４】  ポリゴンデータで定義された透明物体の描画においては、描画点情報として視線ベクトルと面法線がポリゴン頂点データから補間され求められる。また透明物体の透過率も前もって定義されていることから物体内部における視線ベクトル（以下屈折ベクトルという）を求めることができる。屈折ベクトルが物体のどの位置と交差し、再び物体から抜け出るかが最も計算負荷が重く、これまでの技術では実時間処理では得られていない。本発明では、透明物体の描画について、前処理と描画処理の２つに分ける。前処理は物体の変形が無い限り再計算は発生しないため、描画速度には影響を与えない。これを前提に本発明では物体を取り囲む直方体の空間（以下物体空間という）を定義し、この物体空間を任意の大きさで空間分割する。分割されたそれぞれの物体空間（以下分割空間という）には物体面が交差する分割空間、物体の完全内部および物体の完全外部となる３つの状態をもつ分割空間がそれぞれ含まれる。分割空間の座標値に対応したアドレスをもつバッファをそれぞれ設けて、分割空間情報を記憶する。すなわちｘ、ｙ、ｚ座標に対しｍｘｎｘｐの分割（それぞれ任意の値）であれば、ｍ、ｎ、ｐを単純にビットフィールドに配列したアドレス構造でもよい。よってその分割数分のアドレス数とアドレス当たり所定の大きさのワード数からなるバッファとなる。本発明では、前記３つの状態の分割空間を、例えば外部ではＡ、内部ではＢ、また物体面を含む空間をＣのフラグ情報として、前記の対応するアドレスのバッファ内に記憶する。【００５】  一方、物体面を含む分割空間には、その空間に含まれるポリゴン情報を記憶する。これは対応するアドレスのバッファに、ポリゴン情報を記憶した別のバッファのアドレスにリンクするためのアドレスを記憶しておき、Ａ，Ｂならば無視、Ｃのフラグがあれば、さらにリンクアドレスを読み出して、その先にあるポリゴン情報を読み出す方法である。一つの分割空間には複数のポリゴンが記憶されることや、同じポリゴンが複数の分割空間を跨ぐ場合には複数の分割空間に同一ポリゴンが記憶されることもある。分割空間当たりのポリゴン数は分割サイズに依存し、空間分割が前処理で行われることから最適化を図ることができる。【００６】  描画実行中において描画点（１次屈折点）の屈折ベクトルを求め、本発明では描画点座標値と屈折ベクトルから直線式を立て、その直線と交差する分割空間のみを検索する。直線の歩進は、３次元座標系の内、直線が長軸（直線の傾きの最も大きな軸）となる座標軸を基軸に、分割空間の辺長を単位として３軸それぞれの直線式に代入して得た点を含む分割空間のみをテストすれば良い。このテストとは前記［００４］のＡ，Ｂ，Ｃのフラグをバッファから読み出して調べることであり、Ａ、Ｂであればスキップしさらに歩進を進め、フラグＣを検出することである。フラグＣが検出されれば、所定のリンクアドレスからポリゴン情報を読み出し、直線式とポリゴン面との交差計算を行う。直線と面との交点計算は既知の数式的処理で可能である。【００７】  本発明ではポリゴン情報として３角形の頂点データと共に頂点における属性情報も定義する。それらは面法線、屈折率、透過率、減衰率、テキスチャーア���レスとなる。３角形面が多面体の一部である場合、それぞれの頂点における面法線は異なるため、交差点における面法線は、屈折ベクトルとポリゴン面との交差点座標値からそれぞれのポリゴン頂点に定義された３つの法線による３点補間法を用いる。これは透明物体の表面加工により透過率や減衰率が異なり、ポリゴン頂点にそれぞれ異なる前記の透過率や減衰率が定義されている場合も同様な補間法で対応できる。一方これらが頂点属性ではなくマップ方式で定義されている場合には交点のテキスチャー座標からそれらを求める方法もある。また３点補間法は直線と面との交差計算と同様に四則演算で求められるため補間処理の回路化により高速処理が可能である。【００８】  屈折ベクトルの交差点（２次屈折点）での座標値と面法線および屈折率とから、透明物体から抜け出る屈折ベクトル（以下出力視線ベクトルという）が求まる。この出力点と出力視線ベクトルを用いて、透明物体をさらに囲む環境キューブ面との交点を求め、この面の輝度を描画点（１次屈折点）の輝度とする。所定の点から環境キューブ面との交差計算方式は、（反射ベクトル）位置依存型の環境キューブ描画技術で既知の方式であり、本発明の新規範囲には含まれないので詳細は省略する。【００９】  屈折計算において屈折率と入力視線ベクトルあるいは屈折ベクトルと法線との関係から全反射が生じることがある。物体外部面での全反射であれば、視線ベクトルと面法線から反射ベクトルを求め、全反射点を新たな始点とし［００６］と同様な手段で引き続き分割空間をテストし次の交点を求める。分割空間が物体空間の外郭分割空間となった場合は、反射ベクトルの延長線上にある環境キューブ面との交差する点を求めることとなる。内部での全反射の場合も同様に［００６］の手段で引き続き分割空間をテストし、次の交点を求める。内部において全反射が繰り返されるループとなり、環境キューブへ到達しない場合も考えられる。この場合は屈折次数の上限を定め、それを超える場合は打ち切り、予め定義した輝度に設定することが必要となる。【０１０】  直線と分割空間を［００６］においてテストする際、２次元では直線式に代入して得た座標値あたり２つ、３次元では４つの分割空間が直線とポリゴン面とのテスト空間となる。Ｃの分割空間が検出されれば、前記［００７］［００８］と同様な手段で交点（２次屈折点）を求める。もし交点が無ければ、さらに交点が検出されるまで直線式を進める。凹面をもつ物体では最初に交点が検出された場合は［００８］に提案した環境キューブとの交点を直ちに求めることはできない。この場合、それぞれの屈折点毎に直線式を求めて、直線が物体空間の外面に到着するまで続ける必要がある。【０１１】  本発明では凹面形状においては、描画点（１次屈折点）での情報を保存すると同時に２次屈折点での出力視線ベクトルを求め、２次屈折点を起点として再び［００６］の処理に入る。これを透明物体の物体空間の外面に到達するまで実行する。この結果、例えば最後のｎ次屈折点とそのｎ次出力視線ベクトルとなった場合は、それらを用いて前記環境キューブとの交点計算に入る。前記保存された情報は最終的な輝度の決定に用いられる。【０１２】  屈折計算において、物体内を通過する屈折ベクトル、あるいは出力視線ベクトルが次の表面と交差し再び物体内を透過してゆく際、一部に不透明物質が混じる場合、あるいは物体表面が塗装されている場合もある。これらを表現するには、すべての交点で入力視点ベクトルから始まったベクトルのそれぞれが、交点毎に屈折か反射ベクトル（反射にも鏡面性および鏡面性を持たないものがある）のいずれになるかをテストし、決定されたベクトルの方向で次の交点をテストする必要がある。【０１３】  本発明では［００７］の属性がポリゴン情報として定義される。ここで減衰率は物体内の屈折ベクトルの通過長（１次屈折から交点までの距離）により環境キューブから得られる輝度を減衰する輝度減衰スケール値となる。また透過率は透過率が高ければ透明感が強いもの、透明率が低い場合は不透明となりテキスチャー座標値から交点におけるテキスチャー輝度を求める。
この場合、屈折ベクトルは不透明面に交差したことになりそれ以上の屈折・反射処理は打ち切りとなる。よってテキスチャーの色が１次屈折点（描画点）の色となり、屈折ベクトルは物体空間内にあっても描画点当たりの処理は終了する。
【発明の効果】
【０１４】  本発明により、透明物体上に透過して映る多次屈折映像を高速に描画でき、実時間コンピュータグラフィックス映像において現実感を高めることができる。
【発明を実施するための最良の形態】
【０１５】  本発明の手段は組み込みソフトウエアあるいは回路としてグラフィックスＬＳＩに実装するか、ＩＰ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｐｒｏｐｅｒｔｙ）としての形態で実施される。
【実施例】
【０１６】  以下、本発明の実施例を説明する。図１には本発明に係わる透明物体を囲む空間を格子状に分割したもので、透明物体１２を囲む空間１１を表す。透明物体上の描画点Ｐでの輝度を決定するに当たり視点１０の視線ベクトルＶと描画点の面法線Ｎｐとから物体点Ｐでの屈折（１次屈折）を求め屈折ベクトルＴの経路１３を得る。物体空間１１は予め任意のサイズに空間分割してリスト化し、物体面１２が交差する分割空間をＣのフラグを付け、物体の完全に外にある空間をＡ、物体の完全内部をＢとする。分割空間の番号をｘおよびｙ軸上においたアドレス（ｘ、ｙ）で表現すると図１の例においては、Ｐ点は（１，４）にあり（２，４）、（３，４）、（４，３）を通り（５，３）の点Ｑにおいて物体面と交差する。実際の物体は立体の３次元であり分割空間のアドレスはｚ軸を含めた３軸となるが便宜上以下２次元で説明する。【０１７】  屈折ベクトルＴの経路１３は（１，４）（４，３）および（５，３）において分割空間のフラグＣを通過する。この分割空間では物体面があることを示したフラグとなるため、リストに登録された物体面のポリゴンとそれぞれ交差計算を行う。この交差計算は点Ｐと屈折ベクトルとから直線を導出し、この直線と登録されたポリゴン平面との一般的に知られた交差テストを行うものである。交差計算によって、交点Ｑが求まれば、点Ｑでの屈折計算（２次屈折）を行い、物体外部に出る出力視線ベクトル１４を求める。このベクトル１４は（５，３）と（６，３）を通過するが、アドレス（６，３）は物体空間Ｃの外郭空間であり、このアドレスに交差面がなければ出力視線ベクトル１４は物体外部に出たことになり、物体との屈折交差計算は終了する。この後は透明物体を含む環境マッピングによって出力視線ベクトル１４が交差する環境キューブ面の輝度を求め、これに表面属性効果を付加して点Ｐの輝度とすることで、屈折による映像が表現できる。【０１８】  図２は本発明に係わる屈折ベクトルの通過する分割空間を決定する関係を示す。物体空間には屈折ベクトルの通過域とは無関係な分割空間が多数存在する。交差テストでは関係する分割空間のみを高速に検出し、記憶されたフラグをテストすることが必要である。本発明では屈折ベクトルＴと視点の物体入射点Ｐ０から直線２０を導出する。直線式はｘ、ｙ、ｚ軸の内、長軸となる軸（直線の傾きが最も大きい軸）を分母とするそれぞれの軸に対する式となるが、分割空間の単位幅（ｘ１−ｘ０）を代入して直線を進行させる。図２の２次元座標で説明すると、直線２０はｘ軸により傾いており、直線式はｘ軸を基軸としてｙｉ＝（Δｙ／Δｘ）（ｘｉ−ｘ０）＋ｙ０で与えられる。ここでｙｉはｘｉ点のｙの値である。また（ｘ０，ｙ０）は始点Ｐ０点の座標値である。Ｘｉの歩進値は分割空間の単位長となる。図２においてｘ１の時ｙ軸はＣ０で交差しｘ２ではＣ１と交差さらにｘ３ではＣ２と交差する。Ｃ０とｘ１が共有する分割空間はその左右であり、以下同様にＣ１およびＣ２もそれぞれの交差点を共有する分割空間（図２の影部）は、それぞれ直線２０が通過する領域となる。直線がｙ軸を一つ歩進しない限り、一つ前の領域と次の領域のフラグテストはダブルことになるため、共有領域が代入毎��２つであっても、テストは新たな領域の１回となる。このように長軸座標値を代入して得る座標点を共有する領域は容易に検出できる。この対象領域のフラグをテストし、物体面の有無のフラグを検出するまで直線を更新する。この更新は物体空間の外郭空間となった時点で終了する。【０１９】  図３は本発明に関する多次屈折の関係図を示す。始点３０からの入力視線ベクトルＶが物体３１面上のＰ０点（現在の描画点）に入り、Ｐ０点の面法線Ｎ０と透過率とフレネル式を用いて物体内部の屈折ベクトルＴ０を求める。前記分割空間における交差テストプロセスを経て交点Ｑ０を求めその点の面法線Ｎ１と透過率から、物体を抜け出た出力視線ベクトルＴ１を求める。さらに前記同様に次の交点を求め点Ｐ１を検出すると、その点での面法線Ｎ２と透過率から再び物体内部の屈折ベクトルＴ２を求める。以下同様にＱ１と面法線Ｎ３を経て出力視線ベクトルＴ３を得る。さらに分割空間テストを行うが物体外郭３２に到達するため、この時点で交差テストと計算は終了する。ベクトルＴ３と最後の点Ｑ１から、物体３１をさらに取り囲む環境キューブに対し（図には記載していない）Ｔ３のキューブと交差する点の輝度を取得し、これを点Ｐ０の輝度とする。【０２０】  それぞれの交点Ｐ０，Ｐ１がもつ属性値あるいは物体内部の半透明度や散乱特性等を考慮し、前記環境キューブから取得した輝度を減衰することができる。これはそれぞれの交点毎に属性情報を記憶し、環境キューブ輝度が得られた時点で、記憶された属性値を用いて所定の計算（例えばアルファーブレンディング等）を行うことで得られる。【０２１】  図４は本発明の論理回路構成図を示す。描画点での視線ベクトルＶおよび面法線Ｎが屈折計算回路４０に加わる。ここでは予め与えられた屈折率を用いて屈折ベルトルＴを求める。回路はフレネル屈折式で構成する。さらに直線式発生回路４１において描画点座標値Ｐ（ｘ、ｙ、ｚ）と前記Ｔおよび既知の物体空間の大きさによって直線式を求める。直線式では逐次長軸側の分割空間単位値を代入して歩進が始まる。回路４１から出力される情報は直線が分割空間の格子軸と交差する座標値であり、この座標値を共有する分割空間の番号（アドレス）となる。このアドレスはボリューム境界および分割空間交差テスト回路４２に加わり、分割空間状態バッファ４３をアクセスし、フラグを読み出す。読みだされたフラグは回路４２において分割空間が完全内部、外部あるいは物体面交差であるかどうかをテストする。完全内部あるいは外部では回路４１を歩進させ、一方、面交差空間である場合は、その分割空間に対応して前記［００７］記載のそれぞれのポリゴン情報が記憶された面交差ポリゴンバッファ４４をアクセスし、所定のポリゴン情報を読み出す。ポリゴン情報は通常３角形であり、ポリゴンを構成する３頂点の座標値、面法線等で構成されている。読みだされたこれらポリゴン情報は回路４１がもつ直線式と交差計算回路４５で交差点座標値を求める。交差しないポリゴンの場合は回路４５から４２にポリゴンの読み出しを歩進させる。交点が求まると、交点での座標値、面法線が経路Ａを経て屈折計算回路４０に与えられ、物体から抜け出たベクトルを求めることと、すでに最初の屈��ベクトルは回路４０にあるため、これらを用いて再度前記同様の次の交点のテストと交点計算を繰り返す。回路４１で直線の歩進が物体空間の外郭空間に達した時、交差テストは終了する。
これらの一連の処理を高速化するためには回路４０から回路４５を１組として屈折次数分のパイプライン構造とすることも可能となる。【０２２】
【産業上の利用可能性】
【０２３】  本発明の回路はＩＰ（Ｉｎｔｅｌｌｉｇｅｎｔ  ｐｒｏｐｅｒｔｙ）として提供したり、グラフィックスプロセッサＬＳＩに実装されることで、リアリティーのあるＣＧ映像製作やアムーズメントシステムに利用される。
【図面の簡単な説明】
【０２４】
【図１】「本発明に係わる物体空間と屈折ベクトルおよび分割空間の関係を示す。」
【図２】「本発明に係わる視線あるいは屈折ベクトルの通過分割空間の関係を示す。」
【図３】「本発明に係わる多次屈折状態を示す。」
【図４】「本発明に係わる透明物体表示回路を示す。」
【符号の説明】  図１
１０  視点
１１  物体空間
１２  透明物体
１３  屈折ベクトル
１４  物体外部屈折ベクトル
図２
２０  屈折ベクトル直線
２１  分割空間格子
図３
３０  視点
３１  透明物体
３２  物体空間
図４
４０  屈折計算回路
４１  直線式発生回路
４２  ボリューム境界および分割空間交差テスト回路
４３  分割空間状態バッファ
４４  面交差ポリゴンバッファ
４５  交差計算回路
【図１】
2011138445.tif 000003
【図２】
2011138445.tif 000004
【図３】
2011138445.tif 000005
【図４】
2011138445.tif 000006