(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6281006
(24)【登録日】2018年1月26日
(45)【発行日】2018年2月14日
(54)【発明の名称】交差判定プログラム、交差判定方法及び交差判定装置
(51)【国際特許分類】
G06T 15/30 20110101AFI20180205BHJP
【FI】
G06T15/30
【請求項の数】8
【全頁数】12
(21)【出願番号】特願2017-67594(P2017-67594)
(22)【出願日】2017年3月30日
【審査請求日】2017年4月3日
(73)【特許権者】
【識別番号】308033283
【氏名又は名称】株式会社スクウェア・エニックス
(74)【代理人】
【識別番号】100114720
【弁理士】
【氏名又は名称】須藤 浩
(74)【代理人】
【識別番号】100128749
【弁理士】
【氏名又は名称】海田 浩明
(74)【代理人】
【識別番号】100184583
【弁理士】
【氏名又は名称】上田 侑士
(74)【代理人】
【識別番号】100188662
【弁理士】
【氏名又は名称】浅見 浩二
(72)【発明者】
【氏名】徳吉 雄介
【審査官】
千葉 久博
(56)【参考文献】
【文献】
特開2005−353047(JP,A)
【文献】
特開2004−348702(JP,A)
【文献】
特開2000−222603(JP,A)
【文献】
特開平10−293862(JP,A)
【文献】
特開平8−293041(JP,A)
【文献】
米国特許出願公開第2015/0070353(US,A1)
【文献】
米国特許出願公開第2002/0171644(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00−15/87
G06T 19/00
(57)【特許請求の範囲】
【請求項1】
三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定をコンピュータに実行させる交差判定プログラムであって、
判定対象の視錐体の空間座標を取得する視錐体座標取得処理と、
判定対象の対象物の空間座標を取得する対象物座標取得処理と、
前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮処理と、
伸縮処理後の球体の座標情報と伸縮処理後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定処理と
をコンピュータに実行させる交差判定プログラム。
【請求項2】
伸縮処理の後、視錐体の底面が計算上の奥行方向軸に垂直となるように視錐体及び球体を視点を中心として回転させる回転処理を実行してから交差判定処理を行うようにした
請求項1記載の交差判定プログラム。
【請求項3】
前記回転処理において、視錐体の底面を構成する何れか一辺が奥行方向軸に垂直な平面における縦軸又は横軸と平行となるように視錐体及び球体を視点を中心として回転させるようにした
請求項2記載の交差判定プログラム。
【請求項4】
三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定をコンピュータに実行させる交差判定プログラムであって、
判定対象の視錐体の空間座標を取得する視錐体座標取得処理と、
判定対象の対象物の空間座標を取得する対象物座標取得処理と、
前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮処理と、
視錐体を内包する軸平行境界ボックスを設定する軸平行境界ボックス設定処理と、
伸縮処理後の球体の座標情報と軸平行境界ボックスの座標情報とを用いて球体と軸平行境界ボックスの交差判定を行って判定結果を出力する交差判定処理と
をコンピュータに実行させる交差判定プログラム。
【請求項5】
伸縮処理の後、視錐体の底面が計算上の奥行方向軸に垂直となるように視錐体及び球体を視点を中心として回転させる回転処理を実行してから軸平行境界ボックス設定処理を行うようにした
請求項4記載の交差判定プログラム。
【請求項6】
前記回転処理において、視錐体の底面を構成する何れか一辺が奥行方向軸に垂直な平面における縦軸又は横軸と平行となるように視錐体及び球体を視点を中心として回転させるようにした
請求項5記載の交差判定プログラム。
【請求項7】
三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定を行うための交差判定方法であって、
判定対象の視錐体の空間座標を取得する視錐体座標取得手順と、
判定対象の対象物の空間座標を取得する対象物座標取得手順と、
前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮手順と、
伸縮手順後の球体の座標情報と伸縮手順後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定手順と
を含む交差判定方法。
【請求項8】
三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定を実行する交差判定装置であって、
判定対象の視錐体の空間座標を取得する視錐体座標取得手段と、
判定対象の対象物の空間座標を取得する対象物座標取得手段と、
前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮手段と、
伸縮手段によって伸縮後の球体の座標情報と伸縮後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定手段と
を具備した交差判定装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態の少なくとも1つは、描画するシーンを複数の視錐体に分割した場合の各視錐体が描画シーンに配置された対象物と交差するか否かの判定を行うための交差判定プログラム、交差判定方法及び交差判定装置に関する。
【背景技術】
【0002】
近年、グラフィックス描画の分野では、より現実に近いグラフィックス表現を行うために大域照明(グローバルイルミネーション)の適用が行われている。グローバルイルミネーションに係る演算は、1つの点について様々な光源からの光路を考慮して演算を行うため、全ての光路について演算を行おうと思うと演算量が膨大となる。リアルタイムレンダリングの分野では、リアルタイムに演算を行う必要があることから時間的な制約が存在し、写実的なグラフィックスを目指しつつも演算量を低減する必要があるという課題がある。
【0003】
演算量を低減するための方法として、ライトカリングが行われている。ライトカリングは、三次元仮想空間において光源からの光の影響範囲を所定範囲に限定し、所定範囲の外の点については光源の影響を無視することで演算量を低減させるという手法である。
【0004】
ライトカリングの手法の1つとして、タイルベースライトカリング(Tile-based Light Culling)が存在する。タイルベースライトカリングは、描画画面を複数のタイルに分割して各タイルごとに視錐体(frustum)を設定して、視錐体と光源の影響範囲との間で交差判定を行う。ここで、交差判定とは、視錐体と光源の影響範囲とが重なる部分が存在するか否かを判定することである。視錐体と交差している光源についてはタイル内の描画点の演算時に光源からの影響を演算し、視錐体と交差していない光源についてはカリングして演算を省略するものである。具体的には、対象物としての光源の影響範囲は球体(bounding sphere)で表現されるため、球体と視錐体の交差判定によってライトカリングが行われる。タイルベースライトカリングを行っているものとしては、例えば、非特許文献1が挙げられる。
【0005】
また、カリングの対象物は光源のみとは限らず、影響範囲を演算する必要のある対象物であれば、カリング処理を行う必要が生じる場合がある。例えば、非特許文献2においては、微粒子(particle)の影響範囲の演算について、タイルベースカリングを行うことが提案されている。
【0006】
また、視錐体と球体との交差判定時に視錐体に軸平行境界ボックス(AABB)を適用して演算量を低減させたものとしては、例えば、非特許文献3が挙げられる。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】Advanced Visual Effects With DirectX 11 & 12: Advancements in Tile-based Compute Rendering(http://www.gdcvault.com/play/1021764/Advanced-Visual-Effects-With-DirectX)
【非特許文献2】Advanced Visual Effects with DirectX 11: Compute-Based GPU Particle Systems(http://www.gdcvault.com/play/1020002/Advanced-Visual-Effects-with-DirectX)
【非特許文献3】STEWART J.: Compute-based tiled culling. In GPU Pro 6: Advanced Rendering Techniques. A K Peters/CRC Press, 2015, pp. 435-458. 1, 4
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、グローバルイルミネーションを行うにあたって、例えば、描画範囲外にある太陽等の光源からの光が壁面に当たって壁面及びその近辺が明るくなった状態などの間接照明を表現するために、仮想点光源(VPL:Virtual Point Light)が用いられている。壁面部分にVPLを多数配置することで壁面が太陽光を反射しているように見せるといった手法によって間接照明を表現している。このVPLの影響範囲については、従来は球体で影響範囲を表現していたが、鏡面反射の影響範囲については、球体よりも楕円体(bounding ellipsoid)で表現する方がより現実に近いグローバルイルミネーションを行えることが分かってきた。
【0009】
しかし、従来のタイルベースカリングにおいては、対象物を球体ではなく楕円体で表現してカリングを行った例はなかった。仮に対象物を球体から楕円体にそのまま置き換えたとしても、楕円体と視錐体の交差判定の演算が複雑になってしまうことから演算量が増加して、リアルタイムレンダリングに支障が生じるおそれがある。
【0010】
本発明の少なくとも1つの実施形態の目的は、上記問題を解決し、三次元仮想空間に定義された対象物が楕円体であってもカリングにおける楕円体と視錐体の交差判定を高速に行うことを可能とする交差判定プログラム、交差判定方法及び交差判定装置を提供することである。
【課題を解決するための手段】
【0011】
非限定的な観点によると、本発明の一実施形態に係る交差判定プログラムは、三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定をコンピュータに実行させる交差判定プログラムであって、判定対象の視錐体の空間座標を取得する視錐体座標取得処理と、判定対象の対象物の空間座標を取得する対象物座標取得処理と、前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮処理と、伸縮処理後の球体の座標情報と伸縮処理後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定処理とをコンピュータに実行させることを特徴とする。
【0012】
非限定的な観点によると、本発明の一実施形態に係る交差判定方法は、三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定を行うための交差判定方法であって、判定対象の視錐体の空間座標を取得する視錐体座標取得手順と、判定対象の対象物の空間座標を取得する対象物座標取得手順と、前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮手順と、伸縮手順後の球体の座標情報と伸縮手順後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定手順とを含むことを特徴とする。
【0013】
非限定的な観点によると、本発明の一実施形態に係る交差判定装置は、三次元仮想空間に定義された対象物が描画画面の描画点に影響するか否かを判断してカリングを行うために、描画画面を複数の視錐体に分割し、各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定を実行する交差判定装置であって、判定対象の視錐体の空間座標を取得する視錐体座標取得手段と、判定対象の対象物の空間座標を取得する対象物座標取得手段と、前記対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮手段と、伸縮手段によって伸縮後の球体の座標情報と伸縮後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する交差判定手段とを具備したことを特徴とする。
【発明の効果】
【0014】
本願の各実施形態により1または2以上の不足が解決される。
【図面の簡単な説明】
【0015】
【
図1】本発明の実施形態の少なくとも一つに対応する交差判定装置の構成の例を示すブロック図である。
【
図2】本発明の実施形態の少なくとも一つに対応する交差判定処理の例を示すフローチャートである。
【
図3】対象物が楕円体である場合の視錐体と楕円体の配置の一例を表した平面図である。
【
図4】
図3における視錐体と楕円体について伸縮処理を行った場合の視錐体及び球体を表した平面図である。
【
図5】
図4における視錐体と楕円体について回転処理を行った場合の視錐体及び球体を表した平面図である。
【
図6】本発明の実施形態の少なくとも一つに対応する交差判定装置の構成の例を示すブロック図である。
【
図7】本発明の実施形態の少なくとも一つに対応する交差判定処理の例を示すフローチャートである。
【
図8】楕円体に対して伸縮処理を行った後の状態を表す
図4の視錐体と球体に対して軸平行境界ボックスを設定した様子を表した平面図である。
【
図9】回転処理を行った後の状態を表す
図5の視錐体と球体に対して軸平行境界ボックスを設定した様子を表した平面図である。
【発明を実施するための形態】
【0016】
以下、本発明の実施形態の例について図面を参照して説明する。なお、以下で説明する各実施形態の例における各種構成要素は、矛盾等が生じない範囲で適宜組み合わせ可能である。また、ある実施形態の例として説明した内容については、他の実施形態においてその説明を省略している場合がある。また、各実施形態の特徴部分に関係しない動作や処理については、その内容を省略している場合がある。さらに、以下で説明する各種フローを構成する各種処理の順序は、処理内容に矛盾等が生じない範囲で順不同である。
【0017】
[第1の実施形態]
図1は、本発明の一実施の形態における交差判定装置10Aの構成の例を示すブロック図である。
図1に示す交差判定装置10Aは、専用マシンとして設計した装置であってもよいが、一般的なコンピュータによって実現可能なものであるものとする。この場合に、交差判定装置10Aは、一般的なコンピュータが通常備えているであろうCPU(Central Processing Unit:中央演算処理装置)、GPU(Graphics Processing Unit:画像処理装置)、メモリ、ハードディスクドライブ等のストレージを具備しているものとする(図示省略)。また、これらの一般的なコンピュータを本例の交差判定装置10Aとして機能させるためにプログラムよって各種処理が実行されることは言うまでもない。
【0018】
本発明に係る交差判定装置10Aが適用されるのは、描画画面を複数のタイルに分割してカリングの処理を行うタイルベースカリングにおける各タイルに対応した視錐体と対象物との交差判定処理である。ここで交差判定とは、視錐体と対象物の影響範囲とが重なる部分が存在するか否かを判定することである。なお、タイルベースカリングに限らず、三次元仮想空間を所定単位の領域に分割して処理を行うものであれば同様に適用できるものであり、例えば、三次元仮想空間をさらに細かく分割して処理を行うクラスタードシェーディング(clustered shading)についても本発明を適用可能である。また、カリングを行いたい対象物についてはどのようなものであってもよいが、以下においては、対象物が光源である場合のライトカリングを例として説明を行う。
【0019】
三次元仮想空間に複数の光源が存在する場合、複数の光源からの影響を各描画点ごとに計算することが理想ではあるが、演算量が膨大となるため、複数の描画点を一纏まりにしたタイル(長方形)によって描画画面を複数に分割して、タイルごとに視錐体を設定して、視錐体が対象物としての光源と交差するか否かによって、タイル内の各描画点の演算時に光源からの影響を演算するか否かを決定する。各タイル内の描画点の深さ情報からタイルに対応して設定される視錐体の手前の面の大きさ及び座標位置と底面の大きさ及び座標位置が決定されるため、視錐体の形状が定まる。三次元仮想空間に複数の光源が配置される場合、各光源の影響範囲を決定するために境界ボリューム(bounding volume)が設定される。視錐体ごとに三次元仮想空間に存在する全ての対象物としての光源との間で交差判定を行って、交差した光源については、視錐体の描画点に対して影響がある可能性があると判断して、描画点ごとに正確に光源からの影響量を演算するようにする。すなわち、描画点に対して光源からの影響を計算する必要があるか否かを決定するために、光源と視錐体の交差判定を行う。従来は、境界ボリュームとして球体が用いられてきたが、本発明においては、境界ボリュームとして楕円体が適用された場合についての交差判定に特徴を有するものである。
【0020】
図1に示すように、交差判定装置10Aは、視錐体座標取得部11と、対象物座標取得部12と、伸縮処理部13と、回転処理部14aと、交差判定部16aとを具備している。
【0021】
視錐体座標取得部11は、判定対象の視錐体の空間座標を取得する機能を有する。視錐体は、空間の奥行方向軸であるZ軸に垂直な四角形からなる上面とZ軸に垂直な四角形からなる底面を有した角錐台であり、上面の4点の座標位置と底面の4点の座標位置によって位置が決定される。
【0022】
対象物座標取得部12は、判定対象の対象物の空間座標を取得する機能を有する。対象物が球体の場合には、中心座標と半径の情報によって位置が確定する。対象物が楕円体の場合には、中心座標と3つの軸の方向と、その半軸a、b、cによって位置が確定する。
【0023】
伸縮処理部13は、対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる機能を有する。楕円体3つの軸の長さが異なる場合に、全ての軸を同一長さとするように、視錐体と楕円体が配置された空間全体を伸縮させることで、楕円体を球体へと変換する。視錐体を含む空間全体を同一比率で伸縮させることで、楕円体と視錐体の位置関係を崩すことなく球体と視錐体を変形したものに変化させる。さらに好ましくは、球体の半径が1となるように伸縮処理を行うことで、その後の交差判定処理の演算がより容易になる。
【0024】
回転処理部14aは、伸縮処理後の球体と視錐体について、視錐体の底面が計算上の奥行方向軸に垂直となるように視錐体及び球体を回転させる機能を有する。交差判定の演算処理を容易にするために、視錐体の底面が奥行方向軸(Z軸)に垂直、すなわちX−Y平面と平行となるように回転処理を行う。
【0025】
交差判定部16aは、球体の座標情報と視錐体の座標情報とを用いて球体と視錐体の交差判定を行って判定結果を出力する機能を有する。交差判定は、視錐体の各面と球体との間でそれぞれ判定を行い、何れか1つの面との間で交差していると判定された場合、視錐体と球体が交差していると判定する。交差判定の手法はどのようなものであってもよいが、例えば、面の垂直方向の距離を用いて行い、面の境界に関する判定は省略することが考えられる。つまり、各面において、N:法線ベクトル、O:面上の任意の点、C:球体の中心、R:球体の半径としたとき、面上の任意の点Oから球体の中心までのベクトルは(C−O)で表される。これを法線ベクトルNとの間で内積を演算すると、面上の任意の点Oからの法線方向の距離が求められる。面上の任意の点Oからの法線方向の距離が球体の半径Rより小さい場合には、交差していると判定する。すなわち、面上の任意の点について{N・(C−O)}<R(以下、交差判定式という)をひとつでも満たしていたら交差しているとみなす荒い交差判定とする。この球体と面との交差判定式は従来から既知の手法である。
【0026】
次に、本例の交差判定装置10Aにおいて行われる交差判定処理の流れについて説明を行う。
図2は、本発明の実施形態の少なくとも一つに対応する交差判定処理の例を示すフローチャートである。この
図2に示すように、交差判定処理は、先ず、交差判定の判定対象である視錐体について三次元仮想空間における座標情報を取得する(ステップS101)。続いて、交差判定の判定対象である対象物について三次元仮想空間における座標情報を取得する(ステップS102)。
【0027】
対象物が楕円体である場合、視錐体と楕円体の配置された空間全体について、楕円体が球体となるように伸縮処理を行う(ステップS103)。
図3は、対象物が楕円体である場合の視錐体と楕円体の配置の一例を表した平面図である。この
図3の状況の場合には、上記交差判定式をそのまま用いて交差判定を行うことができない。そこで、
図3のように視錐体と楕円体の配置された空間全体について伸縮処理を行うことで楕円体を球体に変換する。
図4は、
図3における視錐体と楕円体について伸縮処理を行った場合の視錐体及び球体を表した平面図である。空間全体について伸縮処理を行う限りにおいては視錐体と楕円体の交差関係は、伸縮処理後の視錐体と球体においても引き継がれて交差関係が変化しないといえる。伸縮処理を行って楕円体を球体に変換することができれば、上記交差判定式を利用して交差判定を行うことが可能となる。なお、対象物が球体である場合については、半軸について最初からa=b=cの条件を満たした楕円体であるので、伸縮処理を行わずに次のステップに移行するだけである。
【0028】
伸縮処理の後、視錐体の底面が計算上の奥行方向軸(Z軸)に垂直となる、すなわち、X−Y平面と平行となるように、視錐体及び球体を視点を中心として回転させる回転処理を実行する(ステップS104)。
図5は、
図4における視錐体と楕円体について回転処理を行った場合の視錐体及び球体を表した平面図である。
図4における伸縮処理後の視錐体の状態でも交差判定処理は可能であるが、
図5に示すように、視錐体の底面がZ軸と垂直となるように回転処理を行うことによって、交差判定時の演算量を低減することが可能となる。というのも、視錐体と球体との交差判定を行うには、視錐体の各面と球との距離を計算する必要があり、上記交差判定式において説明した通り、各面の法線と球の中心との内積によって計算される。このとき深度面がZ軸と垂直であれば、視錐体の上面と底面に関しては、距離の計算を法線や内積を行なわずに単純にZ軸方向の距離によって置き換えることが可能となるため、計算量を小さくすることが出来る。
【0029】
最後に、視錐体と球体との間で交差判定を行って判定結果を出力して(ステップS105)、交差判定処理を終了する。三次元仮想空間に複数の対象物が定義されている場合には、各対象物との間で当該交差判定処理を行う。全ての対象物と交差判定処理を終えたら、視錐体内の各描画点に対する対象物の影響を詳細に演算するが、その時、交差していると判定された対象物のみとの間で詳細な演算を行う。
【0030】
以上のように、本例の交差判定装置10Aによれば、対象物が楕円体である場合であっても、伸縮処理を行うことで既知の交差判定式を適用可能となる。また、回転処理を行うことによって視錐体の上面と底面がZ軸と垂直となり、単純にZ軸方向の距離を用いて交差判定を行えるようになるため、演算量を低減することが可能となる。すなわち、対象物として楕円体を適用したとしても交差判定処理を高速に行うことが可能となるため、リアルタイムレンダリングにおいても適切に交差判定を行うことが可能となる。
【0031】
[第2の実施形態]
図6は、本発明の一実施の形態における交差判定装置10Bの構成の例を示すブロック図である。なお、第1の実施形態における交差判定装置10Aと同様の構成箇所については同一符号を付して説明を省略する。また、
図6に示す交差判定装置10Bが、専用マシンとして設計した装置であってもよいが、一般的なコンピュータによって実現可能なものである点についても、第1の実施形態と同様である。
【0032】
回転処理部14bは、伸縮処理後の球体と視錐体について、視錐体の底面が計算上の奥行方向軸に垂直となるように視錐体及び球体を回転させる機能を有する。交差判定の演算処理を容易にするために、視錐体の底面が奥行方向軸(Z軸)に垂直、すなわちX−Y平面と平行となるように回転処理を行う。また、回転処理部14bは、視錐体の底面を構成する何れか一辺が奥行方向軸に垂直な平面における縦軸又は横軸と平行となるように視錐体及び球体を回転させる機能を有する。すなわち、視錐体の底面を構成する一辺がX−Y平面のX軸又はY軸と平行となるように回転処理を行う。
【0033】
軸平行境界ボックス設定部15は、視錐体を内包する軸平行境界ボックスを設定する機能を有する。ここで、軸平行境界ボックスとは、AABB(Axis-Aligned Bounding Box)とも呼ばれるものであり、X−Y平面に平行な面、X−Z平面に平行な面、及び、Y−Z平面に平行な面のみによって形成される直方体であり、視錐体を内包する大きさに設定される直方体である。視錐体がはみ出さずに内包される必要があり、条件を満たす直方体の中で最小サイズであることが好ましい。
【0034】
交差判定部16bは、球体の座標情報と軸平行境界ボックスの座標情報とを用いて球体と軸平行境界ボックスの交差判定を行って判定結果を出力する機能を有する。交差判定の手法はどのようなものであってもよいが、例えば、上記交差判定式を用いて行うものとする。また、交差判定の手法として、非特許文献1に記載されている判定法を用いることで、各面と球との間で交差判定を行うよりも高速に計算できる。
【0035】
次に、本例の交差判定装置10Bにおいて行われる交差判定処理の流れについて説明を行う。
図7は、本発明の実施形態の少なくとも一つに対応する交差判定処理の例を示すフローチャートである。この
図7に示すように、交差判定処理は、先ず、交差判定の判定対象である視錐体について三次元仮想空間における座標情報を取得する(ステップS201)。続いて、交差判定の判定対象である対象物について三次元仮想空間における座標情報を取得する(ステップS202)。
【0036】
対象物が楕円体である場合、視錐体と楕円体の配置された空間全体について、楕円体が球体となるように伸縮処理を行う(ステップS203)。空間全体について伸縮処理を行う限りにおいては視錐体と楕円体の交差関係は、伸縮処理後の視錐体と球体においても引き継がれて交差関係が変化しないといえる。伸縮処理の後、視錐体の底面が計算上の奥行方向軸(Z軸)に垂直となる、すなわち、X−Y平面と平行となるように、視錐体及び球体を視点を中心として回転させる回転処理を実行する(ステップS204)。さらに、視錐体の底面の一辺がX軸又はY軸と平行となるように、視錐体及び球体を視点を中心として回転させる回転処理を実行する(ステップS205)。その後、回転処理後の視錐体を内包する軸平行境界ボックスを設定する(ステップS206)。最後に、軸平行境界ボックスと球体との間で交差判定を行って判定結果を出力して(ステップS207)、交差判定処理を終了する。三次元仮想空間に複数の対象物が定義されている場合には、各対象物との間で当該交差判定処理を行う。全ての対象物と交差判定処理を終えたら、視錐体内の各描画点に対する対象物の影響を詳細に演算するが、その時、交差していると判定された対象物のみとの間で詳細な演算を行う。
【0037】
非特許文献1に示す通り軸平行境界ボックスを設定して交差判定を行う手法は従来から行われており、より演算量を低減することが可能となり有用である。ここで、
図8は、楕円体に対して伸縮処理を行った後の状態を表す
図4の視錐体と球体に対して軸平行境界ボックスを設定した様子を表した平面図である。この
図8のように伸縮処理後の視錐体と球体に対して軸平行境界ボックスを設定した場合であっても、演算量の低減という効果は期待できる。しかし、本来の判定対象である視錐体が伸縮処理によって変形しているため、変形した視錐体を内包するように軸平行境界ボックスを設定すると、
図8に示すように、元の視錐体に比較して体積の大きい軸平行境界ボックスを設定せざるを得ない。この場合、元の視錐体との間では交差していないのに、軸平行境界ボックスとの間では交差していると判定されてしまう偽陽性(false-positive)という判定ミスが生じる可能性が高まるという問題がある。
【0038】
そこで、本例においては、伸縮処理の後、視錐体の底面が計算上の奥行方向軸(Z軸)に垂直となる、すなわち、X−Y平面と平行となるように、視錐体及び球体を視点を中心として回転させ、さらに、視錐体の底面の一辺がX軸又はY軸と平行となるように、視錐体及び球体を視点を中心として回転させる回転処理を実行する。
図9は、回転処理を行った後の状態を表す
図5の視錐体と球体に対して軸平行境界ボックスを設定した様子を表した平面図である。この
図9に示すように、回転処理を行ってから軸平行境界ボックスを設定することで、視錐体と軸平行境界ボックスの体積差を小さくすることができるため、偽陽性と判定されてしまう可能性を低減することが可能となる。また、AABBの構築処理においても、視錐体の底面をZ軸に垂直にすることによってZ軸方向の境界を求める処理の計算量を抑えることができる。これはZ軸の境界を調べるために8頂点の全てを調べる必要がなく、上面と底面の深度を代わりに用いることができるようになるためである。
【0039】
以上のように、本例の交差判定装置10Bによれば、対象物が楕円体である場合であっても、伸縮処理を行うことで既知の球体と視錐体の交差判定の関係に変換し、かつ、視錐体に対して軸平行境界ボックスを設定して、軸平行境界ボックスと球体の間で交差判定処理を行うようにしたので、演算量を低減することが可能となる。また、伸縮処理の後、回転処理を行ってから軸平行境界ボックスを設定するようにすることで、視錐体と軸平行境界ボックスの体積差を小さくすることができ、これによって偽陽性と判定されてしまう可能性を低減することが可能となる。また、この回転処理によって軸平行境界ボックスの構築に関わる計算量を低減することが可能となる。
【0040】
以上に説明したように、本願の各実施形態により1または2以上の不足が解決される。なお、夫々の実施形態による効果は、非限定的な効果または効果の一例である。
【産業上の利用可能性】
【0041】
本発明の実施形態の一つによれば、グラフィックス描画の分野において三次元仮想空間に定義される対象物の影響範囲の表現として楕円体を採用しても演算量を低減した交差判定を行うことが可能となるため、様々なグラフィックス描画において楕円体を用いた表現方法が増加してより好適な画像表現が可能となる。
【符号の説明】
【0042】
10A、10B 交差判定装置
11 視錐体座標取得部
12 対象物座標取得部
13 伸縮処理部
14a、14b 回転処理部
15 軸平行境界ボックス設定部
16a、16b 交差判定部
【要約】
【課題】三次元仮想空間に定義された対象物が楕円体であってもカリングにおける楕円体と視錐体の交差判定を行うことを可能とすること。
【解決手段】タイルベースカリングにおける各視錐体が三次元仮想空間に配置された対象物と交差するか否かの判定を行う交差判定手法であり、対象物の形状が楕円体である場合に、視点を原点とした空間全体について楕円体が球体となるように視錐体と楕円体が配置された空間を伸縮させる伸縮処理を行って、伸縮処理後の球体の座標情報と伸縮処理後の視錐体の座標情報とを用いて球体と視錐体の交差判定を行うようにした。
【選択図】
図3