(57)【特許請求の範囲】
【請求項１】
視点からスクリーン上の点を通って更に延びる光線と複数の物体要素からなる３次元物体との交点を求め、該交点の光の状態を算出して前記スクリーン上の点の色を決定する光線追跡法を用いて２次元画像を生成する画像生成装置において、
前記物体要素の個数差が１又は０になるように重複なく前記物体要素を２つのグループに分け、各グループに対して前記物体要素が内包されるようにバウンディングボリュームを設定する設定処理を実行するバウンディングボリューム設定手段と、
該バウンディングボリューム設定手段によって前記設定処理が実行されると、前記バウンディングボリュームと前記光線とが交差するか否かの交差判定を実行する交差判定手段と、
該交差判定手段が実行した前記交差判定の判定結果が、前記バウンディングボリュームと前記光線とが交差するという判定結果であった場合、前記バウンディングボリュームに内包される前記物体要素に対して前記光線との交点を求める交点算出処理を実行する交点算出手段と、
を備えることを特徴とする画像生成装置。
【請求項２】
請求項１に記載の画像生成装置において、
前記バウンディングボリューム設定手段は、前記交差判定手段が実行した前記交差判定の判定結果が前記バウンディングボリュームと前記光線とが交差するという判定結果であったバウンディングボリュームに対して、該バウンディングボリュームに含まれる前記物体要素の数が１になるまで前記設定処理を再帰的に実行し、
前記交点算出手段は、前記グループに含まれる前記物体要素の数が１になったときに前記交点算出処理を実行することを特徴とする画像生成装置。
【請求項３】
請求項１に記載の画像生成装置において、
前記バウンディングボリューム設定手段は、前記交差判定手段が実行した前記交差判定の判定結果が前記バウンディングボリュームと前記光線とが交差するという判定結果であったバウンディングボリュームに対して、該バウンディングボリュームに含まれる前記物体要素の数が２以上の定数ｎ以下になるまで前記設定処理を再帰的に実行し、
前記交点算出手段は、前記グループに含まれる前記物体要素の数が２以上の定数ｎ以下になったときに前記交点算出処理を実行することを特徴とする画像生成装置。
【請求項４】
請求項２又は請求項３に記載の画像生成装置において、
更に、前記バウンディングボリューム設定手段が実行する前記設定処理によって分けられた前記グループをノードとする二分木データ構造を用いて前記各グループに属する前記物体要素の情報を管理する管理手段を備え、
前記バウンディングボリューム設定手段、前記交差判定手段及び前記交点算出手段は、前記管理手段から前記情報を取得し、該情報に基づいて各々前記設定処理、前記交差判定及び前記交点算出処理を実行することを特徴とする画像生成装置。
【請求項５】
請求項１から請求項４の何れかに記載の画像生成装置において、
前記バウンディングボリューム設定手段は、前記バウンディングボリュームとして直方体の形状を有し各辺がＸＹＺ直交座標系における各軸と平行であるバウンディングボックスを用い、前記設定処理の中で前記物体要素を２つのグループに分ける際に、まず当該物体要素を全て含む前記バウンディングボックスを設定し、該バウンディングボックスについてＸ軸方向・Ｙ軸方向・Ｚ軸方向の何れか最も長い方向を２分するように前記物体要素を２つのグループに分けることを特徴とする画像生成装置。
【請求項６】
請求項１から請求項４の何れかに記載の画像生成装置において、
前記バウンディングボリューム設定手段は、前記バウンディングボリュームとして直方体の形状を有し各辺がＸＹＺ直交座標系における各軸と平行であるバウンディングボックスを用い、前記設定処理の中で前記物体要素を２つのグループに分ける際に、まず前記各物体要素の重心の分布をＸ軸方向・Ｙ軸方向・Ｚ軸方向に関して調べ、最も広い範囲に分布する軸方向に沿って重心の座標順に前記各物体要素をリストとして並べ、前記物体要素の数が偶数である場合は前記リストの中央で２つのグループに分割（偶数分割）し、前記物体の要素が奇数である場合は前記リストの中央に位置する前記物体要素（中央物体要素）を境界とし該物体要素がいずれか一方のグループに含まれるように２つのグループに分割（奇数分割）することを特徴とする画像生成装置。
【請求項７】
請求項６に記載の画像生成装置において、
前記物体要素のうち前記リストの両端に位置する物体要素を端部物体要素とし、前記バウンディングボリューム設定手段は、前記奇数分割の際に前記中央物体要素の重心の座標から２つの前記端部物体要素の重心の座標までの距離をそれぞれ求め、前記中央物体要素からの距離が近い方の前記端部物体要素が含まれるグループに前記中央物体要素を含めることを特徴とする画像生成装置。
【請求項８】
請求項６又は請求項７に記載の画像生成装置において、
バウンディングボックス設定手段は、物体要素の重心の替わりに当該物体要素のみを含むバウンディングボックスの中心を用いることを特徴とする画像生成装置。
【請求項９】
コンピュータを、請求項１から請求項８の何れかに記載の画像生成装置を構成する各手段として機能させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、光線追跡法を用いた画像生成装置等に関する。
【０００２】
【従来の技術及び発明が解決しようとする課題】
光線追跡法は、視点から物体の方向に向かって画像を追跡し、光線が物体と交差すればその交点における物体の光の状態を求め、それを画像面（スクリーン）に投影させて２次元の画像を生成する手法である。この手法は光線と物体との交点を求める交点計算に非常に時間がかかるため、様々な高速化方法が考え出されている。その高速化方法の一つとしてバウンディングボリュームを用いる方法がある。
【０００３】
バウンディングボリュームは球体や直方体（この場合を特に「バウンディングボックス」と言う）の形状を有し、１又は複数の物体要素を内包する。光線と物体要素との交点を求める前にバウンディングボリュームと光線とが交差するか否かを判定し、バウンディングボリュームと光線とが交差する場合のみ光線と物体要素との交点を求めるようにして、不要な交点計算を減らす。尚、このバウンディングボリュームを用いる場合は、階層的にバウンディングボリュームを設定することも行われている。
【０００４】
以下に従来のバウンディングボリュームの設定方法について説明する。尚、ここではバウンディングボリュームとしてバウンディングボックスを用い、２次元モデルで代用して説明する。
図６は、バウンディングボックスの設定方法を示す説明図である。図６（１）において物体Ａは画像生成の対象であり、物体Ａは符号ａから符号ｐで示される１６の物体要素から構成される。
【０００５】
第１段階では、物体Ａを内包するバウンディングボックス２０を定め、このバウンディングボックス２０と光線（図示せず）とが交差するか否かを判定する。バウンディングボックス２０と光線とが交差しない場合はバウンディングボックス２０に内包される物体Ａは光線と交差しないと判定する。一方、バウンディングボックス２０と光線とが交差する場合は物体Ａと光線とは交差する可能性がある。ここでは、バウンディングボックス２０と光線とは交差すると仮定して説明を進める。
【０００６】
第２段階では、バウンディングボックス２０の長い方の２辺に注目し、２辺の中点を結ぶ線分２０ａを境にしてバウンディングボックス２１とバウンディングボックス２２とを設定する。そして、バウンディングボックス２１に属する物体要素として、バウンディングボックス２１に完全に内包される物体要素ａ〜ｅ・ｈだけでなく、バウンディングボックス２１に一部だけ含まれる物体要素ｆ・ｇ・ｉ〜ｌ（網掛けで示す物体要素）もバウンディングボックス２１に属する物体要素として考える。一方、バウンディングボックス２２についても同様に、完全に内包される物体要素ｍ〜ｐだけでなく、一部だけ含まれる物体要素ｆ・ｇ・ｉ〜ｌ（網掛けで示す物体要素）もバウンディングボックス２２に属する物体要素として考える。
【０００７】
そして、バウンディングボックス２１・２２が光線と交差するか否かを判定する。バウンディングボックス２１が光線と交差する場合は物体要素ａ〜ｌは光線と交差する可能性があると判定し、バウンディングボックス２１が光線と交差しない場合は物体要素ａ〜ｌは光線と交差しないと判定する。同様にして、バウンディングボックス２２が光線と交差する場合は物体要素ｆ・ｇ・ｉ〜ｐは光線と交差する可能性があると判定し、バウンディングボックス２１が光線と交差しない場合は物体要素ｆ・ｇ・ｉ〜ｐは光線と交差しないと判定する。尚、両方の判定が矛盾する物体要素については、光線と交差する可能性があると判断する。ここでは、バウンディングボックス２１・２２は光線と交差すると仮定して説明を進める。
【０００８】
第３段階として、図６（２）に示すようにバウンディングボックス２１に属する物体要素に注目し、バウンディングボックス２１の長い方の２辺の中点を結ぶ線分２１ａを境にしてバウンディングボックス２３とバウンディングボックス２４とを設定する。そして、バウンディングボックス２３に属する物体要素として物体要素ａ〜ｄ・ｆ・ｇ・ｉ・ｊとする。一方、バウンディングボックス２４に属する物体要素として物体要素ａ〜ｅ・ｈ・ｉ・ｋ・ｌとを考える。
【０００９】
そして、バウンディングボックス２３・２４が光線と交差するか否かを判定する。バウンディングボックス２３が光線と交差する場合は物体要素ａ〜ｄ・ｆ・ｇ・ｉ・ｊは光線と交差する可能性があると判定し、バウンディングボックス２３が光線と交差しない場合は物体要素ａ〜ｄ・ｆ・ｇ・ｉ・ｊは光線と交差しないと判定する。同様に、バウンディングボックス２４が光線と交差する場合は物体要素ａ〜ｅ・ｈ・ｉ・ｋ・ｌは光線と交差する可能性があると判定し、バウンディングボックス２４が光線と交差しない場合は物体要素ａ〜ｅ・ｈ・ｉ・ｋ・ｌは光線と交差しないと判定する。尚、両方の判定が矛盾している物体要素については、光線と交差する可能性があると判断する。
【００１０】
バウンディングボックス２２についても同様の処理を行うが説明は省略する。このようにして、第４段階以降、所定の段階まで同様の処理を続ける。この様子を２分木を用いて示すと図７のようになる。設定したバウンディングボックスは光線と全て交差したとし、第６段階まで行った。白塗りの丸は物体要素を有するバウンディングボックスを表し、黒塗りの丸は物体要素を有しないバウンディングボックスを表す。特に、英字の入っている白塗りの丸は物体要素を一つだけ有するバウンディングボックスを表し、その英字は物体要素に対応する。
【００１１】
本例は、バウンディングボックスを等分して２つの新たなバウンディングボックスを設定し、そのバウンディングボックス両方にかかる物体要素については、両バウンディングボックスそれぞれに便宜的に属するようにしている点が特徴である。
【００１２】
次に、他の従来例について説明する。図８に示すように、第１段階で物体Ａを内包するようにバウンディングボックス４０を定め、第２段階では次に述べるようなバウンディングボックス４１・４２を定める。バウンディングボックス４０の長い方の２辺の中点を結ぶ線分を境界線４０ａにして２つのグループに分ける。境界線４０ａにかかる物体要素をどちらか一方のグループに属するようにし、それぞれのグループの物体要素を完全に内包するようにバウンディングボックス４１・４２を設定する。本例では、バウンディングボックス４１に物体要素ａ〜ｉ（網掛けで示す物体要素）を含めるようにし、バウンディングボックス４２に物体要素ｊ〜ｐを含めるようにした。そして、バウンディングボックス４１・４２共に光線と交差すると仮定する。
【００１３】
続いて第３段階で、バウンディングボックス４１に内包される物体要素ａ〜ｉに注目し、次に述べるようなバウンディングボックス４３・４４を定める。バウンディングボックス４１の長い方の２辺の中点を結ぶ線分を境界線４１ａにして２つのグループに分ける。境界線４１ａにかかる物体要素をどちらか一方のグループに属するようにし、それぞれのグループの物体要素を完全に内包するようにバウンディングボックス４３・４４を設定する。本例では、バウンディングボックス４３に物体要素ｂ・ｄ・ｆ・ｇ（網掛けで示す物体要素）を含めるようにし、バウンディングボックス４４に物体要素ａ・ｃ・ｅ・ｈ・ｉを含めるようにした。
【００１４】
バウンディングボックス４２についても同様の処理を行うが説明は省略する。このようにして、第４段階以降、所定の段階まで同様の処理を続ける。この様様子を２分木を用いて例示すると図９のようになる。尚、設定したバウンディングボックスは全て光線と交差したとし、第６段階までにすべてのバウンディングボックスが物体要素を一つだけ内包する状態となる。
【００１５】
本例は、バウンディングボックスを等分して物体要素を２つのグループに分け、その際に境界線にかかる物体要素については、どちらか一方のグループに属するようにする。そして、それぞれのグループの物体要素を完全に内包するようにバウンディングボックスを設定する点が特徴である。
【００１６】
以上説明したような従来の方法を用いた画像生成装置は、物体要素を重複して扱うため結果的に計算量が多くなるという問題や、バウンディングボックスに属する物体要素が１つだけになるまで分割することが不可能な場合が生じるといった問題があった。また、二分木で表現した場合にバランス木にならないため、バランス木に比べて計算時間を要するという問題もあった。
【００１７】
本発明はこうした問題に鑑み為されたものであり、物体要素を適切なグループに分けてバウンディングボックスを設定し、画像を生成するまでの時間が短縮された画像生成装置を提供することを目的とする。
【００１８】
【課題を解決するための手段及び発明の効果】
上記目的を達成するために為された請求項１に記載の画像生成装置は、バウンディングボリューム設定手段が、設定処理（物体要素の個数差が１又は０になるように重複なく物体要素を２つのグループに分け、各グループに対して物体要素が内包されるようにバウンディングボリュームを設定する処理）を実行する。そして、バウンディングボリューム設定手段によって設定処理が実行されると、交差判定手段が交差判定（バウンディングボリュームと光線とが交差するか否かを判定）を実行する。その交差判定の判定結果がバウンディングボリュームと光線とが交差するという判定結果であった場合、交点算出手段が交点算出処理（バウンディングボリュームに内包される物体要素に対して光線との交点を求める処理）を実行する。この求められた交点における光の状態を算出して２次元画像が生成される。
【００１９】
このため、２つのバウンディングボリュームの両方に重複して含まれる物体要素は無く、それぞれに含まれる物体要素の数の差も０又は１となる。したがって、２つのバウンディングボリュームに含まれる物体要素の数に偏りがないため、光線と交差しないと判定される物体要素の数も平均化される。その結果、画像生成が効率的に行われ、画像生成にかかる時間を短縮できる。
【００２０】
また、バウンディングボリューム設定手段が実行する設定処理は１度だけであってもよいが、請求項２に記載の画像生成装置のように、バウンディングボリューム設定手段は、交差判定手段が実行した交差判定の判定結果がバウンディングボリュームと光線とが交差するという判定結果であったバウンディングボリュームに対して、そのバウンディングボリュームに含まれる物体要素の数が１になるまで設定処理を再帰的に実行するようにしてもよい。そして、その場合は交点算出手段は、グループに含まれる物体要素の数が１になったときに交点算出処理を実行すればよい。
【００２１】
このように、バウンディングボリューム設定手段が再帰的に設定処理を実行することによって、光線と交差しない物体要素に対して交点計算を行うことをより避けられる。したがって、画像生成装置が画像生成にかかる時間を短縮できる。尚、バウンディングボリューム設定手段は、設定する２つのバウンディングボリュームに含まれる物体要素の数が１になるまで再帰的に設定処理を行っても良いが、画像生成を行う対象の物体によってはバウンディングボリュームに含まれる物体要素の数が１になるまで設定処理を行うと、設定処理にかかるトータルの計算量が増大するため、設定処理を再帰的に行う意味が薄れる場合もある。そのため、請求項３に記載の画像生成装置のように、バウンディングボリューム設定手段は、交差判定手段が実行した交差判定の判定結果がバウンディングボリュームと光線とが交差するという判定結果であったバウンディングボリュームに対して、そのバウンディングボリュームに含まれる物体要素の数が２以上の定数ｎ以下になるまで設定処理を再帰的に実行するようにしてもよい。そして、その場合は交点算出手段は、グループに含まれる物体要素の数が２以上の定数ｎ以下になったときに交点算出処理を実行すればよい。
【００２２】
このようにすれば、対象の物体要素の個数が定数ｎ以下になったらバウンディングボリューム設定手段は設定処理を停止するため、不毛に計算量を増大させることを防げる。尚、この定数ｎは、例えば実験によって定めることが考えられる。その場合、バウンディングボリューム設定手段が設定処理を行うことによって増大する計算量と、設定処理を行うことによって光線との交点計算を行う物体要素の数を減少できる割合と、を鑑みて設定する方法が考えられる。
【００２３】
また、請求項２及び請求項３に記載の画像生成装置におけるバウンディングボリューム設定手段が行う設定処理は、物体要素を再帰的に２つのグループに分けるため、請求項４に記載の画像生成装置のように、更に、管理手段が、バウンディングボリューム設定手段の実行する設定処理によって分けられたグループをノードとする二分木データ構造を用いて各グループに属する物体要素の情報を管理し、バウンディングボリューム設定手段、交差判定手段及び交点算出手段は、管理手段から情報を取得し、その情報に基づいて各々設定処理、交差判定及び交点算出処理を実行するとよい。
【００２４】
このように、管理手段が二分木構造を用いて情報を管理することによって、一般的な計算機で容易に物体要素の情報を管理できる。そして、バウンディングボリューム設定手段、交差判定手段及び交点算出手段が管理手段の管理する情報を利用することによって各手段の計算量が減少し、画像生成装置が画像生成にかかる時間を短縮できる。
【００２５】
また、請求項５に記載の画像生成装置のように、バウンディングボリューム設定手段は、バウンディングボリュームとして直方体の形状を有し各辺がＸＹＺ直交座標系における各軸と平行であるバウンディングボックスを用い、設定処理の中で物体要素を２つのグループに分ける際に、まず当該物体要素を全て含むバウンディングボックスを設定し、そのバウンディングボックスについてＸ軸方向・Ｙ軸方向・Ｚ軸方向の何れか最も長い方向を２分するように物体要素を２つのグループに分けるようにしてもよい。
【００２６】
このようにすると、バウンディングボックスの最も長い辺が分割されることになり、バウンディングボックスが光線と交差しない確率が増える。その結果、光線と交差しない物体要素を効率的に特定することができ、画像生成装置が画像生成にかかる時間を短縮できる。
【００２７】
また、請求項６に記載の画像生成装置のように、バウンディングボリューム設定手段は、バウンディングボリュームとして直方体の形状を有し各辺がＸＹＺ直交座標系における各軸と平行であるバウンディングボックスを用い、設定処理の中で物体要素を２つのグループに分ける際に、まず各物体要素の重心の分布をＸ軸方向・Ｙ軸方向・Ｚ軸方向に関して調べ、最も広い範囲に分布する軸方向に沿って重心の座標順に各物体要素をリストとして並べ、物体要素の数が偶数である場合はリストの中央で２つのグループに分割（偶数分割）し、物体の要素が奇数である場合はリストの中央に位置する物体要素（中央物体要素）を境界としその物体要素がいずれか一方のグループに含まれるように２つのグループに分割（奇数分割）するようにしてもよい。
【００２８】
このようにすれば、物体要素の位置関係が考慮され、重心位置の近い物体要素同士が集まったバウンディングボックスが設定される。このようにして設定されたバウンディングボックスは、物体要素の位置関係を考慮しない場合と比べ小さくなるため、交差判定手段が実行する交差判定によって光線と交差しないと判定される可能性が高い。したがって、画像生成装置が画像生成にかかる時間を短縮できる。
【００２９】
尚、請求項７に記載のように、物体要素のうちリストの両端に位置する物体要素を端部物体要素とし、バウンディングボリューム設定手段は、奇数分割の際に中央物体要素の重心の座標から２つの端部物体要素の重心の座標までの距離をそれぞれ求め、中央物体要素からの距離が近い方の端部物体要素が含まれるグループに中央物体要素を含めるようにすると更によい。
【００３０】
このようにすれば、さらにバウンディングボックスを小さく設定でき、交差判定手段が実行する交差判定によって光線とバウンディングボックスとは交差しないと判定される可能性が増える。したがって、光線と交差しない物体要素を効率的に特定することができ、画像生成装置が画像生成にかかる時間を短縮できる。
【００３１】
一方、請求項８に記載の画像生成装置のように、バウンディングボックス設定手段は、重心の替わりに当該物体要素のみを含むバウンディングボックスの中心を用いるようにしてもよい。このようにしても、同様の作用及び効果が得られる。
【００３２】
また、請求項１から請求項８の何れかに記載の画像生成装を構成する各手段は、ハードウェア上で実現されてもよいが、請求項９に示すように、コンピュータで機能させるためのプログラムとして実現させてもよい。
このようにプログラムで実現させれば、磁気ディスク、光磁気ディスク、メモリカード等のコンピュータが読み取り可能な記録媒体に記録し、必要に応じてコンピュータにロードして起動することにより用いることができる。また、ネットワークを介してロードして起動することにより用いることもできる。
【００３３】
【発明の実施の形態】
以下、本発明が適用された実施例について図面を用いて説明する。
図１は画像生成装置２の構成を示すブロック図である。画像生成装置２は主に、ＣＰＵ４と、ＲＯＭ６と、ＲＡＭ８と、ＶＲＡＭ（ビデオＲＡＭ）１０と、ＩＦ（インタフェース）１２とを備え、これらはバス１４で相互に接続されている。
【００３４】
ＣＰＵ１４は各種演算や制御を司り、特許請求の範囲におけるバウンディングボリューム設定手段、交差判定手段、交点算出手段及び管理手段として機能する。また、ＲＯＭ６には光線追跡法によって２次元画像を生成するためのプログラムが格納され、ＲＡＭ８はプログラムを実行するための一時領域として利用され、ＶＲＡＭ１０には生成結果の２次元画像が格納される。そして、ＶＲＡＭ１０に格納された２次元画像は、ＩＦ１２より接続ケーブル１８を介して表示装置１６に伝達され、表示装置１６で画像として表示される。
【００３５】
このように構成された画像生成装置２において、図示しない操作部を利用者が操作すると、ＣＰＵ４はＲＯＭ６からプログラムを読み込み、画像生成処理を開始する。
図２は画像生成処理を表すフローチャートである。本処理ではバウンディングボリュームとしてバウンディングボックスを使用し、そのバウンディングボックスの辺はＸＹＺ直交座標の座標軸に平行であるとする。
【００３６】
処理が開始されると、まずＳ１００で光線を設定する。これは、視点を起点とし、２次元画像が投影されると仮定するスクリーン上の一点（ピクセル）を通って更に延びる半直線を設定することである。尚、本ステップでは毎回異なるスクリーン上のピクセルを選択し、全てのピクセルを選択し終えた場合は、光線の設定は行わない。
【００３７】
続いてＳ１１０では、Ｓ１００において光線の設定が行われたか否かによって分岐する。光線の設定が行われた場合はＳ１２０に進み、光線の設定が行われなかった場合は画像生成処理を終了する。
Ｓ１２０では、後述する交差判定対象の設定を行う。
【００３８】
続くＳ１３０ではＳ１２０の結果に基づいて交差判定対象が存在するか否かを判定する。交差判定対象が存在する場合はＳ１４０に進み、交差判定対象が存在しない場合（例えばこの時点で全てのバウンディングボックスとの交差判定を終了してしまった場合等）は、Ｓ１００に戻って光線の設定を行う。
【００３９】
Ｓ１４０では、交差判定の対象がバウンディングボックスか否かを判定する。交差判定の対象がバウンディングボックスである場合はＳ１５０に進み、交差判定の対象がバウンディングボックスでない場合、すなわち物体要素である場合はＳ１８０に進む。
【００４０】
Ｓ１５０では、バウンディングボックス交差判定処理を実行する。これは、光線とバウンディングボックスとが交差するか否かを判定する処理である。
続くＳ１６０では、Ｓ１５０の結果に基づいて光線とバウンディングボックスとが交差するか否かによって分岐する。光線とバウンディングボックスとが交差しない場合はＳ１７０に進み、光線とバウンディングボックスとが交差する場合はＳ１２０に戻る。
【００４１】
Ｓ１７０では、当該バウンディングボックスを交差判定対象から除外する。そしてＳ１２０に戻る。
一方、Ｓ１８０では、光線と物体要素とが交差するか否かの判定を行う。その結果に応じてＳ１９０で分岐する。光線と物体要素とが交差する場合はＳ２００に進み、交差しない場合はＳ１００に戻る。
【００４２】
Ｓ２００では、光線と物体要素との交点を求め、その交点における光の状態を算出する。そして、射影されるスクリーン上のピクセルを設定しＶＲＡＭ１０に画像データを書き込む。書き込みが終了するとＳ１００に戻る。尚、ＶＲＡＭ１０に書き込まれた画像データは、ＩＦ１２及び接続ケーブル１８を介して逐一表示装置１６に送られる。
【００４３】
ここで、Ｓ１２０の交差判定対象の設定について詳しく説明する。図３は交差判定対象の設定を表すフローチャートである。本処理もＣＰＵ４で起動され実行される。尚、ＣＰＵ４は本処理の中でバウンディングボックスや物体要素を二分木構造のデータを用いて管理する。
【００４４】
まず、Ｓ３００で初回の実行か否かを判定する。初回の実行であればＳ４００に進み、初回の実行でなければＳ３１０に進む。
Ｓ４００では、物体を物体要素に分割する。続いてＳ４１０で各物体要素の重心を算出する。そして、Ｓ４２０で物体全体にバウンディングボックスを設定し、そのバウンディングボックスを選択して本処理を終了する。
【００４５】
一方、Ｓ３１０では交差判定を実行していないバウンディングボックスが存在するか否かを判定する。交差判定を実行していないバウンディングボックスが存在する場合はＳ３９０に進み、存在しない場合はＳ３２０に進む。
Ｓ３９０では、Ｓ３１０で交差判定を実行していないバウンディングボックスとして判定されたバウンディングボックスを選択する。そして本処理を終了する。
【００４６】
一方、Ｓ３２０では物体要素を２つ以上内包しているバウンディングボックスが存在するか否かを判定する。物体要素を２つ以上内包しているバウンディングボックスが存在する場合はＳ３３０に進み、存在しない場合はＳ３７０に進む。Ｓ３７０では、交差判定を実行していない物体要素が存在するか否かを判定する。交差判定を実行していない物体要素が存在する場合はＳ３８０に進み、存在しない場合は何も選択せずに本処理を終了する。
【００４７】
Ｓ３８０では、Ｓ３７０で交差判定を実行していないとして判定された物体要素を選択する。そして本処理を終了する。
一方、Ｓ３３０では、Ｓ３２０で分割可能と判定されたバウンディングボックスに含まれる物体要素の重心分布をＸ・Ｙ・Ｚ軸方向それぞれについて調べ、最も広く分布している軸を選択する。
【００４８】
続いてＳ３４０では、Ｓ３３０で選択された軸に沿って、重心の座標順に対象の物体要素をリストとして並べる。
続いてＳ３５０では、Ｓ３４０で並べられたリストをその中央で２分して物体要素を２つのグループに分ける。尚、グループに分ける物体要素の数が奇数である場合は、リストの中央に位置する物体要素とリストの両端に位置する２つの端部物体要素との空間上の距離をそれぞれ求め、近い方の端部物体要素が含まれるグループになるように中央に位置する物体要素を分ける（請求の範囲における奇数分割に相当する）。そしてそれぞれのグループにバウンディングボックスを設定する。
【００４９】
続いてＳ３６０では、Ｓ３５０で設定したバウンディングボックスの何れか一方を選択し、本処理を終了する。
交差判定対象の設定について説明したが、ここで、バウンディングボックスの設定の一例を具体的に示す。尚、従来技術の箇所で例に挙げた物体Ａを用い、Ｘ軸・Ｙ軸方向のみからなる２次元で説明する。
【００５０】
図４は、バウンディングボックスの設定方法を示す説明図である。図面の左右方向をＸ軸方向、上下方向をＹ軸方向とする。
第１段階で、物体Ａを内包するバウンディングボックス６０を定め（図３のＳ４２０に対応する）、このバウンディングボックス６０と光線（図示せず）とが交差するか否かを判定する。バウンディングボックス６０と光線とが交差しない場合はバウンディングボックス６０に内包される物体Ａは光線と交差しないと判定する。一方、バウンディングボックス６０と光線とが交差する場合は物体Ａと光線とは交差する可能性がある。ここでは説明のため、バウンディングボックス６０と光線とは交差すると仮定する。
【００５１】
第２段階で物体要素ａ〜ｐの重心の分布範囲を座標軸方向について調べる（図３のＳ３３０に対応する）。図４の物体Ａは紙面上で左右方向に重心の分布範囲が広いので、重心座標のＸ値を用いて物体要素ａ〜ｐを並べてリストを作成する（図３のＳ３４０に対応する）。次に、そのリストの中心で物体要素を二つのグループに分ける。本実施例では物体要素ａ〜ｈ（網掛けで示す物体要素）のグループと物体要素ｉ〜ｐのグループに分ける。そして、物体要素ａ〜ｈが内包されるようにバウンディングボックス６１を設定し、物体要素ｉ〜ｐが内包されるようにバウンディングボックス６２を設定する（図３のＳ３５０に対応する）。
【００５２】
続いてバウンディングボックス６１・６２が光線と交差するか否かを判定する。バウンディングボックス６１が光線と交差する場合は、物体要素ａ〜ｈは光線と交差する可能性があると判定し、バウンディングボックス６１が光線と交差しない場合は、物体要素ａ〜ｈは光線と交差しないと判定する。同様にして、バウンディングボックス６２が光線と交差する場合は物体要素ｉ〜ｐは光線と交差する可能性があると判定し、バウンディングボックス６２が光線と交差しない場合は物体要素ｉ〜ｐは光線と交差しないと判定する。
【００５３】
第３段階として、図４（２）に示すようにバウンディングボックス６１に属する物体要素に注目し、第２段階の時と同様にしてリストを作り、物体要素ａ〜ｈを２つのグループに分ける。本実施例では、物体要素ｂ・ｄ・ｇ・ｆ（網掛けで示す物体要素）のグループと、物体要素ａ・ｃ・ｅ・ｈのグループとに分ける。そして、物体要素ｂ・ｄ・ｇ・ｆを内包するようにバウンディングボックス６３を設定し、物体要素ａ・ｃ・ｅ・ｈを内包するようにバウンディングボックス６４を設定する。
【００５４】
続いてバウンディングボックス６３・６４が光線と交差するか否かを判定する。バウンディングボックス６３が光線と交差する場合は、物体要素ｂ・ｄ・ｆ・ｇは光線と交差する可能性があると判定し、バウンディングボックス６３が光線と交差しない場合は、物体要素ｂ・ｄ・ｆ・ｇは光線と交差しないと判定する。同様に、バウンディングボックス６４が光線と交差する場合は、物体要素ａ・ｃ・ｅ・ｈは光線と交差する可能性があると判定し、バウンディングボックス６４が光線と交差しない場合は、物体要素ａ・ｃ・ｅ・ｈは光線と交差しないと判定する。
【００５５】
バウンディングボックス６２についても同様の処理を行うが説明は省略する。このようにして、第４段階以降バウンディングボックスが設定可能な限り、すなわちバウンディングボックスに含まれる物体要素の数が１になるまで同様の処理を続ける。この様子を２分木を用いて例示すると図５のようになる。記号は従来技術の説明にて用いたものと同じである。尚、設定したバウンディングボックスは光線と全て交差したとし、第５段階でバウンディングボックスに含まれる物体要素の数が１になる。説明に用いた物体Ａは、構成する物体要素の数が１６であったため請求の範囲における偶数分割しか行われなかったが、分割対象の物体要素の数が奇数であった場合は奇数分割を行うことは言うまでもない。
【００５６】
したがって、本実施例の画像生成装置２においては、各段階で設定される２つのバウンディングボックスには重複して含まれる物体要素は無い。そして、それぞれのバウンディングボックスに含まれる物体要素の数の差も０又は１となるように設定される。このため、分割したバウンディングボックスに含まれる物体要素の数に偏りがないため、光線と交差しないと判定される物体要素の数も平均化される。また、物体要素の位置関係も考慮され、重心位置の近い物体要素同士が集まったバウンディングボックスが設定される。このようにして設定されたバウンディングボックスは、物体要素の位置関係を考慮しない場合と比べ小さくなるため、交差判定によって光線と交差しないと判定される可能性が高い。故に、画像生成にかかる時間を短縮できる。
【００５７】
以上、一実施例を説明したが、本発明は上記の実施例に限定されるものではなく種々の態様を取ることができる。例えば、上記実施例では物体要素の重心を用いてリストを作ったが、物体要素毎に当該物体要素のみを内包するバウンディングボックスを設定し、このバウンディングボックスの中心を用いてリストを作ってもよい。このようにすれば、物体要素の重心座標の算出が複雑な場合でも、バウンディングボックス設定できれば、比較的容易にリストを作成することができる。
【００５８】
また、上記実施例では第ｍ＋１段階のバウンディングボックスを設定する際に第ｍ段階のバウンディングボックスに内包される物体要素の重心に着目したが、第ｍ段階のバウンディングボックスの形状のみに着目し、そのバウンディングボックスの最も長い辺を２分するように第ｍ＋１段階のバウンディングボックスを設定してもよい。もちろん、この際も物体要素は重複なく差が１又は０になるようにする。
【００５９】
また、上記実施例ではバウンディングボックスに含まれる物体要素の数が１になるまで新たなバウンディングボックスを設定し続けたが、バウンディングボックスに含まれる物体要素の数が２以上の定数ｎ以下になったら、それ以上新たにバウンディングボックスを設定しないようにしてもよい。この定数ｎは、例えば実験によって定めることが考えられる。その場合、バウンディングボリューム設定手段が設定処理を行うことによって増大する計算量と、設定処理を行うことによって光線との交点計算を行う物体要素の数を減少できる割合と、を鑑みて設定する方法が考えられる。
【００６０】
また、上記実施例では交差判定対象の設定（図２のＳ１２０）の中でバウンディングボックスを設定し、交差判定対象の設定（Ｓ１２０）と交差判定処理（Ｓ１５０及びＳ１８０）とを繰り返し実行しているが、光線の設定（Ｓ１００）の前に全てのバウンディングボックスを設定しておき、交差判定対象の設定（Ｓ１２０）では単に交差判定を行う対象を選択するだけにしてもよい。このようにしても、上記実施例と同様の効果が得られる。
【図面の簡単な説明】
【図１】  画像生成装置の構成を表すブロック図である。
【図２】  画像生成処理を表すフローチャートである。
【図３】  交差判定対象の設定を表すフローチャートである。
【図４】  バウンディングボックスの設定方法を示す説明図である。
【図５】  バウンディングボックスの設定状態を示す二分木である。
【図６】  バウンディングボックスの設定方法を示す説明図である。
【図７】  バウンディングボックスの設定状態を示す二分木である。
【図８】  バウンディングボックスの設定方法を示す説明図である。
【図９】  バウンディングボックスの設定状態を示す二分木である。
【符号の説明】
２…画像生成装置、４…ＣＰＵ、６…ＲＯＭ、８…ＲＡＭ、１０…ＶＲＡＭ、１２…ＩＦ、１４…バス、１６…表示装置、１８…接続ケーブル。
【図１】
0003931701.tif 000002
【図２】
0003931701.tif 000003
【図３】
0003931701.tif 000004
【図４】
0003931701.tif 000005
【図５】
0003931701.tif 000006
【図６】
0003931701.tif 000007
【図７】
0003931701.tif 000008
【図８】
0003931701.tif 000009
【図９】
0003931701.tif 000010