JP3931701B2 - 画像生成装置及びプログラム - Google Patents
画像生成装置及びプログラム Download PDFInfo
- Publication number
- JP3931701B2 JP3931701B2 JP2002072301A JP2002072301A JP3931701B2 JP 3931701 B2 JP3931701 B2 JP 3931701B2 JP 2002072301 A JP2002072301 A JP 2002072301A JP 2002072301 A JP2002072301 A JP 2002072301A JP 3931701 B2 JP3931701 B2 JP 3931701B2
- Authority
- JP
- Japan
- Prior art keywords
- object elements
- intersection
- bounding box
- bounding
- bounding volume
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Description
【発明の属する技術分野】
本発明は、光線追跡法を用いた画像生成装置等に関する。
【0002】
【従来の技術及び発明が解決しようとする課題】
光線追跡法は、視点から物体の方向に向かって画像を追跡し、光線が物体と交差すればその交点における物体の光の状態を求め、それを画像面(スクリーン)に投影させて2次元の画像を生成する手法である。この手法は光線と物体との交点を求める交点計算に非常に時間がかかるため、様々な高速化方法が考え出されている。その高速化方法の一つとしてバウンディングボリュームを用いる方法がある。
【0003】
バウンディングボリュームは球体や直方体(この場合を特に「バウンディングボックス」と言う)の形状を有し、1又は複数の物体要素を内包する。光線と物体要素との交点を求める前にバウンディングボリュームと光線とが交差するか否かを判定し、バウンディングボリュームと光線とが交差する場合のみ光線と物体要素との交点を求めるようにして、不要な交点計算を減らす。尚、このバウンディングボリュームを用いる場合は、階層的にバウンディングボリュームを設定することも行われている。
【0004】
以下に従来のバウンディングボリュームの設定方法について説明する。尚、ここではバウンディングボリュームとしてバウンディングボックスを用い、2次元モデルで代用して説明する。
図6は、バウンディングボックスの設定方法を示す説明図である。図6(1)において物体Aは画像生成の対象であり、物体Aは符号aから符号pで示される16の物体要素から構成される。
【0005】
第1段階では、物体Aを内包するバウンディングボックス20を定め、このバウンディングボックス20と光線(図示せず)とが交差するか否かを判定する。バウンディングボックス20と光線とが交差しない場合はバウンディングボックス20に内包される物体Aは光線と交差しないと判定する。一方、バウンディングボックス20と光線とが交差する場合は物体Aと光線とは交差する可能性がある。ここでは、バウンディングボックス20と光線とは交差すると仮定して説明を進める。
【0006】
第2段階では、バウンディングボックス20の長い方の2辺に注目し、2辺の中点を結ぶ線分20aを境にしてバウンディングボックス21とバウンディングボックス22とを設定する。そして、バウンディングボックス21に属する物体要素として、バウンディングボックス21に完全に内包される物体要素a〜e・hだけでなく、バウンディングボックス21に一部だけ含まれる物体要素f・g・i〜l(網掛けで示す物体要素)もバウンディングボックス21に属する物体要素として考える。一方、バウンディングボックス22についても同様に、完全に内包される物体要素m〜pだけでなく、一部だけ含まれる物体要素f・g・i〜l(網掛けで示す物体要素)もバウンディングボックス22に属する物体要素として考える。
【0007】
そして、バウンディングボックス21・22が光線と交差するか否かを判定する。バウンディングボックス21が光線と交差する場合は物体要素a〜lは光線と交差する可能性があると判定し、バウンディングボックス21が光線と交差しない場合は物体要素a〜lは光線と交差しないと判定する。同様にして、バウンディングボックス22が光線と交差する場合は物体要素f・g・i〜pは光線と交差する可能性があると判定し、バウンディングボックス21が光線と交差しない場合は物体要素f・g・i〜pは光線と交差しないと判定する。尚、両方の判定が矛盾する物体要素については、光線と交差する可能性があると判断する。ここでは、バウンディングボックス21・22は光線と交差すると仮定して説明を進める。
【0008】
第3段階として、図6(2)に示すようにバウンディングボックス21に属する物体要素に注目し、バウンディングボックス21の長い方の2辺の中点を結ぶ線分21aを境にしてバウンディングボックス23とバウンディングボックス24とを設定する。そして、バウンディングボックス23に属する物体要素として物体要素a〜d・f・g・i・jとする。一方、バウンディングボックス24に属する物体要素として物体要素a〜e・h・i・k・lとを考える。
【0009】
そして、バウンディングボックス23・24が光線と交差するか否かを判定する。バウンディングボックス23が光線と交差する場合は物体要素a〜d・f・g・i・jは光線と交差する可能性があると判定し、バウンディングボックス23が光線と交差しない場合は物体要素a〜d・f・g・i・jは光線と交差しないと判定する。同様に、バウンディングボックス24が光線と交差する場合は物体要素a〜e・h・i・k・lは光線と交差する可能性があると判定し、バウンディングボックス24が光線と交差しない場合は物体要素a〜e・h・i・k・lは光線と交差しないと判定する。尚、両方の判定が矛盾している物体要素については、光線と交差する可能性があると判断する。
【0010】
バウンディングボックス22についても同様の処理を行うが説明は省略する。このようにして、第4段階以降、所定の段階まで同様の処理を続ける。この様子を2分木を用いて示すと図7のようになる。設定したバウンディングボックスは光線と全て交差したとし、第6段階まで行った。白塗りの丸は物体要素を有するバウンディングボックスを表し、黒塗りの丸は物体要素を有しないバウンディングボックスを表す。特に、英字の入っている白塗りの丸は物体要素を一つだけ有するバウンディングボックスを表し、その英字は物体要素に対応する。
【0011】
本例は、バウンディングボックスを等分して2つの新たなバウンディングボックスを設定し、そのバウンディングボックス両方にかかる物体要素については、両バウンディングボックスそれぞれに便宜的に属するようにしている点が特徴である。
【0012】
次に、他の従来例について説明する。図8に示すように、第1段階で物体Aを内包するようにバウンディングボックス40を定め、第2段階では次に述べるようなバウンディングボックス41・42を定める。バウンディングボックス40の長い方の2辺の中点を結ぶ線分を境界線40aにして2つのグループに分ける。境界線40aにかかる物体要素をどちらか一方のグループに属するようにし、それぞれのグループの物体要素を完全に内包するようにバウンディングボックス41・42を設定する。本例では、バウンディングボックス41に物体要素a〜i(網掛けで示す物体要素)を含めるようにし、バウンディングボックス42に物体要素j〜pを含めるようにした。そして、バウンディングボックス41・42共に光線と交差すると仮定する。
【0013】
続いて第3段階で、バウンディングボックス41に内包される物体要素a〜iに注目し、次に述べるようなバウンディングボックス43・44を定める。バウンディングボックス41の長い方の2辺の中点を結ぶ線分を境界線41aにして2つのグループに分ける。境界線41aにかかる物体要素をどちらか一方のグループに属するようにし、それぞれのグループの物体要素を完全に内包するようにバウンディングボックス43・44を設定する。本例では、バウンディングボックス43に物体要素b・d・f・g(網掛けで示す物体要素)を含めるようにし、バウンディングボックス44に物体要素a・c・e・h・iを含めるようにした。
【0014】
バウンディングボックス42についても同様の処理を行うが説明は省略する。このようにして、第4段階以降、所定の段階まで同様の処理を続ける。この様様子を2分木を用いて例示すると図9のようになる。尚、設定したバウンディングボックスは全て光線と交差したとし、第6段階までにすべてのバウンディングボックスが物体要素を一つだけ内包する状態となる。
【0015】
本例は、バウンディングボックスを等分して物体要素を2つのグループに分け、その際に境界線にかかる物体要素については、どちらか一方のグループに属するようにする。そして、それぞれのグループの物体要素を完全に内包するようにバウンディングボックスを設定する点が特徴である。
【0016】
以上説明したような従来の方法を用いた画像生成装置は、物体要素を重複して扱うため結果的に計算量が多くなるという問題や、バウンディングボックスに属する物体要素が1つだけになるまで分割することが不可能な場合が生じるといった問題があった。また、二分木で表現した場合にバランス木にならないため、バランス木に比べて計算時間を要するという問題もあった。
【0017】
本発明はこうした問題に鑑み為されたものであり、物体要素を適切なグループに分けてバウンディングボックスを設定し、画像を生成するまでの時間が短縮された画像生成装置を提供することを目的とする。
【0018】
【課題を解決するための手段及び発明の効果】
上記目的を達成するために為された請求項1に記載の画像生成装置は、バウンディングボリューム設定手段が、設定処理(物体要素の個数差が1又は0になるように重複なく物体要素を2つのグループに分け、各グループに対して物体要素が内包されるようにバウンディングボリュームを設定する処理)を実行する。そして、バウンディングボリューム設定手段によって設定処理が実行されると、交差判定手段が交差判定(バウンディングボリュームと光線とが交差するか否かを判定)を実行する。その交差判定の判定結果がバウンディングボリュームと光線とが交差するという判定結果であった場合、交点算出手段が交点算出処理(バウンディングボリュームに内包される物体要素に対して光線との交点を求める処理)を実行する。この求められた交点における光の状態を算出して2次元画像が生成される。
【0019】
このため、2つのバウンディングボリュームの両方に重複して含まれる物体要素は無く、それぞれに含まれる物体要素の数の差も0又は1となる。したがって、2つのバウンディングボリュームに含まれる物体要素の数に偏りがないため、光線と交差しないと判定される物体要素の数も平均化される。その結果、画像生成が効率的に行われ、画像生成にかかる時間を短縮できる。
【0020】
また、バウンディングボリューム設定手段が実行する設定処理は1度だけであってもよいが、請求項2に記載の画像生成装置のように、バウンディングボリューム設定手段は、交差判定手段が実行した交差判定の判定結果がバウンディングボリュームと光線とが交差するという判定結果であったバウンディングボリュームに対して、そのバウンディングボリュームに含まれる物体要素の数が1になるまで設定処理を再帰的に実行するようにしてもよい。そして、その場合は交点算出手段は、グループに含まれる物体要素の数が1になったときに交点算出処理を実行すればよい。
【0021】
このように、バウンディングボリューム設定手段が再帰的に設定処理を実行することによって、光線と交差しない物体要素に対して交点計算を行うことをより避けられる。したがって、画像生成装置が画像生成にかかる時間を短縮できる。尚、バウンディングボリューム設定手段は、設定する2つのバウンディングボリュームに含まれる物体要素の数が1になるまで再帰的に設定処理を行っても良いが、画像生成を行う対象の物体によってはバウンディングボリュームに含まれる物体要素の数が1になるまで設定処理を行うと、設定処理にかかるトータルの計算量が増大するため、設定処理を再帰的に行う意味が薄れる場合もある。そのため、請求項3に記載の画像生成装置のように、バウンディングボリューム設定手段は、交差判定手段が実行した交差判定の判定結果がバウンディングボリュームと光線とが交差するという判定結果であったバウンディングボリュームに対して、そのバウンディングボリュームに含まれる物体要素の数が2以上の定数n以下になるまで設定処理を再帰的に実行するようにしてもよい。そして、その場合は交点算出手段は、グループに含まれる物体要素の数が2以上の定数n以下になったときに交点算出処理を実行すればよい。
【0022】
このようにすれば、対象の物体要素の個数が定数n以下になったらバウンディングボリューム設定手段は設定処理を停止するため、不毛に計算量を増大させることを防げる。尚、この定数nは、例えば実験によって定めることが考えられる。その場合、バウンディングボリューム設定手段が設定処理を行うことによって増大する計算量と、設定処理を行うことによって光線との交点計算を行う物体要素の数を減少できる割合と、を鑑みて設定する方法が考えられる。
【0023】
また、請求項2及び請求項3に記載の画像生成装置におけるバウンディングボリューム設定手段が行う設定処理は、物体要素を再帰的に2つのグループに分けるため、請求項4に記載の画像生成装置のように、更に、管理手段が、バウンディングボリューム設定手段の実行する設定処理によって分けられたグループをノードとする二分木データ構造を用いて各グループに属する物体要素の情報を管理し、バウンディングボリューム設定手段、交差判定手段及び交点算出手段は、管理手段から情報を取得し、その情報に基づいて各々設定処理、交差判定及び交点算出処理を実行するとよい。
【0024】
このように、管理手段が二分木構造を用いて情報を管理することによって、一般的な計算機で容易に物体要素の情報を管理できる。そして、バウンディングボリューム設定手段、交差判定手段及び交点算出手段が管理手段の管理する情報を利用することによって各手段の計算量が減少し、画像生成装置が画像生成にかかる時間を短縮できる。
【0025】
また、請求項5に記載の画像生成装置のように、バウンディングボリューム設定手段は、バウンディングボリュームとして直方体の形状を有し各辺がXYZ直交座標系における各軸と平行であるバウンディングボックスを用い、設定処理の中で物体要素を2つのグループに分ける際に、まず当該物体要素を全て含むバウンディングボックスを設定し、そのバウンディングボックスについてX軸方向・Y軸方向・Z軸方向の何れか最も長い方向を2分するように物体要素を2つのグループに分けるようにしてもよい。
【0026】
このようにすると、バウンディングボックスの最も長い辺が分割されることになり、バウンディングボックスが光線と交差しない確率が増える。その結果、光線と交差しない物体要素を効率的に特定することができ、画像生成装置が画像生成にかかる時間を短縮できる。
【0027】
また、請求項6に記載の画像生成装置のように、バウンディングボリューム設定手段は、バウンディングボリュームとして直方体の形状を有し各辺がXYZ直交座標系における各軸と平行であるバウンディングボックスを用い、設定処理の中で物体要素を2つのグループに分ける際に、まず各物体要素の重心の分布をX軸方向・Y軸方向・Z軸方向に関して調べ、最も広い範囲に分布する軸方向に沿って重心の座標順に各物体要素をリストとして並べ、物体要素の数が偶数である場合はリストの中央で2つのグループに分割(偶数分割)し、物体の要素が奇数である場合はリストの中央に位置する物体要素(中央物体要素)を境界としその物体要素がいずれか一方のグループに含まれるように2つのグループに分割(奇数分割)するようにしてもよい。
【0028】
このようにすれば、物体要素の位置関係が考慮され、重心位置の近い物体要素同士が集まったバウンディングボックスが設定される。このようにして設定されたバウンディングボックスは、物体要素の位置関係を考慮しない場合と比べ小さくなるため、交差判定手段が実行する交差判定によって光線と交差しないと判定される可能性が高い。したがって、画像生成装置が画像生成にかかる時間を短縮できる。
【0029】
尚、請求項7に記載のように、物体要素のうちリストの両端に位置する物体要素を端部物体要素とし、バウンディングボリューム設定手段は、奇数分割の際に中央物体要素の重心の座標から2つの端部物体要素の重心の座標までの距離をそれぞれ求め、中央物体要素からの距離が近い方の端部物体要素が含まれるグループに中央物体要素を含めるようにすると更によい。
【0030】
このようにすれば、さらにバウンディングボックスを小さく設定でき、交差判定手段が実行する交差判定によって光線とバウンディングボックスとは交差しないと判定される可能性が増える。したがって、光線と交差しない物体要素を効率的に特定することができ、画像生成装置が画像生成にかかる時間を短縮できる。
【0031】
一方、請求項8に記載の画像生成装置のように、バウンディングボックス設定手段は、重心の替わりに当該物体要素のみを含むバウンディングボックスの中心を用いるようにしてもよい。このようにしても、同様の作用及び効果が得られる。
【0032】
また、請求項1から請求項8の何れかに記載の画像生成装を構成する各手段は、ハードウェア上で実現されてもよいが、請求項9に示すように、コンピュータで機能させるためのプログラムとして実現させてもよい。
このようにプログラムで実現させれば、磁気ディスク、光磁気ディスク、メモリカード等のコンピュータが読み取り可能な記録媒体に記録し、必要に応じてコンピュータにロードして起動することにより用いることができる。また、ネットワークを介してロードして起動することにより用いることもできる。
【0033】
【発明の実施の形態】
以下、本発明が適用された実施例について図面を用いて説明する。
図1は画像生成装置2の構成を示すブロック図である。画像生成装置2は主に、CPU4と、ROM6と、RAM8と、VRAM(ビデオRAM)10と、IF(インタフェース)12とを備え、これらはバス14で相互に接続されている。
【0034】
CPU14は各種演算や制御を司り、特許請求の範囲におけるバウンディングボリューム設定手段、交差判定手段、交点算出手段及び管理手段として機能する。また、ROM6には光線追跡法によって2次元画像を生成するためのプログラムが格納され、RAM8はプログラムを実行するための一時領域として利用され、VRAM10には生成結果の2次元画像が格納される。そして、VRAM10に格納された2次元画像は、IF12より接続ケーブル18を介して表示装置16に伝達され、表示装置16で画像として表示される。
【0035】
このように構成された画像生成装置2において、図示しない操作部を利用者が操作すると、CPU4はROM6からプログラムを読み込み、画像生成処理を開始する。
図2は画像生成処理を表すフローチャートである。本処理ではバウンディングボリュームとしてバウンディングボックスを使用し、そのバウンディングボックスの辺はXYZ直交座標の座標軸に平行であるとする。
【0036】
処理が開始されると、まずS100で光線を設定する。これは、視点を起点とし、2次元画像が投影されると仮定するスクリーン上の一点(ピクセル)を通って更に延びる半直線を設定することである。尚、本ステップでは毎回異なるスクリーン上のピクセルを選択し、全てのピクセルを選択し終えた場合は、光線の設定は行わない。
【0037】
続いてS110では、S100において光線の設定が行われたか否かによって分岐する。光線の設定が行われた場合はS120に進み、光線の設定が行われなかった場合は画像生成処理を終了する。
S120では、後述する交差判定対象の設定を行う。
【0038】
続くS130ではS120の結果に基づいて交差判定対象が存在するか否かを判定する。交差判定対象が存在する場合はS140に進み、交差判定対象が存在しない場合(例えばこの時点で全てのバウンディングボックスとの交差判定を終了してしまった場合等)は、S100に戻って光線の設定を行う。
【0039】
S140では、交差判定の対象がバウンディングボックスか否かを判定する。交差判定の対象がバウンディングボックスである場合はS150に進み、交差判定の対象がバウンディングボックスでない場合、すなわち物体要素である場合はS180に進む。
【0040】
S150では、バウンディングボックス交差判定処理を実行する。これは、光線とバウンディングボックスとが交差するか否かを判定する処理である。
続くS160では、S150の結果に基づいて光線とバウンディングボックスとが交差するか否かによって分岐する。光線とバウンディングボックスとが交差しない場合はS170に進み、光線とバウンディングボックスとが交差する場合はS120に戻る。
【0041】
S170では、当該バウンディングボックスを交差判定対象から除外する。そしてS120に戻る。
一方、S180では、光線と物体要素とが交差するか否かの判定を行う。その結果に応じてS190で分岐する。光線と物体要素とが交差する場合はS200に進み、交差しない場合はS100に戻る。
【0042】
S200では、光線と物体要素との交点を求め、その交点における光の状態を算出する。そして、射影されるスクリーン上のピクセルを設定しVRAM10に画像データを書き込む。書き込みが終了するとS100に戻る。尚、VRAM10に書き込まれた画像データは、IF12及び接続ケーブル18を介して逐一表示装置16に送られる。
【0043】
ここで、S120の交差判定対象の設定について詳しく説明する。図3は交差判定対象の設定を表すフローチャートである。本処理もCPU4で起動され実行される。尚、CPU4は本処理の中でバウンディングボックスや物体要素を二分木構造のデータを用いて管理する。
【0044】
まず、S300で初回の実行か否かを判定する。初回の実行であればS400に進み、初回の実行でなければS310に進む。
S400では、物体を物体要素に分割する。続いてS410で各物体要素の重心を算出する。そして、S420で物体全体にバウンディングボックスを設定し、そのバウンディングボックスを選択して本処理を終了する。
【0045】
一方、S310では交差判定を実行していないバウンディングボックスが存在するか否かを判定する。交差判定を実行していないバウンディングボックスが存在する場合はS390に進み、存在しない場合はS320に進む。
S390では、S310で交差判定を実行していないバウンディングボックスとして判定されたバウンディングボックスを選択する。そして本処理を終了する。
【0046】
一方、S320では物体要素を2つ以上内包しているバウンディングボックスが存在するか否かを判定する。物体要素を2つ以上内包しているバウンディングボックスが存在する場合はS330に進み、存在しない場合はS370に進む。S370では、交差判定を実行していない物体要素が存在するか否かを判定する。交差判定を実行していない物体要素が存在する場合はS380に進み、存在しない場合は何も選択せずに本処理を終了する。
【0047】
S380では、S370で交差判定を実行していないとして判定された物体要素を選択する。そして本処理を終了する。
一方、S330では、S320で分割可能と判定されたバウンディングボックスに含まれる物体要素の重心分布をX・Y・Z軸方向それぞれについて調べ、最も広く分布している軸を選択する。
【0048】
続いてS340では、S330で選択された軸に沿って、重心の座標順に対象の物体要素をリストとして並べる。
続いてS350では、S340で並べられたリストをその中央で2分して物体要素を2つのグループに分ける。尚、グループに分ける物体要素の数が奇数である場合は、リストの中央に位置する物体要素とリストの両端に位置する2つの端部物体要素との空間上の距離をそれぞれ求め、近い方の端部物体要素が含まれるグループになるように中央に位置する物体要素を分ける(請求の範囲における奇数分割に相当する)。そしてそれぞれのグループにバウンディングボックスを設定する。
【0049】
続いてS360では、S350で設定したバウンディングボックスの何れか一方を選択し、本処理を終了する。
交差判定対象の設定について説明したが、ここで、バウンディングボックスの設定の一例を具体的に示す。尚、従来技術の箇所で例に挙げた物体Aを用い、X軸・Y軸方向のみからなる2次元で説明する。
【0050】
図4は、バウンディングボックスの設定方法を示す説明図である。図面の左右方向をX軸方向、上下方向をY軸方向とする。
第1段階で、物体Aを内包するバウンディングボックス60を定め(図3のS420に対応する)、このバウンディングボックス60と光線(図示せず)とが交差するか否かを判定する。バウンディングボックス60と光線とが交差しない場合はバウンディングボックス60に内包される物体Aは光線と交差しないと判定する。一方、バウンディングボックス60と光線とが交差する場合は物体Aと光線とは交差する可能性がある。ここでは説明のため、バウンディングボックス60と光線とは交差すると仮定する。
【0051】
第2段階で物体要素a〜pの重心の分布範囲を座標軸方向について調べる(図3のS330に対応する)。図4の物体Aは紙面上で左右方向に重心の分布範囲が広いので、重心座標のX値を用いて物体要素a〜pを並べてリストを作成する(図3のS340に対応する)。次に、そのリストの中心で物体要素を二つのグループに分ける。本実施例では物体要素a〜h(網掛けで示す物体要素)のグループと物体要素i〜pのグループに分ける。そして、物体要素a〜hが内包されるようにバウンディングボックス61を設定し、物体要素i〜pが内包されるようにバウンディングボックス62を設定する(図3のS350に対応する)。
【0052】
続いてバウンディングボックス61・62が光線と交差するか否かを判定する。バウンディングボックス61が光線と交差する場合は、物体要素a〜hは光線と交差する可能性があると判定し、バウンディングボックス61が光線と交差しない場合は、物体要素a〜hは光線と交差しないと判定する。同様にして、バウンディングボックス62が光線と交差する場合は物体要素i〜pは光線と交差する可能性があると判定し、バウンディングボックス62が光線と交差しない場合は物体要素i〜pは光線と交差しないと判定する。
【0053】
第3段階として、図4(2)に示すようにバウンディングボックス61に属する物体要素に注目し、第2段階の時と同様にしてリストを作り、物体要素a〜hを2つのグループに分ける。本実施例では、物体要素b・d・g・f(網掛けで示す物体要素)のグループと、物体要素a・c・e・hのグループとに分ける。そして、物体要素b・d・g・fを内包するようにバウンディングボックス63を設定し、物体要素a・c・e・hを内包するようにバウンディングボックス64を設定する。
【0054】
続いてバウンディングボックス63・64が光線と交差するか否かを判定する。バウンディングボックス63が光線と交差する場合は、物体要素b・d・f・gは光線と交差する可能性があると判定し、バウンディングボックス63が光線と交差しない場合は、物体要素b・d・f・gは光線と交差しないと判定する。同様に、バウンディングボックス64が光線と交差する場合は、物体要素a・c・e・hは光線と交差する可能性があると判定し、バウンディングボックス64が光線と交差しない場合は、物体要素a・c・e・hは光線と交差しないと判定する。
【0055】
バウンディングボックス62についても同様の処理を行うが説明は省略する。このようにして、第4段階以降バウンディングボックスが設定可能な限り、すなわちバウンディングボックスに含まれる物体要素の数が1になるまで同様の処理を続ける。この様子を2分木を用いて例示すると図5のようになる。記号は従来技術の説明にて用いたものと同じである。尚、設定したバウンディングボックスは光線と全て交差したとし、第5段階でバウンディングボックスに含まれる物体要素の数が1になる。説明に用いた物体Aは、構成する物体要素の数が16であったため請求の範囲における偶数分割しか行われなかったが、分割対象の物体要素の数が奇数であった場合は奇数分割を行うことは言うまでもない。
【0056】
したがって、本実施例の画像生成装置2においては、各段階で設定される2つのバウンディングボックスには重複して含まれる物体要素は無い。そして、それぞれのバウンディングボックスに含まれる物体要素の数の差も0又は1となるように設定される。このため、分割したバウンディングボックスに含まれる物体要素の数に偏りがないため、光線と交差しないと判定される物体要素の数も平均化される。また、物体要素の位置関係も考慮され、重心位置の近い物体要素同士が集まったバウンディングボックスが設定される。このようにして設定されたバウンディングボックスは、物体要素の位置関係を考慮しない場合と比べ小さくなるため、交差判定によって光線と交差しないと判定される可能性が高い。故に、画像生成にかかる時間を短縮できる。
【0057】
以上、一実施例を説明したが、本発明は上記の実施例に限定されるものではなく種々の態様を取ることができる。例えば、上記実施例では物体要素の重心を用いてリストを作ったが、物体要素毎に当該物体要素のみを内包するバウンディングボックスを設定し、このバウンディングボックスの中心を用いてリストを作ってもよい。このようにすれば、物体要素の重心座標の算出が複雑な場合でも、バウンディングボックス設定できれば、比較的容易にリストを作成することができる。
【0058】
また、上記実施例では第m+1段階のバウンディングボックスを設定する際に第m段階のバウンディングボックスに内包される物体要素の重心に着目したが、第m段階のバウンディングボックスの形状のみに着目し、そのバウンディングボックスの最も長い辺を2分するように第m+1段階のバウンディングボックスを設定してもよい。もちろん、この際も物体要素は重複なく差が1又は0になるようにする。
【0059】
また、上記実施例ではバウンディングボックスに含まれる物体要素の数が1になるまで新たなバウンディングボックスを設定し続けたが、バウンディングボックスに含まれる物体要素の数が2以上の定数n以下になったら、それ以上新たにバウンディングボックスを設定しないようにしてもよい。この定数nは、例えば実験によって定めることが考えられる。その場合、バウンディングボリューム設定手段が設定処理を行うことによって増大する計算量と、設定処理を行うことによって光線との交点計算を行う物体要素の数を減少できる割合と、を鑑みて設定する方法が考えられる。
【0060】
また、上記実施例では交差判定対象の設定(図2のS120)の中でバウンディングボックスを設定し、交差判定対象の設定(S120)と交差判定処理(S150及びS180)とを繰り返し実行しているが、光線の設定(S100)の前に全てのバウンディングボックスを設定しておき、交差判定対象の設定(S120)では単に交差判定を行う対象を選択するだけにしてもよい。このようにしても、上記実施例と同様の効果が得られる。
【図面の簡単な説明】
【図1】 画像生成装置の構成を表すブロック図である。
【図2】 画像生成処理を表すフローチャートである。
【図3】 交差判定対象の設定を表すフローチャートである。
【図4】 バウンディングボックスの設定方法を示す説明図である。
【図5】 バウンディングボックスの設定状態を示す二分木である。
【図6】 バウンディングボックスの設定方法を示す説明図である。
【図7】 バウンディングボックスの設定状態を示す二分木である。
【図8】 バウンディングボックスの設定方法を示す説明図である。
【図9】 バウンディングボックスの設定状態を示す二分木である。
【符号の説明】
2…画像生成装置、4…CPU、6…ROM、8…RAM、10…VRAM、12…IF、14…バス、16…表示装置、18…接続ケーブル。
Claims (9)
- 視点からスクリーン上の点を通って更に延びる光線と複数の物体要素からなる3次元物体との交点を求め、該交点の光の状態を算出して前記スクリーン上の点の色を決定する光線追跡法を用いて2次元画像を生成する画像生成装置において、
前記物体要素の個数差が1又は0になるように重複なく前記物体要素を2つのグループに分け、各グループに対して前記物体要素が内包されるようにバウンディングボリュームを設定する設定処理を実行するバウンディングボリューム設定手段と、
該バウンディングボリューム設定手段によって前記設定処理が実行されると、前記バウンディングボリュームと前記光線とが交差するか否かの交差判定を実行する交差判定手段と、
該交差判定手段が実行した前記交差判定の判定結果が、前記バウンディングボリュームと前記光線とが交差するという判定結果であった場合、前記バウンディングボリュームに内包される前記物体要素に対して前記光線との交点を求める交点算出処理を実行する交点算出手段と、
を備えることを特徴とする画像生成装置。 - 請求項1に記載の画像生成装置において、
前記バウンディングボリューム設定手段は、前記交差判定手段が実行した前記交差判定の判定結果が前記バウンディングボリュームと前記光線とが交差するという判定結果であったバウンディングボリュームに対して、該バウンディングボリュームに含まれる前記物体要素の数が1になるまで前記設定処理を再帰的に実行し、
前記交点算出手段は、前記グループに含まれる前記物体要素の数が1になったときに前記交点算出処理を実行することを特徴とする画像生成装置。 - 請求項1に記載の画像生成装置において、
前記バウンディングボリューム設定手段は、前記交差判定手段が実行した前記交差判定の判定結果が前記バウンディングボリュームと前記光線とが交差するという判定結果であったバウンディングボリュームに対して、該バウンディングボリュームに含まれる前記物体要素の数が2以上の定数n以下になるまで前記設定処理を再帰的に実行し、
前記交点算出手段は、前記グループに含まれる前記物体要素の数が2以上の定数n以下になったときに前記交点算出処理を実行することを特徴とする画像生成装置。 - 請求項2又は請求項3に記載の画像生成装置において、
更に、前記バウンディングボリューム設定手段が実行する前記設定処理によって分けられた前記グループをノードとする二分木データ構造を用いて前記各グループに属する前記物体要素の情報を管理する管理手段を備え、
前記バウンディングボリューム設定手段、前記交差判定手段及び前記交点算出手段は、前記管理手段から前記情報を取得し、該情報に基づいて各々前記設定処理、前記交差判定及び前記交点算出処理を実行することを特徴とする画像生成装置。 - 請求項1から請求項4の何れかに記載の画像生成装置において、
前記バウンディングボリューム設定手段は、前記バウンディングボリュームとして直方体の形状を有し各辺がXYZ直交座標系における各軸と平行であるバウンディングボックスを用い、前記設定処理の中で前記物体要素を2つのグループに分ける際に、まず当該物体要素を全て含む前記バウンディングボックスを設定し、該バウンディングボックスについてX軸方向・Y軸方向・Z軸方向の何れか最も長い方向を2分するように前記物体要素を2つのグループに分けることを特徴とする画像生成装置。 - 請求項1から請求項4の何れかに記載の画像生成装置において、
前記バウンディングボリューム設定手段は、前記バウンディングボリュームとして直方体の形状を有し各辺がXYZ直交座標系における各軸と平行であるバウンディングボックスを用い、前記設定処理の中で前記物体要素を2つのグループに分ける際に、まず前記各物体要素の重心の分布をX軸方向・Y軸方向・Z軸方向に関して調べ、最も広い範囲に分布する軸方向に沿って重心の座標順に前記各物体要素をリストとして並べ、前記物体要素の数が偶数である場合は前記リストの中央で2つのグループに分割(偶数分割)し、前記物体の要素が奇数である場合は前記リストの中央に位置する前記物体要素(中央物体要素)を境界とし該物体要素がいずれか一方のグループに含まれるように2つのグループに分割(奇数分割)することを特徴とする画像生成装置。 - 請求項6に記載の画像生成装置において、
前記物体要素のうち前記リストの両端に位置する物体要素を端部物体要素とし、前記バウンディングボリューム設定手段は、前記奇数分割の際に前記中央物体要素の重心の座標から2つの前記端部物体要素の重心の座標までの距離をそれぞれ求め、前記中央物体要素からの距離が近い方の前記端部物体要素が含まれるグループに前記中央物体要素を含めることを特徴とする画像生成装置。 - 請求項6又は請求項7に記載の画像生成装置において、
バウンディングボックス設定手段は、物体要素の重心の替わりに当該物体要素のみを含むバウンディングボックスの中心を用いることを特徴とする画像生成装置。 - コンピュータを、請求項1から請求項8の何れかに記載の画像生成装置を構成する各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002072301A JP3931701B2 (ja) | 2002-03-15 | 2002-03-15 | 画像生成装置及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002072301A JP3931701B2 (ja) | 2002-03-15 | 2002-03-15 | 画像生成装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003271988A JP2003271988A (ja) | 2003-09-26 |
JP3931701B2 true JP3931701B2 (ja) | 2007-06-20 |
Family
ID=29202335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002072301A Expired - Lifetime JP3931701B2 (ja) | 2002-03-15 | 2002-03-15 | 画像生成装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3931701B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4972642B2 (ja) * | 2005-06-23 | 2012-07-11 | メンタル イメージス, ゲーエムベーハー | 高精度の実時間レイトレーシング |
WO2007124363A2 (en) * | 2006-04-19 | 2007-11-01 | Mental Images Gmbh | Instant ray tracing |
KR100903777B1 (ko) | 2007-08-24 | 2009-06-19 | 연세대학교 산학협력단 | 3차원 광선 추적 시스템에서 적응형 다중 계층 케이디-트리구조 알고리즘을 이용한 광선 추적 방법 및 장치 |
JP4947376B2 (ja) | 2007-12-26 | 2012-06-06 | アイシン・エィ・ダブリュ株式会社 | 3次元データ処理装置、3次元画像生成装置、ナビゲーション装置及び3次元データ処理プログラム |
JP4920775B2 (ja) * | 2010-07-08 | 2012-04-18 | 株式会社スクウェア・エニックス | 画像生成装置及び画像生成プログラム |
CN107803831B (zh) * | 2017-09-27 | 2019-12-31 | 杭州新松机器人自动化有限公司 | 一种aoaae层次包围盒碰撞检测方法 |
CN112872114B (zh) * | 2021-02-20 | 2022-03-29 | 南京航空航天大学 | 一种钣金折弯过程三维干涉检测方法 |
-
2002
- 2002-03-15 JP JP2002072301A patent/JP3931701B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2003271988A (ja) | 2003-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6952204B2 (en) | 3D computer modelling apparatus | |
CN111340928B (zh) | 一种结合光线跟踪的Web端实时混合渲染方法、装置及计算机设备 | |
KR100889602B1 (ko) | 광선 추적을 위한 광선-삼각형 충돌 처리 방법 및 장치 | |
JP4902748B2 (ja) | 階層型オクルージョンカリングを使用するコンピュータグラフィックシャドウボリューム | |
JP4064339B2 (ja) | 描画処理装置、描画処理方法および描画処理プログラム | |
JP2003085586A (ja) | 画像表示装置、画像表示方法、情報記憶媒体および画像表示プログラム | |
CN108154553A (zh) | 一种三维模型与监控视频的无缝融合方法及装置 | |
JP2002304637A (ja) | 透明オブジェクトのリアルタイムな影を作成するためのシステムおよび方法 | |
US7825928B2 (en) | Image processing device and image processing method for rendering three-dimensional objects | |
JP3931701B2 (ja) | 画像生成装置及びプログラム | |
JP5372241B2 (ja) | 画像表示装置 | |
CN111009033A (zh) | 一种基于OpenGL的病灶区域的可视化方法和系统 | |
JP3629243B2 (ja) | モデリング時の距離成分を用いてレンダリング陰影処理を行う画像処理装置とその方法 | |
KR101661166B1 (ko) | 3차원 영상 시스템에서 광선 추적 방법 및 장치 | |
JP4847226B2 (ja) | 画像生成装置 | |
JPH08123835A (ja) | 形状設計支援装置 | |
WO2019225734A1 (ja) | レンダリング装置、学習装置、レンダリング方法及びプログラム | |
JPH09305791A (ja) | 立体画像生成装置および立体画像生成方法 | |
JP4920775B2 (ja) | 画像生成装置及び画像生成プログラム | |
e Silva et al. | Efficient hpr-based rendering of point clouds | |
JP3867071B2 (ja) | 画像処理装置、画像処理方法 | |
JP2019046080A (ja) | 情報処理装置、方法及びプログラム | |
JP3931691B2 (ja) | 画像生成装置及びプログラム | |
US11861785B2 (en) | Generation of tight world space bounding regions | |
JP7429496B2 (ja) | 画像処理装置及び画像処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040506 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070213 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070220 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070305 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100323 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110323 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120323 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120323 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130323 Year of fee payment: 6 |