(57)【要約】【課題】三次元仮想空間に定義された対象物が楕円体であってもカリングにおける楕円体と視錐体の交差判定を行うことを可能とすること。【解決手段】タイルベースカリングにおける各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定を行う交差判定手法であり、対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮処理を行って、伸縮処理後の球体の座標情報と伸縮処理後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行うようにした。【選択図】図３
2018169875.tif 000002
【特許請求の範囲】
【請求項１】
三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定をコンピュータに実行させる交差判定プログラムであって、
判定対象の視錐体の空間座標を取得する視錐体座標取得処理と、
判定対象の対象物の空間座標を取得する対象物座標取得処理と、
前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮処理と、
伸縮処理後の球体の座標情報と伸縮処理後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定処理と
をコンピュータに実行させる交差判定プログラム。
【請求項２】
伸縮処理の後、視錐体の底面が計算上の奥行方向軸に垂直となるように視錐体及び球体を視点を中心として回転させる回転処理を実行してから交差判定処理を行うようにした
請求項１記載の交差判定プログラム。
【請求項３】
前記回転処理において、視錐体の底面を構成する何れか一辺が奥行方向軸に垂直な平面における縦軸又は横軸と平行となるように視錐体及び球体を視点を中心として回転させるようにした
請求項２記載の交差判定プログラム。
【請求項４】
三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定をコンピュータに実行させる交差判定プログラムであって、
判定対象の視錐体の空間座標を取得する視錐体座標取得処理と、
判定対象の対象物の空間座標を取得する対象物座標取得処理と、
前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮処理と、
視錐体を内包する軸平行境界ボックスを設定する軸平行境界ボックス設定処理と、
伸縮処理後の球体の座標情報と軸平行境界ボックスの座標情報とを用いて球体と軸平行境界ボックスの交差判定を行って判定結果を出力する交差判定処理と
をコンピュータに実行させる交差判定プログラム。
【請求項５】
伸縮処理の後、視錐体の底面が計算上の奥行方向軸に垂直となるように視錐体及び球体を視点を中心として回転させる回転処理を実行してから軸平行境界ボックス設定処理を行うようにした
請求項４記載の交差判定プログラム。
【請求項６】
前記回転処理において、視錐体の底面を構成する何れか一辺が奥行方向軸に垂直な平面における縦軸又は横軸と平行となるように視錐体及び球体を視点を中心として回転させるようにした
請求項５記載の交差判定プログラム。
【請求項７】
三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定を行うための交差判定方法であって、
判定対象の視錐体の空間座標を取得する視錐体座標取得手順と、
判定対象の対象物の空間座標を取得する対象物座標取得手順と、
前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮手順と、
伸縮手順後の球体の座標情報と伸縮手順後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定手順と
を含む交差判定方法。
【請求項８】
三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定を実行する交差判定装置であって、
判定対象の視錐体の空間座標を取得する視錐体座標取得手段と、
判定対象の対象物の空間座標を取得する対象物座標取得手段と、
前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮手段と、
伸縮手段によって伸縮後の球体の座標情報と伸縮後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定手段と
を具備した交差判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態の少なくとも１つは、描画するシーンを複数の視錐体に分割した場合の各視錐体が描画シーンに配置された対象物と交差するか否かの判定を行うための交差判定プログラム、交差判定方法及び交差判定装置に関する。
【背景技術】
【０００２】
近年、グラフィックス描画の分野では、より現実に近いグラフィックス表現を行うために大域照明（グローバルイルミネーション）の適用が行われている。グローバルイルミネーションに係る演算は、１つの点について様々な光源からの光路を考慮して演算を行うため、全ての光路について演算を行おうと思うと演算量が膨大となる。リアルタイムレンダリングの分野では、リアルタイムに演算を行う必要があることから時間的な制約が存在し、写実的なグラフィックスを目指しつつも演算量を低減する必要があるという課題がある。
【０００３】
演算量を低減するための方法として、ライトカリングが行われている。ライトカリングは、三次元仮想空間において光源からの光の影響範囲を所定範囲に限定し、所定範囲の外の点については光源の影響を無視することで演算量を低減させるという手法である。
【０００４】
ライトカリングの手法の１つとして、タイルベースライトカリング（Tile-based Light Culling）が存在する。タイルベースライトカリングは、描画画面を複数のタイルに分割して各タイルごとに視錐体（frustum）を設定して、視錐体と光源の影響範囲との間で交差判定を行う。ここで、交差判定とは、視錐体と光源の影響範囲とが重なる部分が存在するか否かを判定することである。視錐体と交差している光源についてはタイル内の描画点の演算時に光源からの影響を演算し、視錐体と交差していない光源についてはカリングして演算を省略するものである。具体的には、対象物としての光源の影響範囲は球体（bounding sphere）で表現されるため、球体と視錐体の交差判定によってライトカリングが行われる。タイルベースライトカリングを行っているものとしては、例えば、非特許文献１が挙げられる。
【０００５】
また、カリングの対象物は光源のみとは限らず、影響範囲を演算する必要のある対象物であれば、カリング処理を行う必要が生じる場合がある。例えば、非特許文献２においては、微粒子（particle）の影響範囲の演算について、タイルベースカリングを行うことが提案されている。
【０００６】
また、視錐体と球体との交差判定時に視錐体に軸平行境界ボックス（ＡＡＢＢ）を適用して演算量を低減させたものとしては、例えば、非特許文献３が挙げられる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Advanced Visual Effects With DirectX 11 & 12: Advancements in Tile-based Compute Rendering（http://www.gdcvault.com/play/1021764/Advanced-Visual-Effects-With-DirectX）
【非特許文献２】Advanced Visual Effects with DirectX 11: Compute-Based GPU Particle Systems（http://www.gdcvault.com/play/1020002/Advanced-Visual-Effects-with-DirectX）
【非特許文献３】STEWART J.: Compute-based tiled culling. In GPU Pro 6: Advanced Rendering Techniques. A K Peters/CRC Press, 2015, pp. 435-458. 1, 4
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、グローバルイルミネーションを行うにあたって、例えば、描画範囲外にある太陽等の光源からの光が壁面に当たって壁面及びその近辺が明るくなった状態などの間接照明を表現するために、仮想点光源（VPL：Virtual Point Light）が用いられている。壁面部分にVPLを多数配置することで壁面が太陽光を反射しているように見せるといった手法によって間接照明を表現している。このVPLの影響範囲については、従来は球体で影響範囲を表現していたが、鏡面反射の影響範囲については、球体よりも楕円体（bounding ellipsoid）で表現する方がより現実に近いグローバルイルミネーションを行えることが分かってきた。
【０００９】
しかし、従来のタイルベースカリングにおいては、対象物を球体ではなく楕円体で表現してカリングを行った例はなかった。仮に対象物を球体から楕円体にそのまま置き換えたとしても、楕円体と視錐体の交差判定の演算が複雑になってしまうことから演算量が増加して、リアルタイムレンダリングに支障が生じるおそれがある。
【００１０】
本発明の少なくとも１つの実施形態の目的は、上記問題を解決し、三次元仮想空間に定義された対象物が楕円体であってもカリングにおける楕円体と視錐体の交差判定を高速に行うことを可能とする交差判定プログラム、交差判定方法及び交差判定装置を提供することである。
【課題を解決するための手段】
【００１１】
非限定的な観点によると、本発明の一実施形態に係る交差判定プログラムは、三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定をコンピュータに実行させる交差判定プログラムであって、判定対象の視錐体の空間座標を取得する視錐体座標取得処理と、判定対象の対象物の空間座標を取得する対象物座標取得処理と、前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮処理と、伸縮処理後の球体の座標情報と伸縮処理後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定処理とをコンピュータに実行させることを特徴とする。
【００１２】
非限定的な観点によると、本発明の一実施形態に係る交差判定方法は、三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定を行うための交差判定方法であって、判定対象の視錐体の空間座標を取得する視錐体座標取得手順と、判定対象の対象物の空間座標を取得する対象物座標取得手順と、前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮手順と、伸縮手順後の球体の座標情報と伸縮手順後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定手順とを含むことを特徴とする。
【００１３】
非限定的な観点によると、本発明の一実施形態に係る交差判定装置は、三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定を実行する交差判定装置であって、判定対象の視錐体の空間座標を取得する視錐体座標取得手段と、判定対象の対象物の空間座標を取得する対象物座標取得手段と、前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮手段と、伸縮手段によって伸縮後の球体の座標情報と伸縮後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定手段とを具備したことを特徴とする。
【発明の効果】
【００１４】
本願の各実施形態により１または２以上の不足が解決される。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態の少なくとも一つに対応する交差判定装置の構成の例を示すブロック図である。
【図２】本発明の実施形態の少なくとも一つに対応する交差判定処理の例を示すフローチャートである。
【図３】対象物が楕円体である場合の視錐体と楕円体の配置の一例を表した平面図である。
【図４】図３における視錐体と楕円体について伸縮処理を行った場合の視錐体及び球体を表した平面図である。
【図５】図４における視錐体と楕円体について回転処理を行った場合の視錐体及び球体を表した平面図である。
【図６】本発明の実施形態の少なくとも一つに対応する交差判定装置の構成の例を示すブロック図である。
【図７】本発明の実施形態の少なくとも一つに対応する交差判定処理の例を示すフローチャートである。
【図８】楕円体に対して伸縮処理を行った後の状態を表す図４の視錐体と球体に対して軸平行境界ボックスを設定した様子を表した平面図である。
【図９】回転処理を行った後の状態を表す図５の視錐体と球体に対して軸平行境界ボックスを設定した様子を表した平面図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態の例について図面を参照して説明する。なお、以下で説明する各実施形態の例における各種構成要素は、矛盾等が生じない範囲で適宜組み合わせ可能である。また、ある実施形態の例として説明した内容については、他の実施形態においてその説明を省略している場合がある。また、各実施形態の特徴部分に関係しない動作や処理については、その内容を省略している場合がある。さらに、以下で説明する各種フローを構成する各種処理の順序は、処理内容に矛盾等が生じない範囲で順不同である。
【００１７】
［第１の実施形態］
図１は、本発明の一実施の形態における交差判定装置１０Ａの構成の例を示すブロック図である。図１に示す交差判定装置１０Ａは、専用マシンとして設計した装置であってもよいが、一般的なコンピュータによって実現可能なものであるものとする。この場合に、交差判定装置１０Ａは、一般的なコンピュータが通常備えているであろうＣＰＵ（Central Processing Unit：中央演算処理装置）、ＧＰＵ（Graphics Processing Unit：画像処理装置）、メモリ、ハードディスクドライブ等のストレージを具備しているものとする（図示省略）。また、これらの一般的なコンピュータを本例の交差判定装置１０Ａとして機能させるためにプログラムよって各種処理が実行されることは言うまでもない。
【００１８】
本発明に係る交差判定装置１０Ａが適用されるのは、描画画面を複数のタイルに分割してカリングの処理を行うタイルベースカリングにおける各タイルに対応した視錐体と対象物との交差判定処理である。ここで交差判定とは、視錐体と対象物の影響範囲とが重なる部分が存在するか否かを判定することである。なお、タイルベースカリングに限らず、三次元仮想空間を所定単位の領域に分割して処理を行うものであれば同様に適用できるものであり、例えば、三次元仮想空間をさらに細かく分割して処理を行うクラスタードシェーディング（clustered shading）についても本発明を適用可能である。また、カリングを行いたい対象物についてはどのようなものであってもよいが、以下においては、対象物が光源である場合のライトカリングを例として説明を行う。
【００１９】
三次元仮想空間に複数の光源が存在する場合、複数の光源からの影響を各描画点ごとに計算することが理想ではあるが、演算量が膨大となるため、複数の描画点を一纏まりにしたタイル（長方形）によって描画画面を複数に分割して、タイルごとに視錐体を設定して、視錐体が対象物としての光源と交差するか否かによって、タイル内の各描画点の演算時に光源からの影響を演算するか否かを決定する。各タイル内の描画点の深さ情報からタイルに対応して設定される視錐体の手前の面の大きさ及び座標位置と底面の大きさ及び座標位置が決定されるため、視錐体の形状が定まる。三次元仮想空間に複数の光源が配置される場合、各光源の影響範囲を決定するために境界ボリューム（bounding volume）が設定される。視錐体ごとに三次元仮想空間に存在する全ての対象物としての光源との間で交差判定を行って、交差した光源については、視錐体の描画点に対して影響がある可能性があると判断して、描画点ごとに正確に光源からの影響量を演算するようにする。すなわち、描画点に対して光源からの影響を計算する必要があるか否かを決定するために、光源と視錐体の交差判定を行う。従来は、境界ボリュームとして球体が用いられてきたが、本発明においては、境界ボリュームとして楕円体が適用された場合についての交差判定に特徴を有するものである。
【００２０】
図１に示すように、交差判定装置１０Ａは、視錐体座標取得部１１と、対象物座標取得部１２と、伸縮処理部１３と、回転処理部１４ａと、交差判定部１６ａとを具備している。
【００２１】
視錐体座標取得部１１は、判定対象の視錐体の空間座標を取得する機能を有する。視錐体は、空間の奥行方向軸であるＺ軸に垂直な四角形からなる上面とＺ軸に垂直な四角形からなる底面を有した角錐台であり、上面の４点の座標位置と底面の４点の座標位置によって位置が決定される。
【００２２】
対象物座標取得部１２は、判定対象の対象物の空間座標を取得する機能を有する。対象物が球体の場合には、中心座標と半径の情報によって位置が確定する。対象物が楕円体の場合には、中心座標と３つの軸の方向と、その半軸ａ、ｂ、ｃによって位置が確定する。
【００２３】
伸縮処理部１３は、対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる機能を有する。楕円体３つの軸の長さが異なる場合に、全ての軸を同一長さとするように、視錐体と楕円体が配置された空間全体を伸縮させることで、楕円体を球体へと変換する。視錐体を含む空間全体を同一比率で伸縮させることで、楕円体と視錐体の位置関係を崩すことなく球体と視錐体を変形したものに変化させる。さらに好ましくは、球体の半径が１となるように伸縮処理を行うことで、その後の交差判定処理の演算がより容易になる。
【００２４】
回転処理部１４ａは、伸縮処理後の球体と視錐体について、視錐体の底面が計算上の奥行方向軸に垂直となるように視錐体及び球体を回転させる機能を有する。交差判定の演算処理を容易にするために、視錐体の底面が奥行方向軸（Ｚ軸）に垂直、すなわちＸ−Ｙ平面と平行となるように回転処理を行う。
【００２５】
交差判定部１６ａは、球体の座標情報と視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する機能を有する。交差判定は、視錐体の各面と球体との間でそれぞれ判定を行い、何れか１つの面との間で交差していると判定された場合、視錐体と球体が交差していると判定する。交差判定の手法はどのようなものであってもよいが、例えば、面の垂直方向の距離を用いて行い、面の境界に関する判定は省略することが考えられる。つまり、各面において、Ｎ：法線ベクトル、Ｏ：面上の任意の点、Ｃ：球体の中心、Ｒ：球体の半径としたとき、面上の任意の点Ｏから球体の中心までのベクトルは（Ｃ−Ｏ）で表される。これを法線ベクトルＮとの間で内積を演算すると、面上の任意の点Ｏからの法線方向の距離が求められる。面上の任意の点Ｏからの法線方向の距離が球体の半径Ｒより小さい場合には、交差していると判定する。すなわち、面上の任意の点について｛Ｎ・（Ｃ−Ｏ）｝＜Ｒ（以下、交差判定式という）をひとつでも満たしていたら交差しているとみなす荒い交差判定とする。この球体と面との交差判定式は従来から既知の手法である。
【００２６】
次に、本例の交差判定装置１０Ａにおいて行われる交差判定処理の流れについて説明を行う。図２は、本発明の実施形態の少なくとも一つに対応する交差判定処理の例を示すフローチャートである。この図２に示すように、交差判定処理は、先ず、交差判定の判定対象である視錐体について三次元仮想空間における座標情報を取得する（ステップＳ１０１）。続いて、交差判定の判定対象である対象物について三次元仮想空間における座標情報を取得する（ステップＳ１０２）。
【００２７】
対象物が楕円体である場合、視錐体と楕円体の配置された空間全体について、楕円体が球体となるように伸縮処理を行う（ステップＳ１０３）。図３は、対象物が楕円体である場合の視錐体と楕円体の配置の一例を表した平面図である。この図３の状況の場合には、上記交差判定式をそのまま用いて交差判定を行うことができない。そこで、図３のように視錐体と楕円体の配置された空間全体について伸縮処理を行うことで楕円体を球体に変換する。図４は、図３における視錐体と楕円体について伸縮処理を行った場合の視錐体及び球体を表した平面図である。空間全体について伸縮処理を行う限りにおいては視錐体と楕円体の交差関係は、伸縮処理後の視錐体と球体においても引き継がれて交差関係が変化しないといえる。伸縮処理を行って楕円体を球体に変換することができれば、上記交差判定式を利用して交差判定を行うことが可能となる。なお、対象物が球体である場合については、半軸について最初からａ＝ｂ＝ｃの条件を満たした楕円体であるので、伸縮処理を行わずに次のステップに移行するだけである。
【００２８】
伸縮処理の後、視錐体の底面が計算上の奥行方向軸（Ｚ軸）に垂直となる、すなわち、Ｘ−Ｙ平面と平行となるように、視錐体及び球体を視点を中心として回転させる回転処理を実行する（ステップＳ１０４）。図５は、図４における視錐体と楕円体について回転処理を行った場合の視錐体及び球体を表した平面図である。図４における伸縮処理後の視錐体の状態でも交差判定処理は可能であるが、図５に示すように、視錐体の底面がＺ軸と垂直となるように回転処理を行うことによって、交差判定時の演算量を低減することが可能となる。というのも、視錐体と球体との交差判定を行うには、視錐体の各面と球との距離を計算する必要があり、上記交差判定式において説明した通り、各面の法線と球の中心との内積によって計算される。このとき深度面がＺ軸と垂直であれば、視錐体の上面と底面に関しては、距離の計算を法線や内積を行なわずに単純にＺ軸方向の距離によって置き換えることが可能となるため、計算量を小さくすることが出来る。
【００２９】
最後に、視錐体と球体との間で交差判定を行って判定結果を出力して（ステップＳ１０５）、交差判定処理を終了する。三次元仮想空間に複数の対象物が定義されている場合には、各対象物との間で当該交差判定処理を行う。全ての対象物と交差判定処理を終えたら、視錐体内の各描画点に対する対象物の影響を詳細に演算するが、その時、交差していると判定された対象物のみとの間で詳細な演算を行う。
【００３０】
以上のように、本例の交差判定装置１０Ａによれば、対象物が楕円体である場合であっても、伸縮処理を行うことで既知の交差判定式を適用可能となる。また、回転処理を行うことによって視錐体の上面と底面がＺ軸と垂直となり、単純にＺ軸方向の距離を用いて交差判定を行えるようになるため、演算量を低減することが可能となる。すなわち、対象物として楕円体を適用したとしても交差判定処理を高速に行うことが可能となるため、リアルタイムレンダリングにおいても適切に交差判定を行うことが可能となる。
【００３１】
［第２の実施形態］
図６は、本発明の一実施の形態における交差判定装置１０Ｂの構成の例を示すブロック図である。なお、第１の実施形態における交差判定装置１０Ａと同様の構成箇所については同一符号を付して説明を省略する。また、図６に示す交差判定装置１０Ｂが、専用マシンとして設計した装置であってもよいが、一般的なコンピュータによって実現可能なものである点についても、第１の実施形態と同様である。
【００３２】
回転処理部１４ｂは、伸縮処理後の球体と視錐体について、視錐体の底面が計算上の奥行方向軸に垂直となるように視錐体及び球体を回転させる機能を有する。交差判定の演算処理を容易にするために、視錐体の底面が奥行方向軸（Ｚ軸）に垂直、すなわちＸ−Ｙ平面と平行となるように回転処理を行う。また、回転処理部１４ｂは、視錐体の底面を構成する何れか一辺が奥行方向軸に垂直な平面における縦軸又は横軸と平行となるように視錐体及び球体を回転させる機能を有する。すなわち、視錐体の底面を構成する一辺がＸ−Ｙ平面のＸ軸又はＹ軸と平行となるように回転処理を行う。
【００３３】
軸平行境界ボックス設定部１５は、視錐体を内包する軸平行境界ボックスを設定する機能を有する。ここで、軸平行境界ボックスとは、ＡＡＢＢ（Axis-Aligned Bounding Box）とも呼ばれるものであり、Ｘ−Ｙ平面に平行な面、Ｘ−Ｚ平面に平行な面、及び、Ｙ−Ｚ平面に平行な面のみによって形成される直方体であり、視錐体を内包する大きさに設定される直方体である。視錐体がはみ出さずに内包される必要があり、条件を満たす直方体の中で最小サイズであることが好ましい。
【００３４】
交差判定部１６ｂは、球体の座標情報と軸平行境界ボックスの座標情報とを用いて球体と軸平行境界ボックスの交差判定を行って判定結果を出力する機能を有する。交差判定の手法はどのようなものであってもよいが、例えば、上記交差判定式を用いて行うものとする。また、交差判定の手法として、非特許文献１に記載されている判定法を用いることで、各面と球との間で交差判定を行うよりも高速に計算できる。
【００３５】
次に、本例の交差判定装置１０Ｂにおいて行われる交差判定処理の流れについて説明を行う。図７は、本発明の実施形態の少なくとも一つに対応する交差判定処理の例を示すフローチャートである。この図７に示すように、交差判定処理は、先ず、交差判定の判定対象である視錐体について三次元仮想空間における座標情報を取得する（ステップＳ２０１）。続いて、交差判定の判定対象である対象物について三次元仮想空間における座標情報を取得する（ステップＳ２０２）。
【００３６】
対象物が楕円体である場合、視錐体と楕円体の配置された空間全体について、楕円体が球体となるように伸縮処理を行う（ステップＳ２０３）。空間全体について伸縮処理を行う限りにおいては視錐体と楕円体の交差関係は、伸縮処理後の視錐体と球体においても引き継がれて交差関係が変化しないといえる。伸縮処理の後、視錐体の底面が計算上の奥行方向軸（Ｚ軸）に垂直となる、すなわち、Ｘ−Ｙ平面と平行となるように、視錐体及び球体を視点を中心として回転させる回転処理を実行する（ステップＳ２０４）。さらに、視錐体の底面の一辺がＸ軸又はＹ軸と平行となるように、視錐体及び球体を視点を中心として回転させる回転処理を実行する（ステップＳ２０５）。その後、回転処理後の視錐体を内包する軸平行境界ボックスを設定する（ステップＳ２０６）。最後に、軸平行境界ボックスと球体との間で交差判定を行って判定結果を出力して（ステップＳ２０７）、交差判定処理を終了する。三次元仮想空間に複数の対象物が定義されている場合には、各対象物との間で当該交差判定処理を行う。全ての対象物と交差判定処理を終えたら、視錐体内の各描画点に対する対象物の影響を詳細に演算するが、その時、交差していると判定された対象物のみとの間で詳細な演算を行う。
【００３７】
非特許文献１に示す通り軸平行境界ボックスを設定して交差判定を行う手法は従来から行われており、より演算量を低減することが可能となり有用である。ここで、図８は、楕円体に対して伸縮処理を行った後の状態を表す図４の視錐体と球体に対して軸平行境界ボックスを設定した様子を表した平面図である。この図８のように伸縮処理後の視錐体と球体に対して軸平行境界ボックスを設定した場合であっても、演算量の低減という効果は期待できる。しかし、本来の判定対象である視錐体が伸縮処理によって変形しているため、変形した視錐体を内包するように軸平行境界ボックスを設定すると、図８に示すように、元の視錐体に比較して体積の大きい軸平行境界ボックスを設定せざるを得ない。この場合、元の視錐体との間では交差していないのに、軸平行境界ボックスとの間では交差していると判定されてしまう偽陽性（false-positive）という判定ミスが生じる可能性が高まるという問題がある。
【００３８】
そこで、本例においては、伸縮処理の後、視錐体の底面が計算上の奥行方向軸（Ｚ軸）に垂直となる、すなわち、Ｘ−Ｙ平面と平行となるように、視錐体及び球体を視点を中心として回転させ、さらに、視錐体の底面の一辺がＸ軸又はＹ軸と平行となるように、視錐体及び球体を視点を中心として回転させる回転処理を実行する。図９は、回転処理を行った後の状態を表す図５の視錐体と球体に対して軸平行境界ボックスを設定した様子を表した平面図である。この図９に示すように、回転処理を行ってから軸平行境界ボックスを設定することで、視錐体と軸平行境界ボックスの体積差を小さくすることができるため、偽陽性と判定されてしまう可能性を低減することが可能となる。また、ＡＡＢＢの構築処理においても、視錐体の底面をＺ軸に垂直にすることによってＺ軸方向の境界を求める処理の計算量を抑えることができる。これはＺ軸の境界を調べるために８頂点の全てを調べる必要がなく、上面と底面の深度を代わりに用いることができるようになるためである。
【００３９】
以上のように、本例の交差判定装置１０Ｂによれば、対象物が楕円体である場合であっても、伸縮処理を行うことで既知の球体と視錐体の交差判定の関係に変換し、かつ、視錐体に対して軸平行境界ボックスを設定して、軸平行境界ボックスと球体の間で交差判定処理を行うようにしたので、演算量を低減することが可能となる。また、伸縮処理の後、回転処理を行ってから軸平行境界ボックスを設定するようにすることで、視錐体と軸平行境界ボックスの体積差を小さくすることができ、これによって偽陽性と判定されてしまう可能性を低減することが可能となる。また、この回転処理によって軸平行境界ボックスの構築に関わる計算量を低減することが可能となる。
【００４０】
以上に説明したように、本願の各実施形態により１または２以上の不足が解決される。なお、夫々の実施形態による効果は、非限定的な効果または効果の一例である。
【産業上の利用可能性】
【００４１】
本発明の実施形態の一つによれば、グラフィックス描画の分野において三次元仮想空間に定義される対象物の影響範囲の表現として楕円体を採用しても演算量を低減した交差判定を行うことが可能となるため、様々なグラフィックス描画において楕円体を用いた表現方法が増加してより好適な画像表現が可能となる。
【符号の説明】
【００４２】
１０Ａ、１０Ｂ        交差判定装置
１１              視錐体座標取得部
１２              対象物座標取得部
１３              伸縮処理部
１４ａ、１４ｂ        回転処理部
１５              軸平行境界ボックス設定部
１６ａ、１６ｂ        交差判定部
【図１】
2018169875.tif 000003
【図２】
2018169875.tif 000004
【図３】
2018169875.tif 000005
【図４】
2018169875.tif 000006
【図５】
2018169875.tif 000007
【図６】
2018169875.tif 000008
【図７】
2018169875.tif 000009
【図８】
2018169875.tif 000010
【図９】
2018169875.tif 000011