(57)【要約】【課題】  レイトレース処理を行う場合、光線と曲面の交点がトリム線の領域内にあるか否かを判定するトリム内外判定が必要だが、探索線と自由曲線の交点を求めるために、ニュートン法などによる数値計算を行えば多大な時間を要し、物体の形状を高速に描画しようとする際の妨げになる。【解決手段】  トリム線データを含むCADデータを入力し、トリム線データを基に判定用の補助データを作成し(S320)、補助データを使用して、面と光線の交点がトリム線の領域の内か外かを判定する(S380)。【選択図】  図16
2005227992.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置を用いて、レイトレース処理におけるトリム内外判定を行う判定方法であって、
トリム線データを含むCADデータを入力する入力ステップと、
前記トリム線データを基に判定用の補助データを作成する作成ステップと、
前記補助データを使用して、面と光線の交点がトリム線の領域の内か外かを判定する判定ステップとを有することを特徴とする判定方法。
【請求項２】
前記補助データは、前記トリム線を囲む外接矩形のデータ、前記外接矩形を所定方向にN（整数）等分した矩形領域であるトリビアルインアウトボックスのデータ、および、前記トリム線のセグメントを包含する矩形であるバウンディングボックスのデータを含むことを特徴とする請求項1に記載された判定方法。
【請求項３】
前記判定ステップは、前記外接矩形のデータを用いて前記判定を行う第一の判定ステップ、前記第一の判定ステップで判定できない前記交点について、前記トリビアルインアウトボックスのデータを用いて前記判定を行う第二の判定ステップ、並びに、前記第二の判定ステップで判定できない前記交点について、前記バウンディングボックスのデータを用いて前記判定を行う第三のステップを有することを特徴とする請求項2に記載された判定方法。
【請求項４】
さらに、前記補助データをメモリに保存する保存ステップを有し、前記判定ステップは、前記メモリに保存された補助データを使用して、繰り返して実行可能であることを特徴とする請求項1から請求項3の何れかに記載された判定方法。
【請求項５】
トリム線データを含むCADデータを入力する入力手段と、
前記トリム線データを基に判定用の補助データを作成する作成手段と、
前記補助データを使用して、面と光線の交点がトリム線の領域の内か外かを判定する判定手段とを有することを特徴とするトリム内外判定装置。
【請求項６】
情報処理装置を制御して、請求項1から請求項4の何れかに記載されたトリム内外判定を実行することを特徴とするプログラム。
【請求項７】
請求項6に記載されたプログラムが記録されたことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はトリム内外判定装置およびその方法に関し、例えば、凹凸や滑らかな自由曲面を多用する複雑な形状を有する物体、例えば自動車や二輪車の車体、曲面を多用する家具、家電製品、携帯電話などの意匠形状をレイトレース処理する場合のトリム内外判定に関する。
【背景技術】
【０００２】
自動車産業においては、自動車の設計情報をCAD (Computer Aided Design)データとして保持しているが、CADデータがデザイナの意図したとおりの形状となっているか否かを確認するために、CADデータを基にしてコンピュータグラフィックスを描画することが行われる。その際、高精度の描画を行うにはレイトレースと呼ばれる手法が適している。この手法を用いることで、写真に遜色のない画像をコンピュータ上で作成することができるため、例えば、実車が作成される前に、自動車広告のためのカタログやコマーシャルフィルム制作を行ったりすることも可能である。一般に、レイトレースによる画像制作は、カメラ位置やライト位置などの描画条件を変えるごとに何度も行われる。
【０００３】
また、自動車の車体のような、複雑な形状を有する物体の意匠形状を表すコンピュータグラフィックスは、高品質の曲面を扱う必要があるため、スプライン曲面の技術が使用される（例えば、特許文献1参照）。
【０００４】
また、自動車の車体モデルのような複雑な形状は、複数の曲面の集合で表現される。一つの曲面は、それを表す基底面とその有効領域を指定するトリム線によって構成され、これをトリム面(Trimmed Surface)と呼ぶ。また、基底面上にトリム線と呼ぶ閉じたループを描くことで、その内側を面の有効領域として指定する（これをトリミングすると言う）。自動車の車体などを扱うCADシステムは、その形状情報を曲面およびその曲面上の有効領域を指定するトリム線を一組とする集合として保持する。曲面やトリム線のデータは、三次元空間(x, y, z)で表したり、これをパラメタ空間に投影したUV平面で表したりすることができ、両者は相互に変換可能である。なお、実際の車体モデルは、数万から数十万のトリム面で構成される。
【０００５】
上述したレイトレース処理は、物体に当たる光線（以降「レイ」と呼ぶ場合がある）を視点から辿り、物体の反射や屈折、陰影などを考慮して、地球上の場所、季節、時間により異なる、空から降り注ぐ光を積算する手法である。
【０００６】
レイトレース処理は、大きく分けて三つのブロックから成り立っている。以下に、各ブロックの処理概要を説明する。
(1) 光線と曲面の交点計算  …  光線と曲面の交点を数値計算で求める。
(2) トリム内外判定  …  曲面はトリム面であり、トリム線に囲まれた内部の曲面に当たる光線についてのみ後述する着色計算を行い、トリム線の外部に当たる光線については計算を行わない。このため光線と計算対象の曲面の交点がトリム線の領域内にあるか否かを判定する。
(3) 着色計算  …  太陽や空からの光、地面からの照り返し等によって照らされた物体の色を計算する。
【０００７】
レイトレース処理を行う際、トリム内外判定により、光線と曲面の交点（以降「交点R」という）がトリム線の領域内にあるか否かを判定する。トリム内外判定は、三次元空間で表した三次元トリム線とUV平面で表したUVトリム線のそれぞれに対して、様々な方法が提案されている（例えば、非特許文献1参照）。これらの方法は、何れも、探索線（後述する）と自由曲線の交点を求めるために、ニュートン法（例えば、非特許文献2参照）などによる数値計算に多大な時間を要し、物体の形状を高速に描画しようとする際の妨げになる。
【０００８】
【特許文献１】特開2002-108955号公報（第2-6頁、第9-16図）
【非特許文献１】Andrew S. Glassner、"An Introduction to Ray Tracing"、Academic Press、1989年8月
【非特許文献２】矢野健太郎監修、春日正文編、「科学新興社モノグラフ 24. 公式集改訂版」、科学新興社、1975年7月、pp.166-167
【非特許文献３】G. Farin著、木村文彦監修、山口泰監訳、"CAGDのための曲線・曲面理論 -実践的利用法-"、共立出版、1991年12月、p.27
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、上述の問題を個々にまたはまとめて解決するもので、トリム内外判定を高速に行うことを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１１】
本発明は、情報処理装置を用いて、レイトレース処理におけるトリム内外判定を行う判定方法であって、トリム線データを含むCADデータを入力し、前記トリム線データを基に判定用の補助データを作成し、前記補助データを使用して、面と光線の交点がトリム線の領域の内か外かを判定することを特徴とする。
【００１２】
本発明にかかるトリム内外判定装置は、トリム線データを含むCADデータを入力する入力手段と、前記トリム線データを基に判定用の補助データを作成する作成手段と、前記補助データを使用して、面と光線の交点がトリム線の領域の内か外かを判定する判定手段とを有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、繰り返し計算を行うニュートン法による交点計算の回数を減少させることで計算時間を短縮し、トリム内外判定を高速に行うことができる。
【発明を実施するための最良の形態】
【００１４】
本発明は、レイトレース処理における、上記の(2)トリム内外判定に関する。以下、本発明にかかる実施例のトリム内外判定を図面を参照して詳細に説明する。
【００１５】
［概要］
本発明は、予めCADシステムにて用意されているトリム線を利用してトリム内外判定を高速に行うが、その第一段階の処理として、UVトリム線データを基に、外接矩形データ、トリビアルインアウトボックス(Trivial In/Out Box)データ、バウンディングボックス(Bounding Box)データの三つの補助データを作成する。そして第二段階の処理として、この補助データを使用して次に示す方法でトリム内外判定を行うことで、ニュートン法による交点計算回数を減少させる。
【００１６】
ステップS1：UVトリム線を囲む外接矩形によるトリム内外判定を行う。ここで判定できないものについては以降のステップで処理する。
【００１７】
ステップS2：トリビアルインアウトボックスを使用したトリム内外判定を行う。つまり、外接矩形を、UVのどちらかの方向に向かってN（整数）等分して矩形領域（以降「スキャンライン」と呼ぶ）を生成する。さらに、スキャンライン内部をトリビアルイン(Trivial In)、トリビアルアウト(Trivial Out)、不定の三領域に区分する。トリビアルイン、トリビアルアウトの二つの領域については、このステップでトリム内外判定を行い、不定の領域についてだけは以降のステップで処理する。
【００１８】
ステップS3：UVトリム線のセグメントを包含する矩形であるバウンディングボックスを使用してトリム内外判定を行う。ここで判定できないものについて次のステップで処理する。
【００１９】
ステップS4：ニュートン法による交点計算を行い、交差回数の偶奇によりトリム内外判定を行う。
【００２０】
［トリム内外判定］
図1は三次元空間における曲面とトリム線の一例を示す図である。図1に示すように、曲面101上にあるトリム線112によって面の有効領域が定義される。コンピュータグラフィクスでレイトレース処理を行う場合、光線（レイ）103と曲面101が交わる点（交点R）を計算した後、その交点Rがトリム線112の領域内にあるか否かをトリム内外判定で判定する。
【００２１】
トリム線102はパラメトリック曲線の一つであるベジエ(Bezier)曲線であり、式(1)で表されるセグメントと呼ばれる部分曲線を複数接続して生成される（例えば、非特許文献3参照）。このセグメント上の点Qは式(1)で表すことができる。
Q(x, y, z) = Q(u) = Σi=0NBi,N(u)・Pi    …(1)
ここで、uはパラメタ
Nは曲線の次数
Pi(Px, Py, Pz) (i = 0-N)は曲線の制御点
Bi,Nはバーンシュタイン(Bernstein)の基底関数
【００２２】
バーンシュタインの基底関数は、次数をN、パラメタをuとすると、以下のように定義される。
Bi,N = NCi(1 - u)N-iui    …(2)
ここで、NCi = N!/{(N-i)!i!}
【００２３】
図1にはトリム線が四つのセグメントから構成されている例を示した。また、三次元空間の曲面上の曲線であるトリム線は、パラメタ空間であるUV平面に投影することが可能である。図2は三次元空間のトリム線112をUV平面に投影したUVトリム線102の様子を示す図である。
【００２４】
UV平面におけるトリム内外判定は、図3に示すように、光線103と曲面の交点位置R1やR2から探索線L1やL2を任意の方向に引き出し、探索線L1やL2とトリム線102との交差回数を数える。そして交差回数が奇数に対応する交点R2はトリム線102の内側に、交差回数が偶数（零回を含む）に対応する交点R1はトリム線102の外側にあると判定することができる。
【００２５】
［システム構成］
図4はトリム内外判定システムの構成例を示すブロック図である。
【００２６】
コンピュータネットワーク4を介して接続された端末5の操作により、トリム内外判定装置1の判定サーバ2は、CADシステム6が作成した、処理対象の曲面とトリム線のデータ（以下「CADデータ」と呼ぶ）を受け取り、ハードディスクなどの外部記憶装置3に格納し、外部記憶装置3からCADデータを読み込んで上述した第一段階の処理を行い、その処理結果を中間ファイルとして外部記憶装置3に格納する。その後、判定サーバ2は、上述した第二段階の処理として、外部記憶装置3から中間ファイルを読み込みトリム内外判定を行い、その判定結果を外部記憶装置3に格納するとともに、端末5などへ出力する。第二段階の処理は、観察方向などの条件の違いに応じて、端末5からの指示により、何度でも実行することができる。
【００２７】
なお、図4には、コンピュータネットワーク4を介して、トリム内外判定装置1、端末5およびCADシステム6が相互に接続されたサーバクライアントシステムを記載したが、これらを一つにまとめたスタンドアローンシステムや、トリム内外判定装置1とCADシステム6を直結したシステムにすることもできる。
【００２８】
［第一段階の処理］
次に、自由曲面のトリム内外判定の処理のための前処理である第一段階の処理を詳細に説明する。第一段階の処理は、外接矩形、バウンディングボックス、トリビアルインアウトボックスを作成する。なお、外接矩形は、UVトリム線全体を囲む矩形である。バウンディングボックスは、UVトリム線のセグメントを囲む矩形である。トリビアルインアウトボックスは、スキャンライン線（後述）とその近傍の近似点列で形成される矩形である。
【００２９】
図5は第一段階の処理を説明するフローチャートで、端末5の指示により、判定サーバ2が実行する処理である。
【００３０】
● CADデータの読み込み（S10）
CADシステム6により、三次元空間(x, y, z)上の制御点の集合である、処理対象の曲面とトリム線のデータがCADデータとして生成され、CADデータは外部記憶装置3に保存されている。判定サーバ2は、外部記憶装置3に保存されたCADデータ（曲面とトリム線のデータ）を読み込む。
【００３１】
● 三次元空間からUV平面への変換（S20）
読み込んだ三次元空間(x, y, z)の制御点のデータをUV平面のデータへ変換する。この処理により、三次元空間はUV平面に、三次元トリム線はUVトリム線（以降、単に「トリム線」という場合がある）に変換される。
【００３２】
● 近似点列の発生（S30）
トリム線102のセグメントごとに、次の三つの条件C1-C3を満たす近似点列（例えば、図6に示すPn、Pn+1）を発生する。
条件C1：近似点は必ずUVトリム線上にある。
条件C2：隣接する近似点間の線分上の中点と、UVトリム線上のパラメタ中点
との距離を、予め定めた公差（例えば1/1000）以下にする。
条件C3：近似点間の距離の最大値を制御点間の最小距離の1/2に設定する。
すなわち近似点間の距離は最小制御点間の距離の1/2以下になる。
【００３３】
● バウンディングボックスの計算（S40）
近似点列より、セグメントごとにセグメントを囲むバウンディングボックスを計算する（図6参照）。
【００３４】
● UVトリム線全体を囲む外接矩形の計算（S50）
近似点列より、トリム線102の全体を囲む外接矩形104を計算する（図7参照）。
【００３５】
● セグメントの分割（S60）
近似点列より、U方向、V方向それぞれの方向について、セグメントの極大点、極小点を調べ、すべてのセグメントに含まれる極大点、極小点の少ない方向（UまたはV）を求めた後、この方向で極大点、極小点を基にセグメントを分割する。この極大点、極小点の少ない方向を探索線の向きにする。
【００３６】
図8はセグメントの分割を説明する図である。図8(a)において、V方向に極大点が一個あり、U方向には極大点、極小点が無いため、図8(b)に示すように、このセグメントはU方向に分割される。つまり、探索線の向きはU方向になる。
【００３７】
また、トリム線を表すベジエ曲線の極大点、極小点における分割の詳細は次のとおりである。
【００３８】
極大点・極小点近傍の近似点を発見し、ニュートン法の初期値t0を求める。つまり、極大点・極小点では曲線の傾きの符号が変わるので次式を満たす。そこで、N個の近似点列P1からPNの全点について、この式を満たす点と、その個数を求め、その点をニュートン法の初期値として使用する。
(ui+1 - ui)×(ui - ui-1) ≦ 0（U方向の極大点・極小点の場合）
(vi+1 - vi)×(vi - vi-1) ≦ 0（V方向の極小点・極小点の場合）  …(3)
【００３９】
このとき、近似点列はステップS30の条件C1、C2を満たすことから、ti-1＜tx＜ti+1なるパラメタtxで必ず極大点・極小点がある。
【００４０】
上で求めた点の集合｛P}について、パラメタ値t0を初期値としてニュートン法で曲線の導関数=0になるパラメタtxを求める（この点が極大点・極小点）。ここで、トリム線を表すベジエ曲線の方程式を式(4)とすると、極大点・極小点は、導関数=0になる点なので、それぞれの方向で解くべき方程式F(t)は式(5)のようになる。
┌    ┐                    ┌  ┐
│u(t)│                    │ui│
│    │= ΣPi・Bi,N(t) = Σ│  │・Bi,N(t)  …(4)
│v(t)│                    │vi│
└    ┘                    └  ┘
ここで、Piは制御点（i=0からN）
Bi,Nはバーンシュタインの基底関数
Σ演算はi=0からNまで
F(t) = du(t)/dt = d/dt{ΣPi・Bi,N(t)} = Σui・B'i,N(t) = 0（U方向の場合）
F(t) = dv(t)/dt = d/dt{ΣPi・Bi,N(t)} = Σvi・B'i,N(t) = 0（V方向の場合）  …(5)
ここで、Σ演算はi=0からNまで
【００４１】
つまり、この方程式(5)を満たすパラメタtの値が、求める極大点・極小点を表すパラメタ値である。この方程式(5)をニュートン法を用いて解くと、ニュートン法の繰り返し計算は式(6)のようになる。
tk+1 = tk - F(tk)/F'(tk)
= tk - Σui・B'i,N(tk)/{Σui・B"i,N(tk)}（U方向の場合）  …(6)
ここで、Σ演算はi=0からNまで
【００４２】
従って、パラメタtの一回増分は式(7)のようになり、これに、先ほど求めた初期値t0を与え、このdtを反復計算し収束した点が極大点・極小点である。
dt = - Σui・B'i,N(tk)/{Σui・B"i,N(tk)}（U方向の場合）  …(7)
ここで、Σ演算はi=0からNまで
【００４３】
そして、ここで求めたパラメタtxが、前述した条件ti-1＜tx＜ti+1を満たすかチェックし、条件を満たせば、求めた極値(ux, vx, tx)の位置でセグメントを、ド・カステリョ（de Casteljau）のアルゴリズム（例えば、非特許文献3参照）を用いて分割する。
【００４４】
● 分割後のセグメントを囲むバウンディングボックスの計算（S70）
分割後の各セグメントについて、ステップS30、S40と同様の処理を行い、分割後の各セグメントにおける近似点列を発生して、セグメントを囲むバウンディングボックスを求める。
【００４５】
● スキャンライン線と交わるバウンディングボックス情報の保存（S80）
探索線の方向とは異なる（UまたはV）方向に外接矩形104をN等分する。図9は外接矩形104をV方向に十等分する例である。この場合、スキャンラインの方向はV方向であるといい、等分線105をスキャンライン線、等分した矩形106をスキャンラインと呼ぶ。そして、判定サーバ2は、スキャンライン線105と交わるバウンディングボックスについて、次の値を外部記憶装置3または内部メモリに保存する。
(1) バウンディングボックスの識別記号
(2) スキャンライン線105とトリム線102の交点に最も近い二つの近似点
の識別記号（例えば図6の近似点Pn、Pn+1）
【００４６】
● トリビアルインアウトボックスの作成（S90）
図10は、ステップS80で保存した、スキャンライン線105と交わるバウンティングボックスの情報を基に作成される、交点で挟まれた矩形領域であるトリビアルインアウトボックス（以降「トリビアルボックス」と呼ぶ場合がある）の一例を示す図で、●印はトリム線102とスキャンライン線105との交点位置を示す。
【００４７】
トリビアルインアウトボックスの始点位置および終点位置は、予め定めた公差×2の分、小さくなるように設定し、トリム線102と交わらないようにする。図10において、左から数えて奇数番目のトリビアルボックスがトリビアルインボックス（ドットパターンで示す、以降「インボックス」という場合がある）、偶数番目のトリビアルボックスがトリビアルアウトボックス（斜線パターンで示す、以降「アウトボックス」という場合がある）である。
【００４８】
● トリム線の膨らみに対する補正（S100）
図11はトリム線の膨らみに対する補正を説明する図である。つまり、図11(a)に示すように、トリム線102に膨らみがある場合、トリム線102とトリビアルボックスが交わることがある。これを避けるため、ステップS80で保存したバウンディングボックスの識別記号およびスキャンライン内の近似点列の位置情報を利用して、図11(a)に示す交点位置Aから交点位置Bまで点列を辿って、図11(b)に示すように、近似点Cを含まないようにトリビアルボックスを縮小する。
【００４９】
● 特定のトリビアルボックスの削除（S110）
図12に示すトリム線102aのように、完全にスキャンラインに含まれるトリム線が存在する。また、近似点列はトリビアルボックスに含まれなくても、トリム線102としてみた場合、トリビアルボックスと交差するトリム線が存在する。これらの場合、後述するトリビアルボックスによる内外判定が無効になるので、この段階で、このような特定のトリビアルボックスを削除する必要がある。そこで、近時点列の隣接する二点が形成する線分と、トリビアルボックスとが交わらないか否かを判定し、交わる場合はそのトリビアルボックスを削除する。
【００５０】
● 中間ファイルへのデータ保存（S120）
外接矩形104、バウンディングボックス、トリビアルボックスなどの各データを外部記憶装置3に中間ファイルとして保存する。
【００５１】
図13Aはトリム線102の制御点情報を格納する中間ファイルのフォーマット例を示す図で、トリム線102の識別番号および制御点の識別番号に対応する、UV平面における制御点の位置を示す座標値（U値、V値）を有する。また、図13Bはバウンディングボックス情報を格納する中間ファイルのフォーマットを示す図で、トリム線102の識別番号およびバウンディングボックスの識別番号に対応する、UV平面におけるバウンディングボックス（矩形）の二頂点を示す二組の座標値（U大値、U小値、V大値、V小値）を有する。
【００５２】
また、図13Cは曲面、トリム線102の外接矩形、スキャンライン、トリビアルボックスの情報を格納する中間ファイルのフォーマット例を示す図で、曲面の識別番号に対応して、トリム線102の外接矩形の二頂点を表す二組の座標値（外接矩形U大値、外接矩形U小値、外接矩形V大値、外接矩形V小値）、スキャンラインの向き（UまたはV）および数を有する。さらに、各スキャンラインに対応して、トリビアルボックスの数、および、そのスキャンラインと交差するバウンディングボックスの数が格納され、各トリビアルボックスに対応してインかアウトかを表すフラグ、各トリビアルボックスのスキャンライン方向の座標値（小値、大値）を有し、並びに、各バウンディングボックスに対応してバウンディングボックスの識別番号およびトリム線の識別番号を有する。
【００５３】
［第二段階の処理］
上記の第一段階の処理がCADデータの基底面の数だけ繰り返され、各トリム線に対応付けられた外接矩形104、バウンディングボックス、トリビアルボックスなどのデータが中間ファイルとして保存される。詳細は後述するが、レイトレース処理は、視点や観察方向などの条件に応じて何度も実行する必要がありるが、その際、判定サーバ2は、中間ファイルを使用して（言い換えれば第一の処理を行わずに）、交点Rがトリム線102の領域内にあるか否かを判定する第二段階の処理を繰り返し実行することができる。
【００５４】
図14は第二段階の処理の一回分を説明するフローチャートで、端末5の指示により、判定サーバ2が実行する処理である。
【００５５】
● 中間ファイルデータの読み込み（S210）
まず、中間ファイルから、UV平面で表した曲面とトリム線102のデータを読み込む（図13A-13C参照）。
【００５６】
● トリム線を囲む外接矩形によるトリム内外判定（S220）
次に、ステップS50で作成し、中間ファイルに保存したトリム線102を囲む外接矩形104のデータ（図13C参照）によるトリム内外判定を行う。
【００５７】
交点Rが外接矩形104の内にあれば内側、外接矩形104の外（図7に示す斜線部分）にあれば外側と判定する。なお、トリム線102と外接矩形104が一致する場合もあるが、交点Rが外接矩形104の内にあれば内側と判定する。そして、ここで判定できない交点Rについては、以降のステップで判定する。
【００５８】
● トリビアルボックス を使用するトリム内外判定（S230）
次に、ステップS90、S100で作成し、中間ファイルに保存したトリビアルボックスのデータ（図13C参照）を使用してトリム内外判定を行う。スキャンライン内は、トリビアルインボックス、トリビアルアウトボックス、不定の三つの領域（図10参照）に区分されているが、交点Rがトリビアルインボックス内にあれば内側、トリビアルアウトボックス内にあれば外側と判定する。そして、不定の領域にある交点Rについては、以降のステップで判定する。
【００５９】
● バウンディングボックスを使用するトリム内外判定（S240）
次に、ステップS40、S70で作成し、中間ファイルに保存したバウンディングボックスのデータ（図13A-13C参照）を使用してトリム内外判定を行う。
【００６０】
図15はバウンディングボックスを使用するトリム内外判定を説明する図で、(イ)から(ト)で示す七つのバウンディングボックスがある場合を示している。
【００６１】
図15において、交点Rが属するスキャンライン201と交差する(イ)(ニ)(ホ)(ヘ)(ト)の五つのバウンディングボックスはスキャンライン201と関連付けられているので、探索線202とこれら五つバウンディングボックスの交差を判定すれば交差回数を数えることができる。このうち探索線202と交差するのは(ニ)(ヘ)(ト)の三つのバウンディングボックスである。なお、バウンディングボックス(ヘ)および(ト)については、ステップS60、S70において、セグメントの極大点で二つのバウンディングボックスに分割したため、トリム線102と探索線202の交点を求める必要はなく、各バウンディングボックスと探索線202の交差判定を行えばよい。
【００６２】
バウンティングボックス(ヘ)および(ト)の交差回数はそれぞれ一回ずつで計二回になり、判定サーバ102はこれを内部メモリなどに記憶する。また、バウンティングボックス(ニ)は、その内部に交点Rを含むので、トリム線102との交差判定は次のステップで行う。
【００６３】
● ニュートン法によるトリム内外判定（S250）
交点Rがその内部にあるバウンディングボックス(ニ)の場合、ニュートン法による交点計算を行い、ステップS240で記憶した交差回数と合計し、その結果の偶数奇数によりトリム内外判定を行う。判定サーバ102によるニュートン法の交点計算は次のようになる。
┌    ┐                    ┌  ┐
│u(t)│                    │ui│
│    │= ΣPi・Bi,N(t) = Σ│  │・Bi,N(t)  …(8)
│v(t)│                    │vi│
└    ┘                    └  ┘
ここで、tはベジェ曲線のパラメタ
Piは制御点（i=0からN）
(u(t), v(t))はベジエ曲線上の点
Bi,Nはバーンシュタインの基底関数
Σ演算はi=0からNまで
【００６４】
探索線の方向をU方向として、トリム内外判定の対象になる光線と曲面の交点Rの座標値をパラメタで(uA, vA)とすると、解くべき方程式は式(9)で表される。
F(t) = Σui・B'i,N(t) - uA = 0    …(9)
ここで、Σ演算はi=0からNまで
【００６５】
この方程式(9)を満たすパラメタtの値が、求める半直線と曲線の交点位置を表す。この式F(t)はニュートン法を用いて解くことができる。F(t)にニュートン法の繰り返し計算を適用すると、以下の式が成り立つ。
tk+1 = tk - F(tk)/F'(tk)
= tk - {Σui・Bi,N(tk) - uA}/{Σui・B'i,N(tk)}
= tk - (U・B - uA)/(U・B')      …(10)
ここで、Σ演算はi=0からNまで
【００６６】
ここで、U、BおよびB'を次とすると、dtは式(11)で表される。
U = {u0, u1, u2, …, uN}
B = {B0,N(tk), B1,N(tk), …, BN,N(tk)}
B' = {B'0,N(tk), B'1,N(tk), …, B'N,N(tk)}
dt = (uA - U・B)/(U・B')      …(11)
【００６７】
判定サーバ102は、パラメタtの値が解に収束するまで、このdtを繰り返し用いて計算する。パラメタtが収束した場合、パラメタtの値から交点が求まる。光線と曲面の交点Rより、探索線202とトリム線102の交点が正の方向にある場合、探索線202とトリム線102が交わるので交差回数を「1」とし、負の方向にある場合、探索線202とトリム線102は交わらないので交差回数は「0」とする。
【００６８】
● 結果の出力（S260）
判定サーバ102は、トリム内外判定の結果を外部記憶装置103に保存する。
【００６９】
［レイトレース処理］
次に、上述したトリム内外判定を含むレイトレース処理を説明する。図16はレイトレース処理の概要を示すフローチャートで、例えば図4に示すCADシステム6や端末5などが実行する処理である。勿論、判定サーバ102に実行させてもよい。
【００７０】
まず、対象となる物体の上述した中間ファイルが存在するか否かを判定し(S310)、存在しなければ判定サーバ102にCADデータを供給して、上述した第一段階の処理を実行させる(S320)。
【００７１】
次に、レイトレース処理の条件（視点や観察方向など）を入力し(S330)、入力した条件に基づき視点を起点として光線を発生する(S340)。発生する光線は、描画する画面（画像）の1ピクセル当り一本または複数数本で、例えば800×600ピクセルの画面サイズであれば最低800×600=480,000本の光線を発生する。
【００７２】
次に、発生した光線の一本について、描画対象の曲面との交点を計算し(S350)、交点Rがあるか否かを判定し(S360)、交点Rがなければ、処理をステップS410へ進める。
【００７３】
また、計算対象の曲面に交点Rがあれば、判定サーバ102に上記の第二の処理によるトリム内外判定を行わせ(S380)、その判定結果がトリム線の内側に交点Rがあることを示せば(S390)、太陽直射光、天空光、地上光、材質に応じた交点Rの着色計算を行い、計算結果の画像データ（例えばRGBデータ）をメモリに保存する(S400)。なお、交点Rの計算結果は、下記に一例を示すようなU値およびV値からなる座標値で、この値が判定サーバ102の第二の処理に渡される。
U値：3.526143e-01
V値：2.325176e-02
【００７４】
次に、発生した光線すべての処理を終了したかを判定し(S410)、未了であれば計算対象の光線を変えて処理をステップS350に戻し、発生した光線の数分、ステップS350からS400の処理を繰り返す。
【００７５】
発生した光線すべての処理が終了すると、レイトレース処理は終了し、メモリに保存された画像データを市販の描画ソフトに渡すなどすれば、描画結果を観察することができる。そして、この観察の結果、レイトレース処理の条件を変更する必要があれば、図16に示すレイトレース処理を再実行する。つまり、例えばカタログやコマーシャルフィルム用に適切な画像が得られるまで、レイトレース処理が繰り返される。
【００７６】
トリム内外判定(S380)において、前述したニュートン法による内外判定を行えば、その処理に多大の時間がかかるが、上述した第二段階の処理を行うことにより、ニュートン法による内外判定の計算量を減らし、処理時間を大幅に短縮することができる。
【００７７】
図17および図18は、本発明のトリム内外判定を車体の意匠形状のレイトレース処理に適用した場合の効果を説明する図である。
【００７８】
図17に示すように、内外判定の必要数（1,973,114）のうち、外接矩形とトリビアルインアウトボックスの利用した判定により1,578,652（80%）を処理することができる。
【００７９】
図17の残りの20%については、さらに判定が必要とされたものであるが、それらの各一回の内外判定には複数の交差判定を行う必要がある。図18は、この交差判定の必要数（図18では2,991,816）を基に記載してあり、そのうち、バウンディングボックスを利用した判定により2,954,399（98.7%）を処理して、残りの37,417（1.3%）だけをニュートン法による交差判定で行えばよい。これは、供述したように、バウンディングボックスと探索線の交差判定により、バウンディングボックスが交点Rを含む場合のみニュートン法による交点計算の繰り返し計算を行えばよいためである。
【００８０】
例えば、総曲面数が七万面の形状モデルのレイトレース処理を行い、640×486ピクセルの画像を作成した場合、約200万回のトリム内外判定の必要が生じる。これを、クロックが833MHzのCPUで計算し、三次元トリムで内外判定すると330秒を要するが、本発明を適用すれば、第一段階の処理と第二段階の処理を合計して三秒で処理することができる。すなわち、処理時間を1/100程度に短縮することができる。
【図面の簡単な説明】
【００８１】
【図１】三次元空間における曲面とトリム線の一例を示す図、
【図２】三次元空間のトリム線をUV平面に投影した様子を示す図、
【図３】UV平面におけるトリム内外判定を説明する図、
【図４】トリム内外判定システムの構成例を示すブロック図、
【図５】第一段階の処理を説明するフローチャート、
【図６】近似点列の発生を説明する図、
【図７】トリム線全体を囲む外接矩形を説明する図、
【図８】セグメントの分割を説明する図、
【図９】外接矩形をV方向に十等分する例を示す図、
【図１０】トリビアルインアウトボックスの作成を説明する図、
【図１１】トリム線の膨らみに対する補正を説明する図、
【図１２】特定のトリビアルボックスの削除を説明する図、
【図１３Ａ】トリム線の制御点情報を格納する中間ファイルのフォーマット例を示す図、
【図１３Ｂ】バウンディングボックス情報を格納する中間ファイルのフォーマットを示す図、
【図１３Ｃ】曲面、トリム線の外接矩形、スキャンライン、トリビアルボックスの情報を格納する中間ファイルのフォーマット例を示す図、
【図１４】第二段階の処理を説明するフローチャート、
【図１５】バウンディングボックスを使用するトリム内外判定を説明する図、
【図１６】レイトレース処理の概要を示すフローチャート、
【図１７】本発明の効果を説明する図、
【図１８】本発明の効果を説明する図である。
【図１】
2005227992.tif 000003
【図２】
2005227992.tif 000004
【図３】
2005227992.tif 000005
【図４】
2005227992.tif 000006
【図５】
2005227992.tif 000007
【図６】
2005227992.tif 000008
【図７】
2005227992.tif 000009
【図８】
2005227992.tif 000010
【図９】
2005227992.tif 000011
【図１０】
2005227992.tif 000012
【図１１】
2005227992.tif 000013
【図１２】
2005227992.tif 000014
【図１３Ａ】
2005227992.tif 000015
【図１３Ｂ】
2005227992.tif 000016
【図１３Ｃ】
2005227992.tif 000017
【図１４】
2005227992.tif 000018
【図１５】
2005227992.tif 000019
【図１６】
2005227992.tif 000020
【図１７】
2005227992.tif 000021
【図１８】
2005227992.tif 000022