(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6983521
(24)【登録日】2021年11月26日
(45)【発行日】2021年12月17日
(54)【発明の名称】画像処理方法及びコンピュータ可読媒体
(51)【国際特許分類】
G06T 15/50 20110101AFI20211206BHJP
A63F 13/52 20140101ALI20211206BHJP
G06T 19/00 20110101ALI20211206BHJP
【FI】
G06T15/50 300
A63F13/52
G06T19/00 A
【請求項の数】23
【全頁数】17
(21)【出願番号】特願2017-45256(P2017-45256)
(22)【出願日】2017年3月9日
(65)【公開番号】特開2018-85084(P2018-85084A)
(43)【公開日】2018年5月31日
【審査請求日】2019年12月9日
(31)【優先権主張番号】2949383
(32)【優先日】2016年11月22日
(33)【優先権主張国】CA
(73)【特許権者】
【識別番号】517084612
【氏名又は名称】スクウェア エニックス、リミテッド
【氏名又は名称原語表記】SQUARE ENIX,LTD.,
(74)【代理人】
【識別番号】100083138
【弁理士】
【氏名又は名称】相田 伸二
(74)【代理人】
【識別番号】100189625
【弁理士】
【氏名又は名称】鄭 元基
(74)【代理人】
【識別番号】100196139
【弁理士】
【氏名又は名称】相田 京子
(72)【発明者】
【氏名】レブラン、ルーク
(72)【発明者】
【氏名】ダフォート、ジーン−フランシス
【審査官】
板垣 有紀
(56)【参考文献】
【文献】
米国特許第07446780(US,B1)
【文献】
米国特許出願公開第2016/0037058(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 11/00 − 19/20
A63F 13/00 − 13/98
(57)【特許請求の範囲】
【請求項1】
コンピュータ処理装置により実行される画像処理方法であって、現在のフレームの与えられたピクセルの明度を複数のフレームから決定する方法であり、
該方法は、
−前記コンピュータ処理装置により、現在のフレームの前記与えられたピクセル内の相対サンプル位置の座標を選択すること、
−前記コンピュータ処理装置により、前記相対サンプル位置の座標について現在の明度を決定すること、
−前記コンピュータ処理装置により、前記現在の明度と、前のフレームの少なくとも一つのピクセルの明度である第2の明度を混ぜ合わせること、前記前のフレームの少なくとも一つのピクセルは、前記現在のフレームの相対サンプル位置の座標を占める場面素子を含む前記前のフレームのピクセルである関連するピクセルを含んでおり、
前記現在の明度と前記第2の明度を混ぜ合わせることは、前記現在の明度と前記第2の明度の線形な組み合わせを演算することであり、前記現在の明度と前記第2の明度は、前記線形な組み合わせに対する相対的な寄与をそれぞれ有しており、前記第2の明度の相対的な寄与は、(i)前記前のフレームの関連するピクセルの前記場面素子の位置と(ii)前記前のフレームの関連するピクセルの中央との距離に依存しており、
−前記フレームの前記与えられたピクセルの前記混ぜ合わされた明度をメモリに格納すること、
から構成される。
【請求項2】
請求項1に記載の画像処理方法であって、前記関連するピクセルは、ベロシティバッファの中身によって、前記与えられたピクセルに関連付けられている、ことを特徴とする。
【請求項3】
請求項2に記載の画像処理方法であって、前記ベロシティバッファは、現在と前のフレーム間の前記場面素子の移動に関する情報を格納している、ことを特徴とする。
【請求項4】
請求項2に記載の画像処理方法であって、前記ベロシティバッファは、前記前のフレーム内の前記場面素子の位置についての情報を格納している、ことを特徴とする。
【請求項5】
請求項1に記載の画像処理方法であって、前記前のフレームの少なくとも一つのピクセルは、前記関連するピクセルを含む複数のピクセル及び該関連するピクセルに隣接した前記前のフレームの少なくとも一つの追加的なピクセルを含む、ことを特徴とする。
【請求項6】
請求項5に記載の画像処理方法であって、前記第2の明度は、前記関連するピクセルと前記少なくとも一つの追加的なピクセルを含んだ複数のピクセルについての組み合わされた明度である、ことを特徴とする。
【請求項7】
請求項6に記載の画像処理方法であって、該方法は、更に、前記複数のピクセルの組み合わされた明度を決定することを含む、ことを特徴とする。
【請求項8】
請求項7に記載の画像処理方法であって、前記複数のピクセルの前記組み合わされた明度を決定することは、前記関連するピクセルの明度と前記前のフレームの少なくとも一つの追加的なピクセル明度を、それぞれの係数に基づいて線形に組合せることを含む、ことを特徴とする。
【請求項9】
請求項8に記載の画像処理方法であって、前記係数は、総計が一つになるように正規化される、ことを特徴とする。
【請求項10】
請求項8に記載の画像処理方法であって、前記それぞれの係数は、前のフレームの前記場面素子の位置と該前のフレームのそれぞれのピクセルの中央との距離を反映している、ことを特徴とする。
【請求項11】
請求項8に記載の画像処理方法であって、前記それぞれの係数は、前のフレームの前記場面素子の位置と該前のフレームのそれぞれのピクセルの端部との距離を反映している、ことを特徴とする。
【請求項12】
請求項8に記載の画像処理方法であって、前記それぞれの係数は、前のフレームの前記場面素子の位置と該前のフレームのそれぞれのピクセル内のサンプル位置の座標との距離を反映している、ことを特徴とする。
【請求項13】
請求項1に記載の画像処理方法であって、該方法は、更に、
現在のフレームの複数のピクセルについて、繰り返し前記選択をし、決定をし、混ぜ合わせを行い、格納し、前記複数のピクセルについて、前記格納された明度を用いて現在のフレームをレンダリングする、ことを特徴とする。
【請求項14】
請求項2に記載の画像処理方法であって、前記関連するピクセルは、前記与えられたピクセルを含む、ことを特徴とする。
【請求項15】
請求項2に記載の画像処理方法であって、前記関連するピクセルは、前記与えられたピクセルを含まない、ことを特徴とする。
【請求項16】
請求項1に記載の画像処理方法であって、該方法は、更に、
前記メモリに格納されたピクセルの配列についての混ぜ合わされた明度から画像フレームをレンダリングする、ことを特徴とする。
【請求項17】
請求項16に記載の画像処理方法であって、該方法は、更に、
十分に高いレートで前記選択すること、決定すること、混ぜ合わせることを行い、少なくとも毎秒25画像フレームを生成する、ことを特徴とする。
【請求項18】
コンピュータ可読指令を含んだコンピュータ可読媒体であって、それら指令は、コンピュータ処理装置により実行されると、該コンピュータ処理装置に現在のフレームの与えられたピクセルについて、明度を複数のフレームから決定する方法を実行させることが出来、
前記方法は、
−現在のフレームの前記与えられたピクセル内の相対サンプル位置の座標を選択すること、
−前記相対サンプル位置の座標について現在の明度を決定すること、
−前記現在の明度と、前のフレームの少なくとも一つのピクセルの明度である第2の明度を混ぜ合わせること、前記前のフレームの少なくとも一つのピクセルは、前記現在のフレームの相対サンプル位置の座標を占める場面素子を含む前記前のフレームのピクセルである関連するピクセルを含んでおり、
前記現在の明度と前記第2の明度を混ぜ合わせることは、前記現在の明度と前記第2の明度の線形な組み合わせを演算することであり、前記現在の明度と前記第2の明度は、前記線形な組み合わせに対する相対的な寄与をそれぞれ有しており、前記第2の明度の相対的な寄与は、(i)前記前のフレームの関連するピクセルの前記場面素子の位置と(ii)前記前のフレームの関連するピクセルの中央との距離に依存しており、
−前記フレームの前記与えられたピクセルの前記混ぜ合わされた明度をメモリに格納すること、
から構成される。
【請求項19】
コンピュータが実行可能な画像処理方法であって、
該方法は、
−現在のフレーム内の与えられたピクセルのサンプル座標を占める場面素子について、(i)前のフレームの前記場面素子の位置と(ii)該場面素子によって占められた前のフレーム内のピクセルのサンプル座標間の距離を決定し、
−前記距離による割合で前記与えられたピクセルに対する過去と現在の明度の寄与を組みあわせる、ことを特徴とする。
【請求項20】
請求項19に記載の、コンピュータが実行可能な画像処理方法であって、
前記場面素子によって占められた前のフレーム内のピクセルのサンプル座標は、前記場面素子が現れている前のフレームのピクセルの中心で規定する、ことを特徴とする。
【請求項21】
請求項19に記載の、コンピュータが実行可能な画像処理方法であって、
前記距離は、ユークリッド距離である、ことを特徴とする。
【請求項22】
請求項19に記載の、コンピュータが実行可能な画像処理方法であって、
前記距離は、マンハッタン距離である、ことを特徴とする。
【請求項23】
コンピュータ可読指令を含むコンピュータ可読媒体であって、前記コンピュータ可読指令は、コンピュータが実行すると、該コンピュータに画像処理方法を実行させること出来、
前記画像処理方法は、
−現在のフレーム内の与えられたピクセルのサンプル座標を占める場面素子について、(i)前のフレームの前記場面素子の位置と(ii)該場面素子によって占められた前のフレーム内のピクセルのサンプル座標間の距離を決定し、
−前記距離による割合で前記与えられたピクセルに対する過去と現在の明度の寄与を組みあわせる、ことを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理方法に関わり、特にエイリアシングを軽減するために画像フレームのピクセルの明度を計算する方法に関する。
【背景技術】
【0002】
エイリアシングは、場面内のオブジェクトの変形速度に比して該場面のサンプリングレート(即ち、毎秒のフレーム数)が低すぎることで生じる。これは、オブジェクトに滑らかな動きの印象を与える代わりに、ある場所にジャンプしたり、突然現れたりする形で表現されることとなる。
【0003】
エイリアシングに対応する一つの方法は、より高いレートで場面をサンプリングすることである。しかし、これでは演算量がコンピュータの能力以上のものとなってしまうかもしれない。
【0004】
エイリアシングに対応する別の方法は、一つのフレームから次のフレームで、各ピクセル内で僅かに異なる点(即ち、何時も各ピクセルの丁度真ん中ではなく)をサンプリングすることである。これは、滑らかな効果を得ることが出来る。しかし、これは、ゴーストの発生、ちらつきや他の好ましくない結果を生む可能性がある。
【0005】
従って、エイリアシングを扱う効果的なアプローチが望まれている。
【発明の概要】
【0006】
第1の観点によると、コンピュータ処理装置で実行される、現在のフレームの与えられたピクセルの明度を決定するための画像処理方法である。この方法は、コンピュータ処理装置により、現在のフレームの与えられたピクセル内のサンプル位置の座標を選択すること、コンピュータ処理装置により、前記サンプル位置の座標の現在の明度を決定すること、コンピュータ処理装置により、前のフレームの少なくとも一つのピクセルの明度と前記演算された明度を混ぜ合わせること、前記前のフレームの少なくとも一つのピクセルは、前記与えられたピクセルに関連するピクセルを含んでおり、メモリに、前記フレームの与えられたピクセルの前記混ぜ合わされた明度を格納すること、である。
【0007】
第2の観点によると、コンピュータ処理装置可読指令を有するコンピュータ可読媒体を提供することであり、コンピュータ処理装置で実行する際に、該コンピュータ処理装置に現在のフレームの与えられたピクセルの明度を決定する方法を実行させる。該方法は、現在のフレームの与えられたピクセル内のサンプル位置の座標を選択すること、前記サンプル位置の座標の現在の明度を決定すること、前のフレームの少なくとも一つのピクセルの明度と前記演算された明度を混ぜ合わせること、前記前のフレームの少なくとも一つのピクセルは、前記与えられたピクセルに関連するピクセルを含んでおり、メモリに、前記フレームの与えられたピクセルの前記混ぜ合わされた明度を格納すること、である。
【0008】
第3の観点によると、コンピュータに実行される以下の画像処理方法を提供することであり、該方法は、現在のフレーム内の与えられたピクセルのサンプル座標に関連した場面素子について、前のフレーム内の前記場面素子の位置と該場面素子が現れている前記前のフレーム内の前記ピクセルの座標間の距離を決定し、前記距離に依存した割合で、前記与えられたピクセルについて過去及び現在の明度の寄与を組みあわせること、である。
【0009】
第4の観点によると、コンピュータ可読指令を有するコンピュータ可読媒体を提供することであり、それは、コンピュータによって実行されると、以下の画像処理方法を実行する。その方法は、現在のフレーム内の与えられたピクセルのサンプル座標に関連した場面素子について、前のフレーム内の前記場面素子の位置と該場面素子が現れている前記前のフレーム内の前記ピクセルの座標間の距離を決定し、前記距離に依存した割合で、前記与えられたピクセルについて過去及び現在の明度の寄与を組みあわせること、である。
【0010】
こうして、フレーム内のピクセルの表された明度に対して過去及び現在の相対的寄与度を動的に変えることで、エイリアシングは軽減される。
【0011】
本発明のこれらの及び他の観点は、添付した図面と併せて以下の本発明の特定の実施例の記述を参照することで、当業者にとって明らかになる。
【図面の簡単な説明】
【0012】
【
図1】
図1は、本発明の限定されない例示的な実施例を実装したゲーム装置の構成を示すブロック図である。
【
図2A】
図2Aは、
図1のゲーム装置によって実行されるゲームプログラムの要素を示す図であり、ゲームデータ処理機能及びゲームレンダリング処理機能を有するものである。
【
図2B】
図2Bは、本発明の実施例によるゲームデータの一例を示す図。
【
図2C】
図2Cは、3Dグラフィック情景をディスプレィ装置に表示するためのゲーム画面に変換する処理の一例を示す図。
【
図3】
図3は、例示的な実施例に基づく、画像フレームのピクセル内でサブピクセルのサンプリング位置を示す図。
【
図4】
図4は、例示的な実施例に基づく、連続するフレーム内で各フレームの対応するピクセルをサンプリングするために使用される、サブピクセル内での変化を示す図。
【
図5】
図5は、例示的な実施例に基づく、現在と過去の寄与分に基づいてレンダリングされた明度の計算を示す図。
【
図6】
図6は、例示的な実施例に基づく、ベロシティバッファの中身によって定義されるような場面要素の座標変化を示す図。
【
図7】
図7は、例示的な実施例に基づく、前のフレームの関連するピクセルの存在をその近傍の追加ピクセルと共に示す図。
【
図8】
図8は、例示的な実施例に基づく、場面素子の座標とその近傍の複数のピクセルのそれぞれの中央との間のユークリッド距離の演算を示す。
【
図9】
図9は、例示的な実施例に基づく、場面素子の座標とその近傍の複数のピクセルのそれぞれの中央との間のマンハッタン距離の演算を示す。
【0013】
図面はある観点又は実施例の理解の助けるものであり、限定的に解釈されるべきものではない。
【発明を実施するための形態】
【0014】
図1は、本発明の限定されない例示的な実施例を実装したゲーム装置1の構成を示すブロック図である。ある場合には、ゲーム装置1は、Xbox(登録商標)、Playstation(登録商標)又はNintendo(登録商標)ゲーム筐体といった専用のゲーム筐体である。また他の場合には、ゲーム装置1は、多目的ワークステーション又はラップトップコンピュータである。更に他の場合、ゲーム装置1は、スマートフォンのようなモバイル装置であり、また更に他の場合には、ゲーム装置1は携帯型ゲーム装置である。
【0015】
ゲーム装置1は、少なくとも一つの処理装置10、少なくとも一つのコンピュータ可読メモリ11,少なくとも一つの入出力モジュール15及び少なくとも一つの電源27を有し、更にビデオゲームを遊ぶのに使用されるゲーム装置で見受けられるさまざまな部品も含まれる。ゲーム装置1の様様な部品は、データバス、コントロールバス、パワーバスなどのような一つ以上のバスを介して互いに通信することが出来る。
【0016】
図1に示すように、プレイヤ7は、ディスプレィ装置5のスクリーンに表示されるゲーム画像を見ながら、ゲームコントローラ3を介してゲームの局面を制御することでゲームをプレイする。従って、ゲーム装置1はゲームコントローラ3から少なくとも一つの入出力モジュール15を介して入力を受ける。ゲーム装置1は、また、ディスプレィ装置5及び/又はオーディオ装置(例えば、スピーカ、図示せず)に少なくとも一つの入出力モジュール15を介して出力を供給する。他の実施例では、入出力モジュール15に接続されるのは、一つ以上のゲームコントローラ及び/又は一つ以上のディスプレィ装置5でもよい。
【0017】
少なくとも一つの処理装置10は、一つ以上のコアを有する中央処理ユニット(CPU)を有する。また少なくとも一つの処理装置10は、出力データを、ディスプレィ装置5のディスプレィの入出力モジュール15に供給するためのビデオエンコーダ/ビデオコーデック(コーダ/デコーダ、図示せず)と接続された、少なくとも一つのグラフィック処理ユニット(GPU)を有する。更に該少なくとも一つの処理装置10は、オーディオ装置の入出力モジュール15に供給される出力データを生成するためのオーディオエンコーダ/オーディオコーデック(コーダ/デコーダ、図示せず)と接続された少なくとも一つのオーディオ処理ユニットを有する。
【0018】
少なくとも一つのコンピュータ可読メモリ11は、RAM(ランダムアクセスメモリ)、ROM(リードオンリーメモリ)、フラッシュメモリ、ハードディスク駆動装置、DVD/CD/Blueray(登録商標)及び/又は他の適切なメモリ装置、技術又は構成を有する。コンピュータ可読メモリ11は、ゲームプログラム33,ゲームデータ34及びオペレーティングシステム35などの多様な情報を格納している。
【0019】
ゲーム装置1の電源が入ると、処理装置10は処理装置10を起動するブート処理を実行し、コンピュータ可読メモリ11と通信する。特にこのブート処理ではオペレーティングシステム35を実行する。オペレーティングシステム35は、ゲーム装置に適した何らかの商用又は専用オペレーティングシステムである。オペレーティングシステム35が実行されると、処理装置10はディスプレィ装置5に表示する画像を生成し、ゲーム装置1はゲームコントローラ3を介してプレイヤ7が選択することの出来る多様なオプションや、プレイするビデオゲームを選択、及び/又は開始するオプションを表示する。プレイヤ7により選択/開始されたビデオゲームは、ゲームプログラム33によってエンコードされている。
【0020】
処理装置10は該ゲームプログラム33を実行して、エンコードされたビデオゲームに関連する多様な種類の情報処理機能を実行することが出来るように構成されている。特に、
図2Aに示すように、ゲームプログラム33を実行することで処理装置10は、以下に述べるゲームデータ処理機能22及びゲームレンダリング処理機能24を実行することとなる。
【0021】
ゲームレンダリング処理機能24はディスプレィ装置5に表示されるゲーム画像の生成を含むものである。ここで、ゲームデータ処理機能22は、ゲームの進行やゲームの現在状態を表す情報を処理することを含む(例えば、ディスプレィ装置5に表示する必要のないゲームに関する情報の処理)。
図2Aでは、ゲームデータ処理機能22及びゲームレンダリング処理機能24は、単一のゲームプログラム33の一部を構成している。しかし、他の実施例では、ゲームデータ処理機能22及びゲームレンダリング処理機能24は、別個のメモリに格納された別個のプログラムであり、分かれた、恐らく遠方の処理装置により実行される場合もある。例えば、ゲームレンダリング処理機能22は、CPUで実行することもでき、ゲームレンダリング処理機能24はGPUで実行することも出来る。
【0022】
ゲームプログラム33の実行中には、処理装置10は、オブジェクト、キャラクタのような構成物、及び/又はあるゲームの規則に従ったレベルを操作し、ある種の人工的な知的アルゴリズムの適用を行う。ゲームプログラム33の実行中、処理装置10は、生成、ロード、格納、読み込みを行い、また、オブジェクトやキャラクタ及び/又はレベルに関するデータを持ったゲームデータ34に全般的なアクセスを行う。
図2Bは、本発明の実施例に基づくゲームデータ34の一例である。ゲームデータ34は、前述の構成に関するデータを有しており、従って、オブジェクトデータ42,キャラクタデータ46及び/又はレベルデータ44を含む。
【0023】
オブジェクトとは、ゲーム画像のフレーム(コマ)にグラフィカルに表示することの出来るゲーム環境における何らかの素子又は素子の部分を表す。オブジェクトは、建物、車両、家具、植物、空、大地、大洋、太陽及び/又は何らかの適当な素子を3次元的に表現したものである。オブジェクトは、数字、幾何学又は数学的な表現のような、他の非グラフィカルな表現であることもある。オブジェクトデータ42は、ゲーム画像のフレーム内でのグラフィカルな表現のような、オブジェクトの現在表現についてのデータや、数字、幾何学又は数学的な表現についてのデータを格納する。オブジェクトデータ42としては、画像データ、位置データ、材料/テクスチャデータ、物理状態データ、可視性データ、照明データ(例えば、方向、位置、色及び/又は強度)、サウンドデータ、モーションデータ、衝突データ、環境データ、タイマーデータ及び/又は該オブジェクトに関連する他のデータなどの属性データも格納することができる。
【0024】
キャラクタは、オブジェクトに類似するが、属性は本質的により動的であり、オブジェクトが通常持たない追加的な属性を持っている。例えば、プレイングキャラクタのある属性は、プレイヤ7により制御することが出来る。またノンプレイングキャラクタ(NPC)のキャラクタのある属性は、ゲームプログラム33により制御され得る。キャラクタの一例としては、人、アバター、動物及び/又は何らかの他の適当なオブジェクトなどが挙げられる。キャラクタは、数字、幾何学又は数学的な表現のような他の非視覚的表現も持つことがある。キャラクタは、キャラクタが装備する武器、又はキャラクタが着る衣服などのオブジェクトと関連することがある。キャラクタデータ46は、ゲーム画面のフレームにおけるグラフィカルな表現、又は数字、幾何学又は数字の表現のような、キャラクタの現在表現についてのデータを格納する。キャラクタデータ46は、画像データ、位置データ、材料/テクスチャデータ、物理状態データ、可視性データ、照明データ(例えば、方向、位置、色及び/又は強度)、サウンドデータ、モーションデータ、衝突データ、環境データ、タイマーデータ及び/又は該キャラクタに関連する他のデータなどの属性データも格納することができる。
【0025】
レベルは、ゲーム環境内で、キャラクタが進む、オブジェクトの特別なアレンジメントに関わるものである。レベルは、キャラクタが移動する経路に関わるデータを含む。レベルは、キャラクタやオブジェクトを巻き込んだオブジェクト、ゴール、チャレンジ又はパズルをエンコードするデータも含む。レベルは、レンダリングされ、ディスプレィ装置5のような2次元ディスプレィ装置に表示され得るグラフィカルな表現をもつが、レバルはまた、数字、幾何学又は数学的な表現のような他の非限定的な表現も有する。また、レベルには多様なレベルがあり、それぞれが自分のレベルデータ44を有している。
【0026】
ゲームデータ34は、オブジェクトデータ42、レベルデータ44及び/又はキャラクタデータ46の表現及び/又は属性の一部である、ディスプレィ装置5に表示される際のゲームの現在の視野又はカメラアングルに関するデータ(例えば、1人称視点、3人称視点など)を含む。
【0027】
ゲームプログラム33を実行する際には、処理装置10は、プレイヤ7がゲームを選択/スタートした後に、イニシャライズ段階を行い、ゲームをイニシャライズする。イニシャライズ段階は、必要なゲームのセットアップを実行し、ゲームの開始に際してゲームデータを準備するために使用される。ゲームデータ34は、ゲームプログラム33の処理に伴って変化(即ち、ゲームのプレイ中)する。ここで“ゲームの状態”という用語は、ここではゲームデータ34の現在の状態又は性質、従って、多様なオブジェクトデータ42、キャラクタデータ46及び/又はレベルデータ44及びそれらの対応する表現及び/又は属性を定義するために使用される。
【0028】
イニシャライズ段階の後、ゲームプログラム33を実行する処理装置10は、一つ以上のゲームループを実行する。一つ以上のゲームループは、ゲームプレイ中継続的に実行され、ゲームデータ処理機能22及びゲームレンダリング処理機能24はルーチン的に実行されるようになる。
【0029】
ゲームループは、ゲームデータ処理機能22がゲームコントローラ3を介したプレイヤの入力処理を行ってゲーム状態をアップデートする際に実行され、その後ゲームレンダリング処理機能24がアップデートされたゲーム状態に基づいて表示すべきゲーム画像を生成するように機能する。ゲームループは時間経過を追跡し、ゲームプレイの進行を制御する。プレイヤが入力する以外のパラメータが、ゲーム状態に影響を与える点は注目すべき点である。例えば、多様なタイマー(即ち、経過時間、特定のイベントからの時間、一日のバーチャル時間など)がゲーム状態に影響を与え得る。別の言い方をすると、ゲームは、プレイヤ7が入力を行わなくても進行しており、従って、プレイヤの入力が無くてもゲーム状態はアップデートされるのである。
【0030】
一般的に、ゲームデータ処理機能22が毎秒実行する回数は、ゲーム状態に対する毎秒のアップデート回数を規定し(以後、「アップデート/秒」と称する)、ゲームレンダリング処理機能24が毎秒実行する回数は、毎秒のゲーム画像のレンダリングを規定する(以後、「フレーム/秒」と称する)。理論的には、ゲームデータ処理機能22とゲームレンダリング処理機能24は、毎秒の実行回数が同じと考えられる。特定の非限定的な例として、目標が毎秒25フレームだとすると、ゲームデータ処理機能22とゲームレンダリング処理機能24は、共に40ms毎に実行可能な能力(即ち、1s/25FPS)が望ましい。ゲームデータ処理機能22が実行し、その後にゲームレンダリング処理機能24が実行する場合、ゲームデータ処理機能22とゲームレンダリング処理機能24は共に40msのタイムウインド(time window)で実行される必要がある。その時のゲーム状態によって、ゲームデータ処理機能22及び/又はゲームレンダリング処理機能24を行う時間は変わり得るものである。もしゲームデータ処理機能22とゲームレンダリング処理機能24が共に40ms以下で実行されるなら、ゲームデータ処理機能22とゲームレンダリング処理機能24の次のサイクルを実行する前にスリープタイマーを使用することが出来る。しかし、ゲームデータ処理機能22とゲームレンダリング処理機能24が与えられたサイクルを実行するのに40ms以上掛かる場合には、一定のゲームスピードを維持するためにゲーム画像の表示をスキップするのも一つのテクニックである。
【0031】
目標となる毎秒フレーム数が、25フレーム/秒以上又は以下の場合(例えば、60フレーム/秒)もあるが、人間の目がゲーム画像フレームのレンダリングにおいて何らの遅れも感じないように、ゲームデータ処理機能22とゲームレンダリング処理機能24は20から25回/秒以下とならないように実行されることが望ましい。当然、フレームレートが高くなればなるほど、画像間の時間は短くなり、ゲームループを実行するに必要な処理装置もより高性能となり、GPUのような特別な処理装置に頼ることとなる。
【0032】
他の実施例では、ゲームデータ処理機能22とゲームレンダリング処理機能24は別々のゲームループで、従って独立した処理で実行されることもある。こうした場合、ゲームレンダリング処理機能24が実行中の時であっても、ゲームデータ処理機能22は特別のレート(即ち、特別なアップデート回数/秒)でルーチン実行することが出来、またゲームデータ処理機能22が実行中の時であっても、ゲームレンダリング処理機能24は特別のレート(即、特別なフレーム数/秒)でルーチン実行することが出来る。
【0033】
ゲームデータ処理機能22とゲームレンダリング処理機能24をルーチン的に行う処理は、当業者の範囲における多様な技術に基づいて実行され、そうした技術は本明細書において、ゲームデータ処理機能22とゲームレンダリング処理機能24がどのように実行されるかの一例として述べられる。
【0034】
ゲームデータ処理機能22が実行されると、コントローラ3を介したプレイヤ入力(もし有れば)及びゲームデータ34が処理される。特に、プレイヤ7がビデオゲームをプレイする際には、プレイヤ7は、いくつかの例を挙げるが、左に移動せよ、右に移動せよ、ジャンプせよ、撃て、などの多様なコマンドをゲームコントローラ3を介して入力する。プレイヤが入力すると、ゲームデータ処理機能22はゲームデータ34をアップデートする。別の言い方をすると、オブジェクトデータ42、レベルデータ44及び/又はキャラクタデータ46がゲームコントローラ3を介したプレイヤの入力に反応してアップデートされる。なおゲームデータ処理機能22が実行するたびにゲームコントローラ3を介したプレイヤ入力がある訳では無い。プレイヤ入力が入力されなくても、ゲームデータ34は処理され、アップデートされる。こうしたゲームデータ34のアップデートは、表現及び/又は属性がゲームデータ34に対するアップデートを規定しているとき、オブジェクトデータ42、レベルデータ44及び/又はキャラクタデータ46の表現及び/又は属性に応じて行われる。例えば、タイマーデータは一つ以上のタイマー(例えば、経過時間、特定のイベントからの経過時間、一日のバーチャル時間など)を規定し、それらはゲームデータ34(例えば、オブジェクトデータ42、レベルデータ44及び/又はキャラクタデータ46)のアップデートを生じさせる。他の例として、プレイヤ7によって制御されないオブジェクトが衝突すると(跳ね返ったり、合流したり、砕けたりなど)、ゲームデータ34、例えばオブジェクトデータ42、レベルデータ44及び/又はキャラクタデータ46は衝突によりアップデートされる。
【0035】
一般的に、ゲームデータ34(例えば、オブジェクト、レベル及び/又はキャラクタの表現及び/又は属性)はゲームの3次元(3D)グラフィック画像を規定するデータを表す。一つ以上の3Dグラフィックオブジェクトを含む3次元(3D)グラフィック画像を、ディスプレィ装置5に表示する2次元(2D)のラスタライズされたゲーム画像に変換する処理は、一般的にレンダリングと呼ばれる。
図2Cに、3Dグラフィックシーンをディスプレィ装置5にスクリーンを介して表示するためのゲーム画像に変換する例を示す。ステップ52で、ゲームデータ処理機能22は、ゲームの3次元(3D)グラフィックシーンを表現するデータを処理して、複数のバーテックスデータに変換する。バーテックスデータはレンダリングパイプライン55(グラフィックパイプラインとしても知られている)により処理するのに適している。ステップ55では、ゲームレンダリング処理機能24がレンダリングパイプライン55によりバーテックスを処理する。レンダリングパイプライン55の出力は、スクリーンを介してディスプレィ装置5に表示する一般的なピクセルである(ステップ60)。
【0036】
より詳細に述べると、ステップ52で、グラフィックシーンの3Dグラフィックオブジェクトは、一つ以上の3Dグラフィック要素に細分化される。要素は、レンダリングのための幾何学的な存在(例えば、点、線、ポリゴン、表面、オブジェクト、パッチなど)を規定するために互いにグループ化され接続された一つ以上のバーテックスのグループである。各3Dグラフィック要素毎に、バーテックスデータがこの段階で生成される。各要素のバーテックスデータは一つ以上の属性(例えば、位置、色、法線又はテクスチャ座標系情報など)を含むものである。バーテックスデータを引き出す際に、カメラ変換(a camera transformation)(例えば、回転変換)が行われ、3Dグラフィックシーンの3Dグラフィックオブジェクトを、現在の視点又はカメラアングルに変換する。また、バーテックスデータを引き出す際に、光源データ(例えば、方向、位置、色及び/又は強度)が考慮される。この段階で引き出されたバーテックスデータは、一般的にレンダリングパイプライン55に送られるバーテックスの順序付きリストである。順序付きリストのフォーマットは一般的にレンダリングパイプライン55の具体的な実行に依存する。
【0037】
ステップ55で、ゲームレンダリング処理機能24はバーテックスデータをレンダリングパイプライン55により処理する。レンダリングパイプラインはよく知られており(例えば、OpenGl、DirectXなど)、レンダリングパイプライン55の実行に用いられる特定のレンダリングパイプラインに拘わらず、レンダリングパイプライン55の一般的な処理は、3Dシーンの2Dラスタ表現(例えば、ピクセル)を生成することである。レンダリングパイプライン55は、一般的に、バーテックスデータの2次元(2D)スクリーン空間への投影位置を計算し、ディスプレィ5に出力するためのゲーム画像(例えば、ピクセル)を引き出すために、光、色、位置、情報、テクスチャ座標を考慮に入れた多様な処理及び/又は他の適当な処理を行なう(ステップ60)。
【0038】
ある場合には、ゲーム装置1はインターネットのサーバーと一つ以上のインターネット設備の間に配置される。従って、複数のプレイヤが同じオンラインゲームに参加することが出来、ゲームプログラムの機能(ゲームレンダリング機能及び/又はゲームデータ処理機能)は、少なくとも一部をサーバーにより実行することも可能である。
【0039】
ゲームレンダリング処理機能24の実施例では、以下に詳細に述べる画像処理方法を実行する。特に
図3に示すように、画像フレームの各ピクセルがN個の相対サンプル位置と関連付けられている。これらの相対サンプル位置の一つは、ピクセル中心に対応しており、それは例えば、2−D座標を使用して表すことが出来る。他のN−1個の相対サンプル位置は、該ピクセル中心の近傍のN−1個のサブピクセルに対応しており、該ピクセルの「部分」と考えることが出来る。一つの実施例では、N−1=4であり、各ピクセルに関連して5個の潜在的な相対サンプル位置が有る。例えば、位置は、「中央」、「右上」、「左上」、「右下」及び「左下」である。相対サンプル位置の数は、任意で有り、ピクセル内のそれらの配置は、規則的でも、不規則でも良い。
【0040】
一時的なアンチエイリアシングを適用すると、連続するフレームF、F+1、……F+2に渡ってピクセルPを表現するのに使用される明度は、以下のように計算される(
図4参照):
−連続する最初のフレーム(即ち、F)において、処理装置10は、N個の相対サンプル位置(ピクセル中央又はN−1個のサブピクセルの何れかの位置)の最初の一つの位置の明度を計算する。
−連続する2番目のフレーム(即ち、F+1)において、処理装置10は、N個の相対サンプル位置の2番目の位置の明度を計算する。
−連続する3番目のフレーム(即ち、F+2)において、処理装置10は、N個の相対サンプル位置の3番目の位置の明度を計算し、こうして引き続く各フレームにおいて明度を計算し、引き続くN+1番目のフレームに達し、N個の相対サンプル位置のサイクルが終了すると、最初からやり直す。
【0041】
従って、ピクセルPは、連続する各フレームについて、異なるサンプル位置で「サンプリング」される点に注目するべきである。勿論、多様なフレーム内で他のピクセルについても処理は行われるが、共通するフレームの全てのピクセルは、それぞれのピクセル内で同じ相対サンプル位置でサンプリングされる。
【0042】
説明を簡略化するために、フレームFのピクセルPを表すのに使用される明度を、T(P;F)で表す。この「表された明度(rendered color value」」は、「現在の寄与」と「過去の寄与」の混合(例えば、正規化された一時結合)である。現在の寄与は、ピクセルP及びフレームFの「現在の明度」を含むものである(C(P;Fで表す)。現在の明度は、現在の場面の幾何学的配置及び照明状態に基づく瞬間的な明度である。この部分については、過去の寄与は、以前のフレームF−1の関連するピクセル(P#で表す)の近傍の一つ以上のピクセルの明度を以前に計算したものを含むものである。この過去の寄与は、T_COMB(P#;F−1)で表すことが出来、例えば、メモリ11のアキュムレーションバッファ内に格納されている。
【0043】
関連するピクセルP#はピクセルPを含むかもしれないし、含まないかもしれず、それはフレームF−1とフレームFとの間でピクセルPの近傍で根本的な画像がどれほど変化したかによる。(変化は場面内の動きやカメラの動きの結果であり得る。)また、関連するピクセルP#(及び関連するピクセルP#の近傍の一つ以上のピクセル)の、サンプルが行われる相対サンプル位置は、ピクセルPのサンプリングで使用される相対サンプル位置とは異なることを、認識すべきである。
【0044】
こうして更に
図5を参照すると、フレームFのピクセルPの表された明度は、以下の式で表現することが出来る。
T(P;F)= [W]*PAST + [1-W]*PRESENT
= [w]*T_COMB(P#;F-1) + [1-W]*C(P;F)
【0045】
上の式は、この例では、線形の組合せであるが、これは必ずしも本件に必要なことではないが、後述する利点を持った二つの概念を示すものである。一つ目は、[W] と [1-W]、即ち過去と現在の相対的な寄与、の分布を決定する概念である。二つ目は、過去の寄与T_COMB(P#;F-1)を決定する概念である。この量は、フレームF−1のピクセルPについて表された明度と等しくなく、またフレームF−1の関連するピクセルP#について表された明度とも等しくないことを認識すべきである。むしろ、それは後述するように、ピクセルP#と関連するピクセルP#の近傍のゼロ又は一つ以上のピクセルの組合せに関連して表された明度の線形な組合せである。
【0046】
過去と現在の相対的な寄与の決定
フレームF内でサンプリングされるピクセルPの実際の座標は、S(P;F)で示される。それは、ピクセルPについてN個の可能性(N個の相対サンプル位置に対応している)の内の一つであり、またフレームFが引き続くフレーム内の何処に位置するかによる。ゲーム内の元となるオブジェクト(又は「場面素子」)上の点にも関連している。こうして同じピクセルでサンプリングされた異なる座標(それらは、2,4,5,9……個となるかもしれないが)は、同じ元となるオブジェクト上の異なる点、又は異なる元となるオブジェクト上の点と関連しているかもしれない。メモリ11の一部であるベロシティバッファ500(
図5参照)は、元となるオブジェクトが前のフレームでも存在しているという仮定のもと、現在のフレームの多様な潜在的サンプル座標と、これらの座標に位置する元となるオブジェクト上の正確な点が前のフレームに現れる場所で、投影距離及び方向を関連付ける。他の実施例では、ベロシティバッファ500は、現在のフレームの潜在的なサンプル座標の各セットについて、これらのサンプル座標に位置する元となるオブジェクト上の正確な点が前のフレームで現れている実際の座標を格納することも出来る。ベロシティバッファ500の内容の演算は、少なくとも部分的にはゲームデータ34に基づいて処理装置10が実行する。現在のフレームに関するあるサンプル座標に位置する元となるオブジェクト上の正確な点が前のフレームで現れていた場所の、投影距離及び方向を演算ずる際には、処理装置10は、現在と前のフレーム間の相対的なサンプル座標の変化を補正することが出来る。言い換えれば、もし場面変化が無く、カメラが動かなければ、現在のサンプリング位置からの投影距離は常に同じ点に導かれる。言い換えれば、サンプリング位置の変更は距離の変更をもたらし、前のフレームの同じ座標に向いている。
【0047】
限定されない実施例によると、過去と現在の相対的な分布(即ち、前述の式の[W]と[1−W])は、多様な要素に基づいてピクセル間及びフレーム間で変化する。特にフレームFのピクセルPを考えると、一つのキーとなる要素は、(i)フレームF−1内で、ピクセルPに対応する元となるオブジェクト上の点がフレームF内でサンプリングされた位置、と(ii)この位置を含むフレームF−1のピクセルの中央、間の距離である。言い方を変えれば、過去と現在の相対的な分布は「現在のサンプル座標を占める場面素子の前の位置」と該前の位置を含んだピクセルの中央との距離に依存する。この点は、
図6を参照して説明する。
【0048】
上述したように、フレームFで現在サンプリングされたピクセルPの座標をS(P;F)とする。この例では、S(P;F)はピクセルPの左下のサブピクセルに対応している。これらの座標に場面素子があり、この場合、それはナイフの刃の先端に近い点である。この場面素子は、「前の位置」、即ち、前のフレームF−1内の位置を有している。特に、フレームF内のピクセルPについての現在のサンプル座標を占めている場面素子の前の位置は、PREV(S(P;F))で示され、PREV(S(P;F))を有するピクセルは、P#で示されている。こうしてフレームF−1内のピクセルP#(
図6参照)は、フレームF内のピクセルPに「関連するピクセル」として言及される。
【0049】
PREV(S(P;F))で示される、「現在のサンプル座標を占める場面素子の前の位置」は、オブジェクトの動きについての情報(問題となる場面素子に関するオブジェクトも含めて)を格納するバッファ500を参照することで得ることが出来る。PREV(S(P;F))は、相対サンプル位置(例えば、ピクセルの中央又はサブピクセルの位置)の一つと対応しているが、かならずしもそうで無くてもよい。例えば、フレームFの「左下」の相対サンプル位置を占めるナイフの刃の先端近くの点は、フレームF−1の関連するピクセルP#の「右下」の相対サンプル位置を占めている。しかしながら、まさに同じ素子(ナイフの刃の先端近くの点)が関連するピクセルP#の異なる点を占めているが、それは予め決められた相対サンプル位置(この非限定的な例では、5つの相対サンプル位置がある)の一つである必要は無い。
【0050】
PREV(S(P;F))と関連するピクセルP#の中央との間の距離は、前述の式の[W]と[1−W]を決定する要素である。この実施例では、PREV(S(P;F))が関連するピクセルP#の中央に近づけば近づくほど、過去の寄与により多くの重みが与えられる。逆に、PREV(S(P;F))が関連するピクセルP#の中央から遠ざかれば遠ざかるほど、過去の寄与への重みが少なくなり、現在の寄与により多くの重みが与えられる。過去の寄与を性格付ける係数Wの値は、こうして前述の要素に依存しつつ、0.75から095の間の近辺であろう。なお、他の範囲も勿論、可能である。
【0051】
異なる言い方をすると、過去の寄与に与えられる重みの量は、現在のサンプル座標(前述のように、相対サンプル位置はフレーム間で補正される)を占める対応するオブジェクト上の点の前の位置が、どれほどピクセルの中心に近いかによって変動する。それにも関わらず、どんなにこの距離が大きくなっても、常に何らかのゼロ以外の重みを過去の寄与に与えることが望ましい。
【0052】
過去の寄与 T_COMB(P#;F−1)の決定
前述したように、過去の寄与T_COMB(P#;F−1)は、ピクセルP#と、関連するピクセルP#の近傍のゼロ又は一つ以上のピクセルについての前に表された明度の線形な組合せである。特に、関連するピクセルP#の近傍にM個の追加のピクセルのようなものがあってもよい。その数は、言ってみれば、例えば0から9であり、処理上の要求やPREV(S(P;F))によるであろう。
【0053】
特に、PREV(S(P;F))が関連するピクセルP#の正に中央であり、M=0と置いて、全ての過去の寄与を関連するピクセルP#に属させ、他の前に表された明度は不要としたとき、この場合、
T_COMB(P#;F−1)=T(P#;F−1)
となる。
【0054】
一方、PREV(S(P;F))が関連するピクセルP#の正確に中央ではなく、M>0であり、関連するピクセルP#とPREV(S(P;F))の近傍の他のM個のピクセルの過去の明度が組み合わされてT_COMB(P#;F−1)となる方法は、線形の組合せで与えられる:
ここで、多様なP#iは、関連するピクセルP#以外の、その近傍のピクセルを意味し、特にPREV(S(P;F))の近傍のピクセルである。
【0055】
例えば、
図7のPで、P#1、P#2及びP#3はPREV(S(P;F))の近傍の、P#以外のピクセルを意味する。
【0056】
線形の組合せのM+1個の前述の係数(a0、a1、……aM)のそれぞれの値は、PREV(S(P;F))と対応するピクセル(P#、P#1、……P#M)の中央又は端部との間の相対距離(d0、d1、……dM)をベースに選択することが出来る。
【0057】
二つの限定されない例において、相対距離は、ユークリッド距離(
図8参照)又はマンハッタン距離(
図9参照)に基づいて評価することが出来、演算条件に依存する。
【0058】
ある実施例では、線形の組合せT_COMB(P#;F−1)の係数(a0、a1、……aM)は、常に合計して1となるように正規化される。
【0059】
また、線形の組合せ以外の組合せを使用することが出来る。
【0060】
変形例として、過去の寄与を決定する際に、一つより多い過去フレームに目を向けることも出来る。
【0061】
上記した記述及び図は、いくつかの例示的な実施例を記述し、示したものであり、本発明の範囲内において変形が可能である。例えば、当業者に取って周知であろう素子については、ここでは述べていない、一方、述べられたある特性は、ある実施例では省略され、他の実施例では含まれている。当業者は、勿論、本発明がここに添付されたクレームによってのみ限定されることを理解するものである。