(57)【要約】      （修正有）【課題】多次元空間内の選択された点に関するイルミネーション成分を決定するための、コンピュータで実行される方法、システム及びコンピュータ可読媒体を提供する。【解決手段】選択された点に関連する、多次元空間内に位置するプローブのセットを識別し、各選択されたプローブのそれぞれについて、選択されたプローブに関する複数のゾーンのいずれが選択された点を含むかを決定し、該選択されたプローブから決定されたゾーンの可視性を決定し、対応する決定されたゾーンが見えるものと決定されたプローブに関連するシーン放射強度データを組みあわせることで、該選択された点のイルミネーション成分を引き出す。決定されたイルミネーション成分は、コンピュータグラフィックレンダリングに適用することが出来るグローバルイルミネーションの拡散形成分である。【選択図】図５
2018060499.tif 000002
【特許請求の範囲】
【請求項１】
多次元空間の選択された点に関するイルミネーション成分を決定するためのコンピュータに実装された方法であって、該方法は、
−前記多次元空間内に位置する、前記選択された点に関連するプローブのセットを識別すること、
−選択された前記プローブのそれぞれに関して、該選択されたプローブに関する複数のゾーンのどれが前記選択された点を含むかを決定し、前記選択されたプローブから前記決定されたゾーンの可視性を決定すること、
−前記対応する決定されたゾーンが見えるものと決定された前記プローブのシーン放射強度データを組み合わせることで、前記選択された点のイルミネーション成分を引き出すこと、
から構成されることを特徴とする。
【請求項２】
請求項1記載の、コンピュータに実装された方法において、
前記選択された点に関連するプローブのセットを識別することは、前記選択された点が位置する領域を決定することと該領域に関連するプローブのセットを識別すること、
を含むことを特徴とする。
【請求項３】
請求項２記載の、コンピュータに実装された方法において、
前記複数のゾーンのどれかを決定し、可視性を決定するステップは、前記セット中の各プローブについて実行されることを特徴とする。
【請求項４】
請求項２記載の、コンピュータに実装された方法において、
前記領域に関連するプローブのセットを識別することは、メモリを検索して、前記選択された点のイルミネーションに潜在的な影響を及ぼすものと予め決められたプローブのセットを見つけ出すことを含むことを特徴とする。
【請求項５】
請求項２記載の、コンピュータに実装された方法において、
前記選択された点が位置する領域を決定することは、格子状の領域にアクセスすることを含むことを特徴とする。
【請求項６】
請求項１記載の、コンピュータに実装された方法において、選択された各プローブに関する前記ゾーンは、前記選択されたプローブに関して前もって定義されたオクルージョン平面の交差により定義されていることを特徴とする。
【請求項７】
請求項６記載の、コンピュータに実装された方法において、
前記選択されたプローブに関するオクルージョン平面の数は３であることを特徴とする。
【請求項８】
請求項１記載の、コンピュータに実装された方法において、
前記選択されたプローブに関する複数のゾーンのどれが前記選択された点を含むかを決定することは、前記選択された点と、前記選択された一つのプローブに関する前もって定義された複数のオクルージョン平面のそれぞれを用いて、最終的な前記ゾーンを決定すること、を特徴とする。
を
【請求項９】
請求項１記載の、コンピュータに実装された方法において、
前記選択されたプローブから前記決定されたゾーンの可視性を決定することは、該選択されたプローブに関連した可視性マスクを適用すること、を特徴とする。
【請求項１０】
請求項９記載の、コンピュータに実装された方法において、
前記選択されたプローブに関連した可視性マスクは、選択されたプローブから見ることの出来る一つ以上のゾーンをエンコードするか、該選択されたプローブからはどのゾーンも見ることが出来ないという事実をエンコードすること、を特徴とする。
【請求項１１】
請求項１０記載の、コンピュータに実装された方法において、
前記選択されたプローブに関するゾーンは、前記選択されたプローブに関する前もって定義されたオクルージョン平面の交差によって定義されており、前記選択されたプローブに関連した可視性マスクは、前記多次元空間内の隣接する少なくとも二つのゾーンをエンコードすること、を特徴とする。
【請求項１２】
請求項１０記載の、コンピュータに実装された方法において、
前記選択されたプローブに関するゾーンは、前記選択されたプローブに関するオクルージョン平面の交差によって定義されており、前記選択されたプローブに関連した可視性マスクは、前記多次元空間内の隣接しないゾーンだけをエンコードすること、を特徴とする。
【請求項１３】
請求項１０記載の、コンピュータに実装された方法において、
前記決定されたゾーンは、コードでエンコードされており、前記選択されたプローブに関連した可視性マスクを適用することは、前記コードと前記選択されたプローブに関連した可視性マスクとの間の比較した結果であること、を特徴とする。
【請求項１４】
請求項１３記載の、コンピュータに実装された方法において、
該方法は、前記選択されたプローブに関連した可視性マスクにアクセスするためにメモリを参照すること、を特徴とする。
【請求項１５】
請求項１３記載の、コンピュータに実装された方法において、
前記比較は、ビット単位ＡＮＤで構成されること、を特徴とする。
【請求項１６】
請求項１記載の、コンピュータに実装された方法において、
前記対応する決定されたゾーンが見えるものと決定された前記プローブ（以下、「見えるプローブ」と称する）のシーン放射強度データを組み合わせることは、（ｉ）各見えるプローブに関する放射強度データを決定し、（ｉｉ）各見えるプローブの重みを決定し、（ｉｉｉ）各見えるプローブに関して前記放射強度データの重み付けされた総和を計算することを含むこと、を特徴とする。
【請求項１７】
請求項１６記載の、コンピュータに実装された方法において、
前記選択された点に関するプローブのセットを識別することは、選択された点が位置する領域を決定すること及び、該領域に関するプローブのセットを識別することを含み、前記選択された点に関しては、前記セット中のプローブの数が、見えるプローブの数より大きいこと、を特徴とする。
【請求項１８】
請求項１記載の、コンピュータに実装された方法において、
前記放射強度データは、拡散形グローバルイルミネーションデータであること、を特徴とする。
【請求項１９】
請求項１記載の、コンピュータに実装された方法において、
前記対応する決定されたゾーンが見えるものと決定された前記プローブ（以下、「見えるプローブ」と称する）のシーン放射強度データを組み合わせることは、（ｉ）各見えるプローブに関する放射強度パラメータのアレイを決定し、（ｉｉ）各見えるプローブの重みを決定し、（ｉｉｉ）前記アレイの各素子について、前記見えるプローブに向かう（across）対応する放射強度パラメータの重み付けされた総和を計算して、対応する混ぜ合わされた放射強度パラメータを得、（ｉｖ）該混ぜ合わされた放射強度パラメータのマッピング機能を演算して、イルミネーション成分を決定することを含むこと、を特徴とする。
【請求項２０】
請求項１９記載の、コンピュータに実装された方法において、
前記各見えるプローブの重みは、少なくとも一部で、前記選択された点と該プローブ間の距離に基づいていること、を特徴とする。
【請求項２１】
請求項１９記載の、コンピュータに実装された方法において、
少なくとも二つの見えるプローブの前記重みは、前記選択された点とプローブ間の距離に比例しており、前記見えるプローブの少なくとも三番目の見えるプローブの重みは、前記選択された点と該三番目の見えるプローブとの間の距離とは比例しないこと、を特徴とする。
【請求項２２】
請求項１９記載の、コンピュータに実装された方法において、
前記重み付けられた総和は、前記見えるプローブの重みの総和により正規化されること、を特徴とする。
【請求項２３】
請求項１９記載の、コンピュータに実装された方法において、
放射強度パラメータは、球面調和係数であり、前記マッピング機能は、球面調和パラメータと前記選択された点に関する法線で評価された球面調和基底関数の線形な組合せを含むこと、を特徴とする。
【請求項２４】
請求項２３記載の、コンピュータに実装された方法において、
前記法線は、前記選択された点の法線であること、を特徴とする。
【請求項２５】
請求項２３記載の、コンピュータに実装された方法において、
前記球面調和基底関数は、オーダー３であること、を特徴とする。
【請求項２６】
請求項１記載の、コンピュータに実装された方法において、
前記対応する決定されたゾーンが見えるものと決定された前記プローブ（以下、「見えるプローブ」と称する）のシーン放射強度データを組み合わせることは、（ｉ）少なくとも２つの見えるプローブのそれぞれの放射強度パラメータのアレイを決定し、（ｉｉ）該見えるプローブに関する混ぜ合わされた放射強度パラメータのマッピング機能を演算することで、それら見えるプローブそれぞれのイルミネーション成分を決定し、（ｉｉｉ）それら見えるプローブの重みをそれぞれ決定し、（ｉｖ）それら見えるプローブのイルミネーション成分の重み付けされた総和を計算して該イルミネーション成分を決定することからなること、を特徴とする。
【請求項２７】
請求項２６記載の、コンピュータに実装された方法において、
各見えるプローブそれぞれの重みは、少なくとも部分的に、前記選択された点と前記プローブ間の距離に基づいていること、を特徴とする。
【請求項２８】
請求項２６記載の、コンピュータに実装された方法において、
少なくとも一つの見えるプローブの重みは、前記選択された点と前記見えるプローブ間の距離に比例しないこと、を特徴とする。
【請求項２９】
請求項２６記載の、コンピュータに実装された方法において、
前記重み付けられた総和は、前記見えるプローブの重みの総和により正規化されること、を特徴とする。
【請求項３０】
請求項２６記載の、コンピュータに実装された方法において、
放射強度パラメータは、球面調和係数であり、前記マッピング機能は、球面調和パラメータと前記選択された点に関する法線で評価された球面調和基底関数の線形な組合せを含むこと、を特徴とする。
【請求項３１】
請求項３０記載の、コンピュータに実装された方法において、
前記法線は、前記選択された点の法線であること、を特徴とする。
【請求項３２】
請求項１記載の、コンピュータに実装された方法において、
前記空間は、２次元空間であること、を特徴とする。
【請求項３３】
請求項１記載の、コンピュータに実装された方法において、
前記空間は、３次元空間であること、を特徴とする。
【請求項３４】
請求項８記載の、コンピュータに実装された方法において、
該方法は、
メモリにアクセスして、前記選択されたプローブに関するオクルージョン平面の識別パラメータを検索することを含む。
【請求項３５】
請求項３４記載の、コンピュータに実装された方法において、
該方法は、更に、
前記オクルージョン平面からゾーンを生成し、前記選択されたプローブに関連して、前記メモリ内に該ゾーンの識別パラメータを格納することを含む。
【請求項３６】
請求項３５記載の、コンピュータに実装された方法において、
前記オクルージョン平面からゾーンを生成することは、ゾーンが前記それぞれのオクルージョン平面の前面か、背面に位置するかを定義することを含む。
【請求項３７】
請求項１記載の、コンピュータに実装された方法において、
前記イルミネーション成分は、グローバルイルミネーション成分の部分である第１のイルミネーション成分であり、
前記方法は、更に、
−ローカルイルミネーション成分を引き出し、
−前記ローカルイルミネーション成分とグローバルイルミネーション成分の組みあわせによりディスプレィ装置における選択された点のレンダリングを行う、
ことを特徴とする。
【請求項３８】
請求項３７記載の、コンピュータに実装された方法において、
前記レンダリングは、リアルタイムで実行され、ユーザ入力に依存する、
ことを特徴とする。
【請求項３９】
請求項３７記載の、コンピュータに実装された方法において、
前記ローカルイルミネーション成分は、リアルタイムで引き出される、ことを特徴とする。
【請求項４０】
請求項３９記載の、コンピュータに実装された方法において、
前記第１のイルミネーション成分は、リアルタイムで引き出される、ことを特徴とする。
【請求項４１】
請求項４０記載の、コンピュータに実装された方法において、
各選択されたプローブに関する前記複数のゾーンは、非リアルタイムで決定される、ことを特徴とする。
【請求項４２】
請求項４１記載の、コンピュータに実装された方法において、
前記可視性を決定することは、各プローブについて予め計算された可視性マスクに基づいて行われる、ことを特徴とする。
【請求項４３】
多次元空間の選択された点に関するイルミネーション成分を決定するためのシステムであって、
該システムは、
−処理装置、
−前記多次元空間内の複数のプローブを識別する情報とそれに関連する情報を格納するメモリ、を有し、
−前記処理装置は、
・前記選択され点に関連する、前記多次元空間内に位置するプローブのセットを識別し、
・各選択されたプローブのそれぞれについて、該選択されたプローブに関する複数のゾーンのうち、どれが前記選択された点を含むかを決定し、前記選択されたプローブからの前記決定されたゾーンの可視性を決定し、
・前記対応する決定されたゾーンが見えるものと決定されたプローブに関連したシーン放射強度データを組みあわせることで、前記選択された点のイルミネーション成分を引き出す、
ことを特徴とする。
【請求項４４】
コンピュータ可読命令を有すコンピュータ可読媒体であって、前記命令は、コンピュータ装置で実行させると、該コンピュータ装置に、多次元空間の選択された点に関するイルミネーション成分を決定するための方法を実行させることができ、前記方法は、
−前記多次元空間内に位置する、前記選択された点に関連するプローブのセットを識別すること、
−選択された前記プローブのそれぞれに関して、該選択されたプローブに関する複数のゾーンのどれが前記選択された点を含むかを決定し、前記選択されたプローブから前記決定されたゾーンの可視性を決定すること、
−前記対応する決定されたゾーンが見えるものと決定された前記プローブと関連したシーン放射強度データを組み合わせることで、前記選択された点のイルミネーション成分を引き出すこと、
から構成されることを特徴とする。
【請求項４５】
ゲーム装置であって、
該ゲーム装置は、
−ユーザにゲーム入力を制御させ、ゲーム出力を知覚させることの出来る入出力インターフェース、
−（ｉ）多次元空間内の複数のゾーンと前記多次元空間内の対応するプローブのセットを関連付ける情報及び、
（ｉｉ）実行可能な命令、
を格納するメモリ、
−前記多次元空間内の複数の選択された点のそれぞれのイルミネーション成分を、前記選択された点を含むゾーンを見ることが出来る一つ以上のプローブのそれぞれに関するシーン放射強度データから引き出す命令を実行することの出来る処理装置を有し、
前記一つ以上のプローブは、前記ゾーンに対応するプローブのセットから選択されている、
ことを特徴とする。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的には、コンピュータを用いたグラフィックに関わり、特に、拡散形グローバルイルミネーションを演算する時に、コンピュータリソースを効率的に使用するための方法、システム及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
シーン（scene）の個別の位置にライトプローブを用いることは一般的であり、該シーンの他の地点でグローバルイルミネーションの拡散状態を推定するには効果的である。特に、放射照度がそれぞれのプローブでサンプリングされ、複数の方向のそれぞれについてエンコードされる。この予め計算された情報は、動作中に演算されるのでは無く、実行時に検索されるものである。仮に拡散形グローバルイルミネーションが決定されるべき点が多数のプローブの間に位置していた場合、技術的な問題は、拡散形グローバルイルミネーションの演算に、どのプローブを最も重要なプローブとして選択するかである。この点において、所定の位置に対する近さに応じてプローブを補間する方法が知られている。しかし、この方法は、情景内の特定の素子がもたらすオクルージョン（occlusion）効果を考慮していないので、いくつかの近くのプローブが、該情景中のある点における拡散形グローバルイルミネーションに対して過度な影響を与えてしまう。その結果、見る人は“ポピング（popping）”のような不快な画像（artifacts）を認識してしまうこととなる。
【発明の概要】
【０００３】
第１の観点によると、本発明は、多次元空間において、選択された点に関するイルミネーション成分を決定するためのコンピュータに実装された方法（プログラム）を提供することを追求するものである。該方法は、選択された点に関連する、多次元空間内に位置するプローブのセットを識別し、該プローブの各選択されたそれぞれについて、前記選択されたプローブに関する複数のゾーンのいずれが前記選択された点を含むかを決定し、該選択されたプローブから前記決定されたゾーンの可視性を決定し、対応する前記決定されたゾーンが見えるものと決定されたプローブの放射強度データと関連するシーン放射強度データを組みあわせることで、該選択された点のイルミネーション成分を引き出す。
【０００４】
第２の観点によると、本発明は、多次元空間内の選択された点のイルミネーション成分を決定するためのシステムを提供することを追求するものである。システムは、処理装置及び多次元空間内の複数のプローブを識別する情報とそれと共に関連する情報を格納したメモリを有する。処理装置は、選択された点に関連する、前記多次元空間内に位置するプローブのセットを識別するように構成されており、前記プローブの選択されたそれぞれについて、選択されたプローブに関する複数のゾーンのどれが前記選択された点を含むのかを決定し、前記選択されたプローブから前記決定されたゾーンの可視性を決定し、対応する前記決定されたゾーンが見えるものと決定されたプローブの放射強度データと関連するシーン放射強度データを組みあわせることで、該選択された点のイルミネーション成分を引き出す。
【０００５】
第３の観点によると、本発明は、コンピュータ可読命令を有するコンピュータ可読媒体を提供することを追求するものであり、演算装置により実行されると、該演算装置に、多次元空間内の選択された点に関するイルミネーション成分を決定する方法を実行させる。該方法は、選択された点に関連する、前記多次元空間内に位置するプローブのセットを識別するように構成されており、前記プローブの選択されたそれぞれについて、選択されたプローブに関する複数のゾーンのどれが前記選択された点を含むのかを決定し、前記選択されたプローブから前記決定されたゾーンの可視性を決定し、対応する前記決定されたゾーンが見えるものと決定されたプローブの放射強度データと関連するシーン放射強度データを組みあわせることで、該選択された点のイルミネーション成分を引き出す。
【０００６】
第４の観点によると、本発明は、ゲーム装置を提供することを追求するものであり、該ゲーム装置は、ユーザにゲーム入力を制御することを許可し、ゲーム出力を知覚させる入力／出力インターフェースを有し、（i）多次元空間内の複数のゾーンを多次元空間内のプローブの対応するセットに関連つける情報と、（ii）実行可能な命令、を格納したメモリを有し、前記実行可能な命令を実行し、前記多次元空間内の複数の選択された点のそれぞれにおけるイルミネーション成分を、前記選択された点を含んだゾーンが見える一つ以上のプローブのそれぞれと関連するシーン放射強度データから、引き出すように構成された処理装置を有し、前記一つ以上のプローブは、前記ゾーンに対応するプローブのセットから選択されている。
【０００７】
本発明のこれらの及び他の観点は、添付した図面と併せて以下の本発明の特定の実施例の記述を参照することで、当業者にとって明らかになる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明の限定されない例示的な実施例を実装したゲーム装置の構成を示すブロック図である。
【図２Ａ】図２Ａは、図１のゲーム装置によって実行されるゲームプログラムの要素を示す図であり、ゲームデータ処理機能及びゲームレンダリング処理機能を有するものである。
【図２Ｂ】図２Ｂは、本発明の実施例によるゲームデータの一例を示す図。
【図２Ｃ】図２Ｃは、３Ｄグラフィック情景をディスプレィ装置に表示するためのゲーム画面に変換する処理の一例を示す図。
【図３】図３は、ゲームレンダリング処理機能のオフライン処理とリアルタイム処理の一例を示すものである。
【図４】図４は、図３のオフライン処理のサブプロセスの一例を示すものである。
【図５】図５は、図３のリアルタイム処理の操作ステップを示すフローチャートの一例である。
【図６Ａ】図５のリアルタイム処理の一部として実行された可視性テストの一例を概念的に示す図。
【図６Ｂ】図５のリアルタイム処理の一部として実行された可視性テストの一例を概念的に示す図。
【図７】図７は、空間をプローブから見えたり、見えなかったりするゾーンに区分する一例を示す図。
【図８Ａ】図８Ａは、オフライン処理により事前に計算され、ルーチン前にメモリに格納された表の一例を示す図。
【図８Ｂ】図８Ｂは、オフライン処理により事前に計算され、ルーチン前にメモリに格納された表の一例を示す図。
【図８Ｃ】図８Ｃは、オフライン処理により事前に計算され、ルーチン前にメモリに格納された表の一例を示す図。
【図９】図９は、空間を領域に再分割した一例を示す図。
【図１０】図１０は、拡散形グローバルイルミネーションが二つのプローブにより影響される点の一例を示す図。
【０００９】
以下の記述及び図面は本発明のある実施例を示す目的と、理解の助けのためにのみ記されている点を理解すべきである。従って、これらは本発明を限定的に解釈するものではない。
【発明を実施するための形態】
【００１０】
図１は、本発明の限定されない例示的な実施例を実装したゲーム装置１の構成を示すブロック図である。ある場合には、ゲーム装置１は、Ｘｂｏｘ（登録商標）、Ｐｌａｙｓｔａｔｉｏｎ（登録商標）又はＮｉｎｔｅｎｄｏ（登録商標）ゲーム筐体といった専用のゲーム筐体である。また他の場合には、ゲーム装置１は、多目的ワークステーション又はラップトップコンピュータである。更に他の場合、ゲーム装置１は、スマートフォンのようなモバイル装置であり、また更に他の場合には、ゲーム装置１は携帯型ゲーム装置である。
【００１１】
ゲーム装置１は、少なくとも一つの処理装置１０、少なくとも一つのコンピュータ可読メモリ１１，少なくとも一つの入出力モジュール１５及び少なくとも一つの電源２７を有し、更にビデオゲームを遊ぶのに使用されるゲーム装置で見受けられるさまざまな部品も含まれる。ゲーム装置１の様様な部品は、データバス、コントロールバス、パワーバスなどのようなバスを介して互いに通信することが出来る。
【００１２】
図１に示すように、プレイヤ７は、ディスプレィ装置５のスクリーンに表示されるゲーム画像を見ながら、ゲームコントローラ３を介してゲームの局面を制御することでゲームをプレイする。従って、ゲーム装置１はゲームコントローラ３から少なくとも一つの入出力モジュール１５を介して入力を受ける。ゲーム装置１は、また、ディスプレィ装置５及び／又はオーディオ装置（例えば、スピーカ、図示せず）に少なくとも一つの入出力モジュール１５を介して出力を供給する。他の実施例では、入出力モジュール１５に接続されるのは、一つ以上のゲームコントローラ及び／又は一つ以上のディスプレィ装置５でもよい。
【００１３】
少なくとも一つの処理装置１０は、一つ以上のコアを有する中央処理ユニット（ＣＰＵ）を有する。また少なくとも一つの処理装置１０は、出力データを、ディスプレィ装置５のディスプレィの入出力モジュール１５に供給するためのビデオエンコーダ／ビデオコーデック（コーダ／デコーダ、図示せず）と接続された、少なくとも一つのグラフィック処理ユニット（ＧＰＵ）を有する。更に該少なくとも一つの処理装置１０は、オーディオ装置の入出力モジュール１５に供給される出力データを生成するためのオーディオエンコーダ／オーディオコーデック（コーダ／デコーダ、図示せず）と接続された少なくとも一つのオーディオ処理ユニットを有する。
【００１４】
少なくとも一つのコンピュータ可読メモリ１１は、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（リードオンリーメモリ）、フラッシュメモリ、ハードディスク駆動装置、ＤＶＤ／ＣＤ／Ｂｌｕｅｒａｙ（登録商標）及び／又は他の適切なメモリ装置、技術又は構成を有する。コンピュータ可読メモリ１１は、ゲームプログラム３３，ゲームデータ３４及びオペレーティングシステム３５などの多様な情報を格納している。
【００１５】
ゲーム装置１の電源が入ると、処理装置１０は処理装置１０を起動するブート処理を実行し、コンピュータ可読メモリ１１と通信する。特にこのブート処理ではオペレーティングシステム３５を実行する。オペレーティングシステム３５は、ゲーム装置に適した何らかの商用又は専用オペレーティングシステムである。オペレーティングシステム３５が実行されると、処理装置１０はディスプレィ装置５に表示する画像を生成し、ゲーム装置１はゲームコントローラ３を介してプレイヤ７が選択することの出来る多様なオプションや、プレイするビデオゲームを選択、及び／又は開始するオプションを表示する。プレイヤ７により選択／開始されたビデオゲームは、ゲームプログラム３３によってエンコードされている。
【００１６】
処理装置１０は該ゲームプログラム３３を実行して、エンコードされたビデオゲームに関連する多様な種類の情報処理機能を実行することが出来るように構成されている。特に、図２Ａに示すように、ゲームプログラム３３を実行することで処理装置１０は、以下に述べるゲームデータ処理機能２２及びゲームレンダリング処理機能２４を実行することとなる。
【００１７】
ゲームレンダリング処理機能２４はディスプレィ装置５に表示されるゲーム画像の生成を含むものである。ここで、ゲームデータ処理機能２２は、ゲームの進行やゲームの現在状態を表す情報を処理することを含む（例えば、ディスプレィ装置５に表示する必要のないゲームに関する情報の処理）。図２Ａでは、ゲームデータ処理機能２２及びゲームレンダリング処理機能２４は、単一のゲームプログラム３３の一部を構成している。しかし、他の実施例では、ゲームデータ処理機能２２及びゲームレンダリング処理機能２４は、別個のメモリに格納された別個のプログラムであり、分かれた、恐らく遠方の処理装置により実行される場合もある。例えば、ゲームレンダリング処理機能２２は、ＣＰＵで実行することもでき、ゲームレンダリング処理機能２４はＧＰＵで実行することも出来る。
【００１８】
ゲームプログラム３３の実行中には、処理装置１０は、オブジェクト、キャラクタのような構成物、及び／又はあるゲームの規則に従ったレベルを操作し、ある種の人工的な知的アルゴリズムの適用を行う。ゲームプログラム３３の実行中、処理装置１０は、生成、ロード、格納、読み込みを行い、また、オブジェクトやキャラクタ及び／又はレベルに関するデータを持ったゲームデータ３４に全般的なアクセスを行う。図２Ｂは、本発明の実施例に基づくゲームデータ３４の一例である。ゲームデータ３４は、前述の構成に関するデータを有しており、従って、オブジェクトデータ４２，キャラクタデータ４６及び／又はレベルデータ４４を含む。
【００１９】
オブジェクトとは、ゲーム画像のフレーム（コマ）にグラフィカルに表示することの出来るゲーム環境における何らかの素子又は素子の部分を表す。オブジェクトは、建物、車両、植物、空、大地、大洋、太陽及び／又は何らかの適当な素子を３次元的に表現したものである。オブジェクトは、数字、幾何学又は数学的な表現のような、他の非グラフィカルな表現であることもある。オブジェクトデータ４２は、ゲーム画像のフレーム内でのグラフィカルな表現のような、オブジェクトの現在表現についてのデータや、数字、幾何学又は数学的な表現についてのデータを格納する。オブジェクトデータ４２としては、画像データ、位置データ、材料／テクスチャデータ、物理状態データ、可視性データ、照明データ（例えば、方向、位置、色及び／又は強度）、サウンドデータ、モーションデータ、衝突データ、環境データ、タイマーデータ及び／又は該オブジェクトに関連する他のデータなどの属性データも格納することができる。
【００２０】
キャラクタは、オブジェクトに類似するが、属性は本質的により動的であり、オブジェクトが通常持たない追加的な属性を持っている。例えば、プレイングキャラクタのある属性は、プレイヤ７により制御することが出来る。またノンプレイングキャラクタ（ＮＰＣ）のキャラクタのある属性は、ゲームプログラム３３により制御され得る。キャラクタの一例としては、人、アバター、動物及び／又は何らかの他の適当なオブジェクトなどが挙げられる。キャラクタは、数字、幾何学又は数学的な表現のような他の非視覚的表現も持つことがある。キャラクタは、キャラクタが装備する武器、又はキャラクタが着る衣服などのオブジェクトと関連することがある。キャラクタデータ４６は、ゲーム画面のフレームにおけるグラフィカルな表現、又は数字、幾何学又は数字の表現のような、キャラクタの現在表現についてのデータを格納する。キャラクタデータ４６は、画像データ、位置データ、材料／テクスチャデータ、物理状態データ、可視性データ、照明データ（例えば、方向、位置、色及び／又は強度）、サウンドデータ、モーションデータ、衝突データ、環境データ、タイマーデータ及び／又は該キャラクタに関連する他のデータなどの属性データも格納することができる。
【００２１】
レベルは、ゲーム環境内で、キャラクタが進む、オブジェクトの特別なアレンジメントに関わるものである。レベルは、キャラクタが移動する経路に関わるデータを含む。レベルは、キャラクタやオブジェクトを巻き込んだオブジェクト、ゴール、チャレンジ又はパズルをエンコードするデータも含む。レベルは、レンダリングされ、ディスプレィ装置５のような２次元ディスプレィ装置に表示され得るグラフィカルな表現をもつが、レバルはまた、数字、幾何学又は数学的な表現のような他の非限定的な表現も有する。また、レベルには多様なレベルがあり、それぞれが自分のレベルデータ４４を有している。
【００２２】
ゲームデータ３４は、オブジェクトデータ４２、レベルデータ４４及び／又はキャラクタデータ４６の表現及び／又は属性の一部である、ディスプレィ装置５に表示される際のゲームの現在の視野又はカメラアングルに関するデータ（例えば、１人称視点、３人称視点など）を含む。
【００２３】
ゲームプログラム３３を実行する際には、処理装置１０は、プレイヤ７がゲームを選択／スタートした後に、イニシャライズ段階を行い、ゲームをイニシャライズする。イニシャライズ段階は、必要なゲームのセットアップを実行し、ゲームの開始に際してゲームデータを準備するために使用される。ゲームデータ３４は、ゲームプログラム３３の処理に伴って変化（即ち、ゲームのプレイ中）する。ここで“ゲームの状態”という用語は、ここではゲームデータ３４の現在の状態又は性質、従って、多様なオブジェクトデータ４２、キャラクタデータ４６及び／又はレベルデータ４４及びそれらの対応する表現及び／又は属性を定義するために使用される。
【００２４】
イニシャライズ段階の後、ゲームプログラム３３を実行する処理装置１０は、一つ以上のゲームループを実行する。一つ以上のゲームループは、ゲームプレイ中継続的に実行され、ゲームデータ処理機能２２及びゲームレンダリング処理機能２４はルーチン的に実行されるようになる。
【００２５】
ゲームループは、ゲームデータ処理機能２２がゲームコントローラ３を介したプレイヤの入力処理を行ってゲーム状態をアップデートする際に実行され、その後ゲームレンダリング処理機能２４がアップデートされたゲーム状態に基づいて表示すべきゲーム画像を生成するように機能する。ゲームループは時間経過を追跡し、ゲームプレイの進行を制御する。プレイヤが入力する以外のパラメータが、ゲーム状態に影響を与える点は注目すべき点である。例えば、多様なタイマ（即ち、経過時間、特定のイベントからの時間、一日のバーチャル時間など）がゲーム状態に影響を与え得る。別の言い方をすると、ゲームは、プレイヤ７が入力を行わなくても進行しており、従って、プレイヤの入力が無くてもゲーム状態はアップデートされるのである。
【００２６】
一般的に、ゲームデータ処理機能２２が毎秒実行する回数は、ゲーム状態に対する毎秒のアップデート回数を規定し（以後、「アップデート／秒」と称する）、ゲームレンダリング処理機能２４が毎秒実行する回数は、毎秒のゲーム画像のレンダリングを規定する（以後、「フレーム／秒」と称する）。理論的には、ゲームデータ処理機能２２とゲームレンダリング処理機能２４は、毎秒の実行回数が同じと考えられる。特定の非限定的な例として、目標が毎秒２５フレームだとすると、ゲームデータ処理機能２２とゲームレンダリング処理機能２４は、共に４０ｍｓ毎に実行可能な能力（即ち、１ｓ／２５ＦＰＳ）が望ましい。ゲームデータ処理機能２２が実行し、その後にゲームレンダリング処理機能２４が実行する場合、ゲームデータ処理機能２２とゲームレンダリング処理機能２４は共に４０ｍｓのタイムウインド（time window）で実行される必要がある。その時のゲーム状態によって、ゲームデータ処理機能２２及び／又はゲームレンダリング処理機能２４を行う時間は変わり得るものである。もしゲームデータ処理機能２２とゲームレンダリング処理機能２４が共に４０ｍｓ以下で実行されるなら、ゲームデータ処理機能２２とゲームレンダリング処理機能２４の次のサイクルを実行する前にスリープタイマーを使用することが出来る。しかし、ゲームデータ処理機能２２とゲームレンダリング処理機能２４が与えられたサイクルを実行するのに４０ｍｓ以上掛かる場合には、一定のゲームスピードを維持するためにゲーム画像の表示をスキップするのも一つのテクニックである。
【００２７】
目標となる毎秒フレーム数が、２５フレーム／秒以上又は以下の場合（例えば、６０フレーム／秒）もあるが、人間の目がゲーム画像フレームのレンダリングにおいて何らの遅れも感じないように、ゲームデータ処理機能２２とゲームレンダリング処理機能２４は２０から２５回／秒以下とならないように実行されることが望ましい。当然、フレームレートが高くなればなるほど、画像間の時間は短くなり、ゲームループを実行するに必要な処理装置もより高性能となり、ＧＰＵのような特別な処理装置に頼ることとなる。
【００２８】
他の実施例では、ゲームデータ処理機能２２とゲームレンダリング処理機能２４は別々のゲームループで、従って独立した処理で実行されることもある。こうした場合、ゲームレンダリング処理機能２４が実行中の時であっても、ゲームデータ処理機能２２は特別のレート（即ち、特別なアップデート回数／秒）でルーチン実行することが出来、またゲームデータ処理機能２２が実行中の時であっても、ゲームレンダリング処理機能２４は特別のレート（即、特別なフレーム数／秒）でルーチン実行することが出来る。
【００２９】
ゲームデータ処理機能２２とゲームレンダリング処理機能２４をルーチン的に行う処理は、当業者の範囲における多様な技術に基づいて実行され、そうした技術は本明細書において、ゲームデータ処理機能２２とゲームレンダリング処理機能２４がどのように実行されるかの一例として述べられる。
【００３０】
ゲームデータ処理機能２２が実行されると、コントローラ３を介したプレイヤ入力（もし有れば）及びゲームデータ３４が処理される。特に、プレイヤ７がビデオゲームをプレイする際には、プレイヤ７は、いくつかの例を挙げるが、左に移動せよ、右にジャンプせよ、撃て、などの多様なコマンドをゲームコントローラ３を介して入力する。プレイヤが入力すると、ゲームデータ処理機能２２はゲームデータ３４をアップデートする。別の言い方をすると、オブジェクトデータ４２、レベルデータ４４及び／又はキャラクタデータ４６がゲームコントローラ３を介したプレイヤの入力に反応してアップデートされる。なおゲームデータ処理機能２２が実行するたびにゲームコントローラ３を介したプレイヤ入力がある訳では無い。プレイヤ入力が入力されなくても、ゲームデータ３４は処理され、アップデートされる。こうしたゲームデータ３４のアップデートは、表現及び／又は属性がゲームデータ３４に対するアップデートを規定しているとき、オブジェクトデータ４２、レベルデータ４４及び／又はキャラクタデータ４６の表現及び／又は属性に応じて行われる。例えば、タイマーデータは一つ以上のタイマー（例えば、経過時間、特定のイベントからの経過時間、一日のバーチャル時間など）を規定し、それらはゲームデータ３４（例えば、オブジェクトデータ４２、レベルデータ４４及び／又はキャラクタデータ４６）のアップデートを生じさせる。他の例として、プレイヤ７によって制御されないオブジェクトが衝突すると（跳ね返ったり、合流したり、砕けたりなど）、ゲームデータ３４、例えばオブジェクトデータ４２、レベルデータ４４及び／又はキャラクタデータ４６は衝突によりアップデートされる。
【００３１】
一般的に、ゲームデータ３４（例えば、オブジェクト、レベル及び／又はキャラクタの表現及び／又は属性）はゲームの３次元（３Ｄ）グラフィック画像を規定するデータを表す。一つ以上の３Ｄグラフィックオブジェクトを含む３次元（３Ｄ）グラフィック画像を、ディスプレィ装置５に表示する２次元（２Ｄ）のラスタライズされたゲーム画像に変換する処理は、一般的にレンダリングと呼ばれる。図２Ｃに、３Ｄグラフィックシーンをディスプレィ装置５にスクリーンを介して表示するためのゲーム画像に変換する例を示す。ステップ５２で、ゲームデータ処理機能２２は、ゲームの３次元（３Ｄ）グラフィックシーンを表現するデータを処理して、複数のバーテックスデータに変換する。バーテックスデータはレンダリングパイプライン５５（グラフィックパイプラインとしても知られている）により処理するのに適している。ステップ５５では、ゲームレンダリング処理機能２４がレンダリングパイプライン５５によりバーテックスを処理する。レンダリングパイプライン５５の出力は、スクリーンを介してディスプレィ装置５に表示する一般的なピクセルである（ステップ６０）。
【００３２】
より詳細に述べると、ステップ５２で、グラフィックシーンの３Ｄグラフィックオブジェクトは、一つ以上の３Ｄグラフィック要素に細分化される。要素は、レンダリングのための幾何学的な存在（例えば、点、線、ポリゴン、表面、オブジェクト、パッチなど）を規定するために互いにグループ化され接続された一つ以上のバーテックスのグループである。各３Ｄグラフィック要素毎に、バーテックスデータがこの段階で生成される。各要素のバーテックスデータは一つ以上の属性（例えば、位置、色、法線又はテクスチャ座標系情報など）を含むものである。バーテックスデータを引き出す際に、カメラ変換（a camera transformation）（例えば、回転変換）が行われ、３Ｄグラフィックシーンの３Ｄグラフィックオブジェクトを、現在の視点又はカメラアングルに変換する。また、バーテックスデータを引き出す際に、光源データ（例えば、方向、位置、色及び／又は強度）が考慮される。この段階で引き出されたバーテックスデータは、一般的にレンダリングパイプライン５５に送られるバーテックスの順序付きリストである。順序付きリストのフォーマットは一般的にレンダリングパイプライン５５の具体的な実行に依存する。
【００３３】
ステップ５５で、ゲームレンダリング処理機能２４はバーテックスデータをレンダリングパイプライン５５により処理する。レンダリングパイプラインはよく知られており（例えば、OpenGl、DirectXなど）、レンダリングパイプライン５５の実行に用いられる特定のレンダリングパイプラインに拘わらず、レンダリングパイプライン５５の一般的な処理は、３Ｄシーンの２Ｄラスタ表現（例えば、ピクセル）を生成することである。レンダリングパイプライン５５は、一般的に、バーテックスデータの２次元（２Ｄ）スクリーン空間への投影位置を計算し、ディスプレィ５に出力するためのゲーム画像（例えば、ピクセル）を引き出すために、光、色、位置、情報、テクスチャ座標を考慮に入れた多様な処理及び／又は他の適当な処理を行なう（ステップ６０）。
【００３４】
ある場合には、ゲーム装置１はインターネットのサーバーと一つ以上のインターネット設備の間に配置される。従って、複数のプレイヤが同じオンラインゲームに参加することが出来、ゲームプログラムの機能（ゲームレンダリング機能及び／又はゲームデータ処理機能）は、少なくとも一部をサーバーにより実行することも可能である。
【００３５】
レンダリング処理の目的の一つは、非限定的な例として挙げると、２次元空間又は３次元空間のような多次元空間における点に対するローカル（直接）イルミネーション及びグローバル（間接）イルミネーションを計算することである。ローカルイルミネーションの成分は、リアルタイムで計算することが出来る。グローバル（間接）イルミネーションの場合、反射成分と拡散成分がある。ある点のグローバルイルミネーションの反射成分を計算するには、カメラ位置が関係する。一方、拡散成分の計算には、カメラ位置は無視することができ、該点の局部的な表面特性が関連する（即ち、その法線）。効率を上げるため、グローバルイルミネーションの拡散成分を演算する一法は、多数のライトプローブ（又は単に「プローブ」）により抽出された拡散光の重み付き組合せによるものである。
【００３６】
プローブは、拡散形グローバルイルミネーションがサンプルされた多次元空間内の位置であり、処理装置１０により前もって計算され、メモリ１１内に格納されている。具体的には、照射強度がいろいろな方向で各プローブの位置でサンプルされており、この情報は、任意の方向に於いて評価可能な、対応する「球面調和基底関数（spherical harmonic basis functions）」の係数（以下、「ＳＨ係数」）にエンコードされる。球面調和基底関数は、級数に２Ｂ＋１の値を加えたＢｔｈバンドを持った、関数の無限級数（an infinite series of functions, which is cut off at “bands”, with the Bth band adding 2B + 1 values to the series）であり、「バンド（bands）」でカットオフされている。経験的に、バンド０の単独のＳＨ係数は、アンビエントオクルージョン項（an ambient occlusion term）として考えることができ、バンド１の３つのＳＨ係数はベントノーマル（bent normals)として考えることが出来る。それぞれの引き続くバンドの詳細を述べる。バンドは、「オーダー」によって集められており、オーダー０は、０−１までの全てのバンドのセットを意味し、また、オーダー１は、１ＳＨ係数を要求し、オーダー２は、４ＳＨ係数を必要とし、オーダー３は、９ＳＨ係数(SH00, SH11, SH10, SH1-1, SH21, SH2-1, SH2-2, SH20, SH22)を必要とするなどである。
【００３７】
ｌ≧０でかつ−ｌ≦ｍ≦ｌの場合、球面調和基底関数Ｙｌｍは、球体の円又は線に関するフーリエ基底への近似である。最初の９球面調和関数（ｌ≦２）は、単純にデカルト成分（ｘ、ｙ、ｚ）の、定数（ｌ＝０）、線形（ｌ＝１）及び２次（ｌ＝２）多項式となり、数字的に以下のようになる。
【００３８】
Y00(θ, φ)=0.282095 
Y11(θ, φ)=0.488603 x
Y10(θ, φ)=0.488603 z
Y1-1(θ, φ)=0.488603 y
Y21(θ, φ)=1.092548 xz 
Y2-1(θ, φ)=1.092548 yz 
Y2-2(θ, φ)=1.092548 xy
Y20(θ, φ)=0.315392(3z2-1)
Y22(θ, φ)=0.546274(x2-y2),
ここでx=sinθcosφ、y=sinθsinφ、及びz=cosθである。
【００３９】
こうして、球面調和関数は、放射照度の低周波の方向性を、僅かな基底関数と対応するＳＨ係数を用いるだけで捕らえることが出来、極めて有用である。実際には、オーダー３（上記した）は満足のゆくパフォーマンスを示すが、これは本発明で使用される球面調和基底関数（及びＳＨ係数）の許容できるオーダーについての上限でもなければ下限でもないものと考えられる。球面調和関数に関する更なる情報は、Ravi Ramamoorthi及びPat Hanrahanの「An Efficient Representation for Irradiance Environment Maps」、Siggraph 2001、で見いだすことが出来、ここに参照文献として導入する。
【００４０】
球面調和基底関数のＳＨ係数は、放射強度が方向（向き）と共に変わる方法をエンコードする。特に、多次元空間内のある点がプローブのまさにその位置を占めていた場合、そしてその点が特定の法線によって規定された方向を持っていた場合、その点において表される拡散形グローバルイルミネーションは、ＳＨ係数で規定された割合で、該特定の法線に関して評価された球面調和基底関数によって決定された、拡散形グローバルイルミネーション計算の出力によって近似することが出来る。一方、図１０に示すように、ある点が多数のプローブ（この場合、二つのプローブｐｒ２とｐｒ３）間に距離０以外に位置していた場合、球面調和基底関数(Ylm(θ,φ))は、特定の法線に関して評価され、対応するＳＨ係数（オーダー３：各プローブについて、ＳＨ１……ＳＨ９）で作成することが出来、多数のプローブについてのその結果を各プローブの重要性に基づいて重み付けして（Ｗｐｒ２，Ｗｐｒ３）、当該ある点に対して加算することで、混ぜ合わされた形の拡散形グローバルイルミネーションを得ることが出来る。
【００４１】
法線(θ,φ)を有する点の拡散形グローバルイルミネーション＝
Wpr2*((SH00(pr2)*Y00(θ,φ))+(SH11(pr2)*Y11(θ,φ))+…+(SH22(pr2)*Y22(θ,φ))) + 
Wpr3*((SH00(pr3)*Y00(θ,φ))+(SH11(pr3)*Y11(θ,φ))+…+(SH22(p32)*Y22(θ,φ))).
【００４２】
代わりに、多数のプローブから以外の、特定の球面調和基底関数のＳＨ係数は、プローブごとに重み付けし、互いに加算し、一つの混ぜ合わされた特定の球面調和基底関数のＳＨ係数を与えることが出来、その混ぜ合わされた係数は、特定の法線に関して評価された球面調和基底関数の割合を規定する。
【００４３】
法線(θ,φ)を有する点の拡散形グローバルイルミネーション＝
((Wpr2 * SH00(pr2) + Wpr3 * SH00(pr3)) * Y00(θ,φ)) + 
((Wpr2 * SH11(pr2) + Wpr3 * SH11(pr3)) * Y11(θ,φ)) + 
… +
((Wpr2 * SH22(pr2) + Wpr3 * SH22(pr3)) * Y22(θ,φ)).
=
SH00’* Y00(θ,φ))+SH11’*Y11(θ,φ))+…+ SH22’* Y22(θ,φ).
【００４４】
球面調和関数についての代替えとしては、キューブマップ、球面ガウス関数又は球面関数などを用いることができることは、当業者にとって自明である。また、ＳＨ係数は、より一般的に放射パラメータとして表すことが出来、メモリ１１のアレイとして格納することが出来る。
【００４５】
多次元空間でのプローブの数は多いが（数千若しくはそれ以上）、各点においてすべてのプローブが拡散形グローバルイルミネーションに大いに寄与する訳では無い。どのプローブが最も寄与し、どのプローブを無視できるかを決定することは小さな技術的な問題では無い。例えば、現場の形状が複雑な場合、最も近い（距離に関して）が拡散グローバルイルミネーションに最も大きな影響を与えるものとは必ずしも言えない場合がある。従って、どのプローブを拡散グローバルイルミネーションの計算に利用し、どのようにそれらを重みづけるかを選択するための賢明で、効率的な技術的処理が必要とされる。この目的のために、本発明の非限定的な実施例に基づいて、処理装置１０は図３に示すような一連の処理を実行する。即ち、オフライン処理４００とリアルタイム処理５００である。
【００４６】
オフライン処理４００は、前もって行うことが出来、リアルタイムレンダリング中に行う必要は無い。非限定的な例として、図４に示すように、オフライン処理４００は３つのオフラインサブ処理４１０、４２０、４３０を含む。オフラインサブ処理が実行される順番は重要では無い。またそれらがリアルタイム処理５００から離れて実行されることも重要では無い。なぜなら処理装置１０は、一つ以上のオフラインサブ処理をリアルタイムレンダリング中に実行することが出来るほど十分な処理能力を持っているからである。オフラインサブ処理４１０、４２０、４３０について以下に述べる。
【００４７】
サブ処理４１０：図９に示すように、多次元空間は複数の領域、即ち、規則的な階層的格子（Ｒ１．１，Ｒ１．２、Ｒ１．３、.......）に細分化されている。もちろん他の方法による細分化も可能である。各領域は多数の点を含んでいる。各領域について、処理装置１０は潜在的に影響を与えるプローブのセットを生成する。特に、各領域について処理装置１０は、その領域の（各点の）拡散グローバルイルミネーションに潜在的ではあるが必ずしも影響力を持たないプローブを、当該領域とプローブとの距離やプローブの半径（又は影響の範囲）等の要素に基づいて識別する。図８Ａに示すように、潜在的に影響を有するプローブはそれらの空間座標又はコードにより識別されるが、この情報は多次元空間内の対応する領域の座標に関連する形でメモリ１１に格納されている。
【００４８】
非限定的な実施例において、潜在的に影響を有するプローブのセットは、どの領域でも、多次元空間内の全プローブよりも少ない。与えられた領域に関する潜在的に影響を有するプローブの数は、言ってみれば８から２０の間で変動するかもしれない。しかし、これは本発明を限定するものではなく、８より少なかったり、２０より多いプローブが、多次元空間内の与えられた領域において拡散グローバルイルミネーションに潜在的に影響を与えるかもしれない。
【００４９】
サブ処理４２０：多次元空間の各プローブについて、処理装置１０はＳＨ係数、即ち球面調和基底関数の係数を計算する。この情報は、多数の方向について拡散グローバルイルミネーションをサンプリングし、適切なＳＨ係数を決定するために変換されることで得られる。ＳＨ係数を決定する技術についての一つの非限定的な例として、Peter-Pike Sloanの記事“Stupid Spherical Harmonics (SH) Tricks”のページ８−９、２００８年（“Irradiance Environment Maps”とタイトルされた章）を基本とすることが出来、ここで参考として導入される。計算された係数の数はオーダーの関数である。図８Ｂに示すように、空間座標又は、それ自体空間座標を示すコード（図８Ｃの「プローブコード」pr1, pr2, …, pr4参照）のような特定のプローブについての識別情報に対応するアレイとして、ＳＨ係数はメモリ１１に、該特定のプローブごとに格納されている。
【００５０】
サブ処理４３０：多次元空間の各プローブについて、処理装置１０は「可視性マスク」を決定する。このために、「オクルージョン（閉塞）素子」と呼ばれる、オクルージョンを生じさせる多次元空間内の素子の存在を考慮する。オクルージョン素子の例としては、壁、天井、床、ドア、車両などである。オクルージョン素子の近傍の与えられた点における放射照度については、こうしたオクルージョン素子によって隠されているプローブによって受ける影響は、そうでないプローブによる影響よりも小さい。
【００５１】
従って、本発明の非限定的な実施例では、一組のＮ「オクルージョン平面」が各プローブ毎に定義される。非限定的な実施例では、各オクルージョン平面は、該平面内の点の座標及び該平面に対する法線のパラメータにより、又は該平面内の３点の座標を特定することで定義することが出来る。平面を特定する他の技術は、当業者にとってよく知られたものであろう。
【００５２】
Ｎオクルージョン平面は（交差することで）、プローブ毎に合計最大Ｐ（Ｎ）個の「ゾーン」が生み出される（定義される）。実施例では、Ｐ（Ｎ）＝２Ｎであるが、これは全ての実施例においてそうである必要は無い。これらのゾーンのいくつかはプローブから見ることが出来るが、いくつかは見ることが出来ない。可視性マスクはプローブから見えるＰ（Ｎ）ゾーンを表すのに使用される。特に、可視性マスクは、Ｐ（Ｎ）ビットの２進列であり、ビット位置はゾーンを示し、その位置のビット値は、該ゾーンがプローブから見えるか否かを示す。
【００５３】
例えば、図７に示すように（簡易化のために２次元空間を示す）、特定のプローブに対して、Ｎ＝３の場合、即ち３つ（Ｎ＝３）のオクルージョン平面７０１，７０２，７０３があるとすると、７つのゾーンが生成されることとなり、それらは順序付けられる（第１のゾーンは０００が表示され、第２のゾーンは００１など）。こうしてこの例では、２Ｄ空間内の３つのオクルージョン平面に対して７つのゾーンが存在することとなる。３Ｄ空間の場合、３つのオクルージョン平面に対して８つ以上のゾーンが存在し得る。
【００５４】
従って、図７の例では、７つのゾーンがあり、可視性マスクは７−ビット数である。図示された例では、プローブ７１０が有り（たまたまゾーン１１０に位置している）、プローブ７１０からはゾーン０００，０１１、１０１及び１１０を見ることが出来る一方で他のゾーンはプローブ７１０からは見ることが出来ない。これは、該プローブの可視性マスクは、７−ビット数の「１００１０１１」で表すことが出来、位置ｘのビットは、ゾーンＸ（ゾーンに対応する３桁のバイナリーコードの十進相当）がプローブ７１０から見えるか否かを示す。与えられたプローブにおいて、いくつかの可視ゾーンは、多次元空間に於いて互いに隣接している点に注意すべきである。他の場合では、互いに隣接する可視ゾーンが無いこともある（例えば、図７のゾーン０１１と１１０の例のように）。
【００５５】
ゾーン（Ｐ（Ｎ）＝２Ｎ以下であるが、より少ないかもしれない）は一貫性を持たせるためにある標準化方法で順番付けされる。例えば、ゾーンは、決められた交点、又は全体の中心、又は大きさになどに応じて、時計回り又は半時計回りで順序付けされる。ある種のアプローチは、計算の観点から、他よりもより効率的（低コスト）であり、一般的に好ましい。例えば、一つの計算的に効率の良い順序付けスキームは、各オクルージョン平面に対するそれらの位置によりゾーンを関連付けるものである。オクルージョン平面に対する位置はバイナリーであり、それはオクルージョン平面の「前面」（例えば、値０）であるか、オクルージョン平面の「背面」（例えば、値１）であるかである。
【００５６】
ゾーンが特定のオクルージョン平面の「前面」であるか否かは、４Ｄベクトル(ｎｘ,ｎｙ,ｎｚ,ｄ)によって表される該オクルージョン平面でゾーン内での点（ｘ,ｙ,ｚ,１）の４Ｄドット積を計算することで決定することが出来る。結果の符号（正又は負）が、ゾーンがオクルージョン平面の前面であるか背面であるかを示す。
【００５７】
こうして、各Ｎオクルージョン平面について上記した計算を行うことで得られたバイナリー値を鎖状に繋ぐことで、該ゾーンのエンコードされた数を表すＮビットの数（０と２Ｎの間）を得ることが出来る。
【００５８】
２次元空間の３オクルージョンゾーンの場合、実際には最大合計７ゾーン（７＜Ｐ（Ｎ）＝２３）存在する。これは、特有のゾーンを表わさず、存在しない一つの３ビットの二値組合せがあることを意味する。これは図７の組合せ「１１１」の場合であり、これは存在しないゾーンを表し、従って、可視性マスクは、８ビット数よりもむしろ７ビット数である。
【００５９】
図８Ｃに示すように、各特定のプローブについてＮオクルージョン平面（この場合Ｎ＝３）に対応するパラメータが、７ビットの可視性マスクと共に、識別情報に対応するアレイとしてメモリ１１に、空間座標又は空間座標のセットを示すコードとして各特定プローブ毎に格納されている。ここで、プローブ７１０は可視性マスク「１００１０１１」と関連付けられていることが分かる。
【００６０】
この例の中で、オクルージョン平面は２次元空間内に定義されているが（そこでは、「オクルージョン軸」と言い換えることもできる）、それらは３次元空間においても定義することが出来る。同様に、オクルージョン軸又は平面により生成されたゾーンは、従って２次元空間又は３次元空間においてもそれぞれ定義することが出来る。
【００６１】
リアルタイム処理５００が、レンダリングのために各点について処理装置１０により実行される。リアルタイム処理はレンダリングすべきシーンで、フレーム毎に１回、各点毎に実行される。「リアルタイム」という言葉は、単にオフライン処理４００から本処理を区別するために使用されており、リアルタイム処理５００がリアルタイムで実行されてもよいが、必ずしもリアルタイムでの処理を要求するものではない。リアルタイム処理５００を、図５に示す一連のステップを参照して説明する。以下の記述の順番は、単に行われるべき命令の順番であり、あるステップは異なる順序で実行され得るものである。
【００６２】
ステップ５１０：処理装置１０は、レンダリングすべきシーンの点を選択する。
ステップ５１５：処理装置１０は、選択された点が属する領域（例えば、図９内のグリッドによる）を決定する。
ステップ５２０：処理装置１０はＳＨ係数をセロに初期化する。
ステップ５３０：処理装置１０は該領域に潜在的に影響を与えるプローブのセットを調べ（これは、オフラインサブ処理４３０の結果として予め計算されている）、該セットから第１のプローブが選択される（「選択されたプローブ」）。
ステップ５４０：処理装置１０は選択されたプローブについての重みを決定する（それは選択された点に関連するので）。重みは選択された点との相対近さ（距離）に、部分的に依存する。選択されたプローブに関する重みは、セット中の他のプローブに比して、選択された点との距離に比例しないことも有る。重みは、プローブ半径及び／又は選択された点と該プローブ間の方向など、他の要素にも左右される。
ステップ５５０：処理装置１０は該点が属するゾーンを、選択されたプローブに対するオクルージョン平面に基づいて、ここで決定する。すでに述べたように、プローブ毎にＮオクルージョン平面とＰ（Ｎ）ゾーンが存在する。従って、バイナリーツリー法を使用することが出来る。そこで、例えば、処理装置１０はメモリ１０を調べて選択されたプローブに関する第１のオクルージョン平面を選択する。処理装置１０は、選択された点が選択されたプローブに関する選択されたオクルージョン平面の「前面」にあるか否かを決定する。これは、４Ｄベクトル（ｎｘ,ｎｙ,ｎｚ,ｄ）で表される選択されたオクルージョン平面と点（ｘ,ｙ,ｚ,１）の４次元ドット積を計算することで決定することが出来る。結果の符号（正又は負）は、選択された点が位置するゾーンの二つのサブセットのうち何れかを示す（即ち、前又は後ろ）。この演算は、選択されたプローブについての残りのＮ−１オクルージョン平面について行われ、選択された点が属するＰ（Ｎ）ゾーンの内の一つを識別することとなる。
【００６３】
非限定的な実施例において、選択されたゾーンが属するゾーンは、Ｐ（Ｎ）ビットの二進列としてエンコードされ、該ビット位置の一つだけが１（選択された点を含むゾーンに対応）で、残りは０となる。選択されたプローブに関する特定のゾーンに対応するビット位置は、選択されたプローブに関する可視性マスクを構築する際の特定のゾーンに対応するビット位置と同じである（サブ処理４２０参照）。
【００６４】
ステップ５６０：処理装置１０は、選択されたプローブが選択された点において拡散形グローバルイルミネーションに影響を与えるか否かを決定するために「可視性テスト」を行う。特に、このステップは、選択された点が属するゾーンが選択されたプローブから見えるか否かを決定する。仮に、ゾーンが選択されたプローブから見える場合、「見える」プローブとすることが出来、反面、該ゾーンを「見ること」が出来ないものは見えないプローブである。
【００６５】
非限定的な実施例において、図６Ａ及び図６Ｂに示すように、ステップ５５０の出力で生成された二進列（選択された点を含むゾーンに対応する位置に１を有し、それ以外は０）、６１０で表わされる、はサブ処理４３０で計算された選択されたプローブに関する可視性マスクを表示する二進列（選択されたプローブから見ることが出来るゾーンに対応する位置に１を有する）、６２０で表される、と比較される。非限定的な実施例によれば、二進列６１０と６２０を比較して、ビット論理「ＡＮＤ」を取り、二進出力列６３０を得る。これは選択された点が属するゾーンに対応する位置の１を保持するか（図６Ａに示すように、選択されたプローブが「見える」プローブであり、従って選択された点で拡散形グローバルイルミネーションに影響を与えることを意味する。次のステップ５７０）又は全部０となるかである（図６Ｂに示すように、選択されたプローブが「見えない」プローブであり、従って選択された点で拡散形グローバルイルミネーションに影響を与えないことを意味する。次のステップ５８０）。出力列６３０が１を含むか又は全て０であるかを決定する一つの単純な非限定的な方法は、０に対してテストする（to test against zero）ことである（即ち、結果！＝０）。
【００６６】
ステップ５７０：処理装置１０は、選択された点の各ＳＨ係数を、該ＳＨ係数のそれぞれの前もって格納されている値に加える（リアルタイム処理５００を介した初回は０であろう）。処理装置１０はまた、選択されたプローブに対応した重みに基づいて（ステップ５４０参照）、重み付けを行う。非限定的な実施例において、オーダー３球面調和基底関数を使用することが出来、それは、各カラー空間チャンネルに付き９球面調和基底関数、従って９ＳＨ係数の存在を必要とする。そして、ＲＧＢカラー空間の場合、合計２７ＳＨ係数となる。他の実施例においては、ＹＣｇＣｏ又はＹＣｂＣｒカラー空間が用いられる。ここでＹは輝度であり、ＣｇとＣｏは色度である。この場合、９ＳＨ係数（オーダー３球面調和）がＹに用いられ、４ＳＨ係数（オーダー２球面調和）がＣｇとＣｏににそれぞれ用いられ、合計１７ＳＨ係数となる。
【００６７】
ステップ５８０：処理装置１０は、選択された点につての潜在的に影響与えるプローブのセットに何らかのプローブが残っていないかどうか検証する。もし、残っていたら、処理装置１０は、次のプローブをセットから選択してステップ５４０に戻る。残っていない場合には、処理装置１０は、ステップ５９０に進む。
【００６８】
ステップ５９０：処理装置１０は、今や多様なＳＨ係数（ＳＨ００’、ＳＨ１１’，……ＳＨ２２’）のそれぞれについて、最終的な「混ぜ合わされた」値を持っており、それらは各プローブの重み付けを考慮したものである。選択された点での拡散形グローバルイルミネーションの強度は、選択された点における法線についての球面調和基底関数を評価し、対応する混ぜ合わされたＳＨ係数により調整された結果を足して合計を求め、（ii）計算で使用されたプローブの重み（ステップ５７０参照）の合計で、それを割ることで該合計を正規化することで計算される。
【００６９】
例えば、二つのプローブｐｒ２，ｐｒ３と対応する重みＷｐｒ２，Ｗｐｒ３の、オーダー３球面調和の場合、法線(θ, φ)を有する選択された点の拡散形グローバルイルミネーションの強度は：
(SH00’*Y00(θ,φ))+(SH11’*Y11(θ,φ))+…+(SH22’*Y22(θ,φ)) /
(Wpr2 +Wpr3)
ここで、
SHlm’=Wpr2 *SHlm(pr2)+Wpr3 *SHlm(pr3).
となる。
【００７０】
従って、潜在的に影響を与えるプローブのセット中の各プローブが重みと関連つけられている事実にも拘わらず、必ずしも全ての潜在的に影響を与えるプローブが実際に影響力を有するようになるとは限らない（ステップ５６０の可視性テストの通り）。例えば、選択された点が位置するゾーンは、セット中の全てのプローブから見ることが出来ないかもしれない。このことは、ある潜在的に影響を与えるプローブの影響を効果的に割引くものであり、このことは選択された点を含むゾーンを見ることが出来るプローブ重みの総合計が、該選択された点についての潜在的に影響をたたえるプローブのセット内の全てのプローブの重みの合計よりも少ないことを意味する。ステップ５９０の正規化は、単に選択された点を含むゾーンが、より多くのプローブから見ることが出来るという理由のみで、拡散形グローバルイルミネーションが不自然に大きくならないことを保証することとなる。
【００７１】
最後に、選択された点の拡散形グローバルイルミネーションの強度は格納され、レンダリング処理の他の場所で使用される。例えば、ある点におけるローカルイルミネーション成分を引き出し（計算し）、ローカルイルミネーション成分とグローバルイルミネーション成分の組みあわせによりディスプレィ装置における選択された点のレンダリングを行うことも可能である。なお、ローカルイルミネーション成分は、リアルタイムで計算して引き出すことが出来る。処理装置１０は、次には、次の点を選択し、ステップ５１５に戻る。
【００７２】
当業者であれば、ＳＨ係数は放射照度パラメータの非限定的な例であり、選択された点に関連する法線で評価された球面調和基底関数とＳＨパラメータとの線形結合を計算することも、拡散形グローバルイルミネーション成分を決定するために使用することの出来る放射照度パラメータのマッピング機能の非限定的な例であることが、わかる。
【００７３】
また、当業者であれば、本発明の実施例が、コンピュータゲーム、民生又は軍事シミュレーション環境、バーチャルリアリティ、コンピュータ援助アニメーション及びシネマトグラフなど、多様な用途に有効であることが、わかる。
【００７４】
また、当業者であれば、ある実施例に基づく拡散形グローバルイルミネーションの計算は、プローブの使用及びオクルージョン平面や軸により生成されるゾーンの使用により計算リソースのより効率的な使用が可能となる点、現場形状内のオクルージョンオブジェクトの効果をエミュレートするリアルな照明を得ることが出来る点が理解できる。
【００７５】
いくつかの実施例の実行に必要なある種の追加的な素子については、それらが当業者にとって自明の範囲であると思われるので、それらについては述べていない。更に、ある実施例は、ここに特に開示されていない何らかの素子が無くても機能し、またそうした素子に影響を受けない。
【００７６】
ここで述べられた実施例の全ての特徴は、いくつかの実行例中で述べた他の実施例の他の特徴と結合させることが出来る。
【００７７】
多様な実施例と例が示されたが、これらは本発明の説明目的であり、限定的な例ではない。多様な変形や強調が当業者にとって可能であり、それらは添付した特許請求の範囲で定義される本発明の範囲内のものである。
【図１】
2018060499.tif 000003
【図２Ａ】
2018060499.tif 000004
【図２Ｂ】
2018060499.tif 000005
【図２Ｃ】
2018060499.tif 000006
【図３】
2018060499.tif 000007
【図４】
2018060499.tif 000008
【図５】
2018060499.tif 000009
【図６Ａ】
2018060499.tif 000010
【図６Ｂ】
2018060499.tif 000011
【図７】
2018060499.tif 000012
【図８Ａ】
2018060499.tif 000013
【図８Ｂ】
2018060499.tif 000014
【図８Ｃ】
2018060499.tif 000015
【図９】
2018060499.tif 000016
【図１０】
2018060499.tif 000017