説明

プログラム、情報記憶媒体、画像生成装置及びサーバ

【課題】少ない処理負荷で、違和感の少ない立体視画像を生成することが可能なプログラム、情報記憶媒体、画像生成装置及びサーバを提供すること。
【解決手段】第1の画像と第2の画像に基づき、立体視画像を生成する処理を行う場合に、第1の画像生成部が、スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの情報を記憶させる処理を行い、第2の画像生成部が、ピクセル処理前に、第2の画像の画素毎に、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、前記ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体、画像生成装置及びサーバに関する。
【背景技術】
【0002】
従来から、立体視を実現する画像生成装置が知られている(例えば、特許文献1)。例えば、2眼式の画像生成システムでは、左眼用画像と右眼用画像を生成する。そして、立体視用の眼鏡や、視差バリア或いはレンチキュラ等の光学素子を用いて、観察者の左眼には左眼用画像のみが見え、右眼には右眼用画像のみが見えるようにすることで、立体視を実現する。また、N眼式の画像生成装置では、N個の異なる視点における画像から立体視画像を生成する。
【0003】
例えば、従来技術では、シェーディング計算をN個の異なるビューについて1回だけ実行し、シェーディングされた色を、すべてのビューについて再利用するような処理を行う点が記載されている(引用文献1の0019段落等)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−514230号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1に示すような従来技術では、どの画素の色をどのようにして再利用しているのか不明であるので、N個の視点(ビュー)に基づき生成される画像は不正確であり、生成される立体視画像に違和感があった。
【0006】
また、通常、画像生成処理過程において、ピクセル処理は非常に処理負荷が高いので、N個の視点に基づく各画像において、全画素の画像情報を求めるピクセル処理を行う場合、全体として処理負荷が高くなってしまう。さらには、時間をかけて正確に画像を生成したとしても、反射光成分が多いハイライト部分においては、ハイライトの位置や形状が左右画像で異なることから、その部分の立体感に違和感が生じることがある。これは、自然現象としても起こりうることであるが、映像制作時にこれらを軽減できれば、違和感のない見やすい立体視映像を作成できる。
【0007】
本発明は、以上の課題に鑑みてなされたものであり、その目的は、少ない処理負荷で、違和感の少ない立体視画像を生成することが可能なプログラム、情報記憶媒体、画像生成装置及びサーバを提供することにある。
【課題を解決するための手段】
【0008】
(1)本発明は、仮想3次元空間にプリミティブを配置し、立体視画像を生成する処理を行うプログラムであって、前記仮想3次元空間において第1の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第1の画像を生成する処理を行う第1の画像生成部と、前記仮想3次元空間において第2の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第2の画像を生成する処理を行う第2の画像生成部と、第1の画像と第2の画像に基づき、立体視画像を生成する処理を行う立体視画像生成部として、コンピュータを機能させ、前記第1の画像生成部が、スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの情報を記憶させる処理を行い、前記第2の画像生成部が、前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの情報と前記特定バッファの画素のプリミティブの情報とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、前記ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行うプログラムに関する。また、本発明は、上記プログラムを記憶した情報記憶媒体に関係する。
【0009】
ここで、特定バッファとは、画像に関する属性情報を画素単位で記憶可能なバッファであり、例えば、ステンシルバッファである。また、第1の画像から流用可能な画素数は、1つでもよいし複数でもよい。また、流用する処理とは、例えば、第1の画像の画素の画像情報を第2の画像の画素の画像情報としてフレームバッファ等に記憶させる処理、第1の画像から、当該画素を複数サンプリング(抽出)し、それらを合成(平均化、加重平均化、等)した画像情報を第2の画像の画素の画像情報としてフレームバッファ等に記憶させる処理等である。
【0010】
また、「プリミティブの情報」は、プリミティブの識別情報、プリミティブの仮想3次元空間の位置座標、プリミティブの奥行き情報の少なくとも1つを含む。
【0011】
本発明によれば、ピクセル処理前に、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行うので、第2の画像生成処理において画素のピクセル処理を省略することができ処理負荷を軽減させることができる。また、本発明は、第1の画像の当該画素の画像情報を流用することによって、例えばハイライト領域などにおいて、違和感の少ない立体視画像を生成することができる。また、本発明は、第2の画像の画素毎に、プリミティブの情報と特定バッファの画素のプリミティブの情報とを比較する処理を行うことによって、流用すべき画素か否かを適確に判断することができる。
【0012】
(2)本発明のプログラム、情報記憶媒体は、前記第1の画像生成部が、スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの識別情報を記憶させる処理を行い、前記第2の画像生成部が、前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの識別情報と前記特定バッファの画素のプリミティブの識別情報とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行うようにしてもよい。
【0013】
本発明は、第2の画像の画素毎に、プリミティブの識別情報と特定バッファの画素のプリミティブの識別情報とを比較する処理を行うことによって、流用すべき画素か否かを適確に判断することができる。
【0014】
(3)本発明のプログラム、情報記憶媒体は、前記第1の画像生成部が、スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの前記仮想3次元空間の位置座標を記憶させる処理を行い、前記第2の画像生成部が、前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの仮想3次元空間の位置座標と前記特定バッファの画素の仮想3次元空間の位置座標とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行うようにしてもよい。
【0015】
本発明は、プリミティブの仮想3次元空間の位置座標と特定バッファの画素の仮想3次元空間の位置座標とを比較する処理を行うことによって、流用すべき画素か否かを適確に判断することができる。
【0016】
(4)本発明のプログラム、情報記憶媒体は、前記第1の画像生成部が、スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの奥行き情報を記憶させる処理を行い、前記第2の画像生成部が、前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの仮想3次元空間の位置座標と、前記第1の仮想カメラ及び前記第2の仮想カメラの仮想カメラ情報及び前記特定バッファの画素の奥行き情報に基づき算出された仮想3次元空間の位置座標と、を比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行うようにしてもよい。
【0017】
第1の仮想カメラ及び第2の仮想カメラの仮想カメラ情報とは、第1の仮想カメラ及び第2の仮想カメラを制御するための基準となる基準仮想カメラ(センターカメラ)の仮想カメラ情報(例えば、基準仮想カメラの視点位置、方向、画角)と、そこからの各カメラの相対位置を決定できる情報(例えば、左右カメラの間隔など)してもよいし、第1の仮想カメラの仮想カメラ情報(例えば、第1の仮想カメラの視点位置、方向、画角)、及び、第2の仮想カメラの仮想カメラ情報(例えば、第2の仮想カメラの視点位置、方向、画角)としてもよい。
【0018】
本発明は、プリミティブの仮想3次元空間の位置座標と、前記第1の仮想カメラ及び前記第2の仮想カメラの仮想カメラ情報及び前記特定バッファの画素の奥行き情報に基づき算出された仮想3次元空間の位置座標と、を比較する処理を行うことによって、流用すべき画素か否かを適確に判断することができる。
【0019】
また、本発明は、特定バッファの各画素に、第1の仮想カメラに対して最前面にあるプリミティブの奥行き情報を記憶させる処理を行うので、プリミティブの仮想3次元空間の位置座標を記憶するよりも記憶する容量が少なくて済み、記憶容量を節約することができる。
【0020】
(5)本発明のプログラム、情報記憶媒体は、前記第2の画像生成部が、プリミティブの情報と前記特定バッファの画素のプリミティブの情報とが同じ場合に、第1の画像から流用可能な画素の画像情報が存在すると判定する処理を行い、前記特定バッファの当該画素に対応する第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行うようにしてもよい。
【0021】
本発明によれば、プリミティブの情報と特定バッファの画素のプリミティブの情報とが同じ場合に、第1の画像から流用可能な画素の画像情報が存在すると判定する処理を行うので、簡易に、第1の画像から流用可能な画素の画像情報が存在するか否かを判定することができる。
【0022】
(6)本発明のプログラム、情報記憶媒体は、前記第2の画像生成部が、第2の画像の画素毎に、前記第1の仮想カメラ及び前記第2の仮想カメラの仮想カメラ情報及び第2の画像の画素の奥行き情報に基づいて、前記特定バッファの探索領域を決定し、プリミティブの情報と探索領域内の画素のプリミティブの情報とを比較する処理を行うようにしてもよい。
【0023】
本発明によれば、探索領域内の画素を比較対象にするので、比較対象を減らすことができ、処理負荷を軽減することができる。また、本発明は、第1の仮想カメラ及び第2の仮想カメラの仮想カメラ情報及び第2の画像の画素の奥行き情報に基づいて、特定バッファの探索領域を決定するので、正確に探索領域を決定することができる。
【0024】
(7)本発明のプログラム、情報記憶媒体は、前記立体視画像生成部が、第1〜第N(N≧3)の仮想カメラに基づいて、立体視画像を生成する場合に、前記第1の画像生成部が、第1の仮想カメラに基づき、前記頂点処理と前記ピクセル処理とを行うことによって、第1の画像を生成する処理を行い、前記特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの情報を記憶させる処理を行い、前記第2の画像生成部が、前記頂点処理と前記ピクセル処理とを、第2〜第Nの仮想カメラ毎に行うことによって、第2〜第Nの各画像を生成する処理を行い、前記第2の画像生成部が、第2〜第Nの各画像において、画素毎に、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、前記ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、画像の画素の画像情報に流用する処理を行うようにしてもよい。
【0025】
本発明によれば、第2〜第Nの各画像において、画素毎に、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、前記ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、画像の画素の画像情報とする処理を行うので、流用した画素のピクセル処理を省略することができ処理負荷を軽減させることができる。また、第1の画像の当該画素の画像情報を流用することによって、違和感の少ない立体視画像を生成することができる。
【0026】
(8)本発明のプログラム、情報記憶媒体は、前記第1の画像生成部が、前記第1の画像を加工する処理を行い、前記第2の画像生成部が、前記第2の画像を加工する処理を行い、前記立体視画像生成部が、加工された第1の画像と、加工された第2の画像とに基づいて、立体視画像を生成する処理を行うようにしてもよい。
【0027】
ここで、加工処理とは、例えば、エフェクト処理等である。本発明によれば、第1、第2の画像間において異なる加工処理を行う場合において、加工処理を行う前の第1の画像の画素の画像情報を流用することによって、違和感の少ない立体視画像を生成することができる。
【0028】
(9)本発明のプログラム、情報記憶媒体は、前記画像情報を、色情報、法線情報、奥行き情報、半透明情報の少なくとも1つとしてもよい。
【0029】
(10)本発明は、仮想3次元空間にプリミティブを配置し、立体視画像を生成する処理を行う画像生成装置であって、前記仮想3次元空間において第1の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第1の画像を生成する処理を行う第1の画像生成部と、前記仮想3次元空間において第2の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第2の画像を生成する処理を行う第2の画像生成部と、第1の画像と第2の画像に基づき、立体視画像を生成する処理を行う立体視画像生成部と、を含み、前記第1の画像生成部が、スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの情報を記憶させる処理を行い、前記第2の画像生成部が、前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの情報と前記特定バッファの画素のプリミティブの情報とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、前記ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う画像生成装置に関する。
【0030】
(11)本発明は、仮想3次元空間にプリミティブを配置し、立体視画像を生成する処理を行うサーバであって、前記仮想3次元空間において第1の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第1の画像を生成する処理を行う第1の画像生成部と、前記仮想3次元空間において第2の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第2の画像を生成する処理を行う第2の画像生成部と、第1の画像と第2の画像に基づき、立体視画像を生成する処理を行う立体視画像生成部と、を含み、前記第1の画像生成部が、スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの情報を記憶させる処理を行い、前記第2の画像生成部が、前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの情報と前記特定バッファの画素のプリミティブの情報とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、前記ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行うサーバに関する。
【図面の簡単な説明】
【0031】
【図1】本実施形態の画像生成装置の機能ブロック図の例。
【図2】本実施形態の立体視画像生成処理の説明図。
【図3】図3(A)(B)は、本実施形態の立体視画像の説明図。
【図4】典型的なレンダリングパイプラインのフローチャート図。
【図5】プリミティブの説明図。
【図6】第1の画像(左眼用画像)の生成処理の説明図。
【図7】図7(A)は、スクリーン40の説明図。図7(B)は、特定バッファ175の説明図。
【図8】第1の画像(左眼用画像)のレンダリングパイプラインのフローチャート図。
【図9】第2の画像(右眼用画像)の生成処理の説明図。
【図10】画素の流用に関する処理の説明図。
【図11】画素の流用に関する処理の説明図。
【図12】画素の流用に関する処理の説明図。
【図13】画素の流用に関する処理の説明図。
【図14】第2の画像(右眼用画像)のレンダリングパイプラインのフローチャート図。
【図15】3個以上の仮想カメラに基づく立体視画像の説明図。
【図16】本実施形態のサーバの機能ブロック図の例。
【発明を実施するための形態】
【0032】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0033】
1.構成
図1に本実施の形態の画像生成装置10(コンピュータ、画像生成システム、端末、携帯端末、ゲーム装置、携帯電話、スマートフォン)の機能ブロック図の一例を示す。なお、本実施形態の画像生成装置10は図1の構成要素(各部)の一部を省略した構成としてもよい。
【0034】
操作部160(入力部)は、観察者(プレーヤ)が操作情報(入力情報)を入力するためのものであり、ユーザの操作情報を処理部100に出力する。操作部160の機能は、ボタン、方向キー(十字キー)、方向入力可能なコントロールスティック(アナログキー)、レバー、キーボード、マウス、タッチパネル型ディスプレイ、加速度センサや傾きセンサ、カメラ等を内蔵するコントローラなどのハードウェアにより実現することができる。
【0035】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。そして、本実施形態の記憶部170は、ワーク領域として使用される主記憶部172と、画像が記憶されるフレームバッファ174と、特定バッファ175(例えば、ステンシルバッファ)、オブジェクトのモデルデータが記憶されるオブジェクトデータ記憶部176と、各オブジェクトデータ用のテクスチャが記憶されるテクスチャ記憶部178と、オブジェクトの画像の生成処理時にZ値が記憶されるZバッファ179とを含む。なお、これらの一部を省略する構成としてもよい。
【0036】
なお、フレームバッファ174は、第1のフレームバッファ174a(左眼用フレームバッファ)と、第2のフレームバッファ174b(右眼用フレームバッファ)とを含む。また、テクスチャ記憶部178は、第1のテクスチャバッファ178a(左眼用テクスチャバッファ)と、第2のテクスチャバッファ178b(右眼用テクスチャバッファ)とを含む。また、Zバッファ179は、第1のZバッファ179a(左眼用Zバッファ)と、第2のZバッファ179b(右眼用Zバッファ)とを含む。
【0037】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。情報記憶媒体180には、本実施形態の処理部100の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶することができる。
【0038】
表示部190は、本実施形態により生成された画像(仮想3次元空間を所与の視点から見た画像)を出力するものであり、その機能は、CRT、LCD、或いはタッチパネル型ディスプレイなどにより実現できる。
【0039】
本実施形態の表示部190は、立体視画像を表示する。例えば、裸眼方式では、表示部190は、有限個の画素からなるLCDの前面又は背面に、パララックスバリアやレンチキュラ等の光学素子が配置される。例えば、垂直バリアまたは垂直レンチキュラによる2眼式の場合には、表示部190に、1枚(1フレーム)の第1の画像(左眼用画像)を表示するための表示領域と、1枚の右眼用画像を表示するための表示領域とが、短冊状に第1の短冊画像表示領域(左眼用短冊画像表示領域)及び第2の短冊画像表示領域(右眼用短冊画像表示領域)として交互に配置されている。パララックスバリアが配置される場合、その隙間からは、観察者の左眼には左眼用短冊画像表示領域に表示される左眼用短冊画像、右眼には右眼用短冊画像表示領域に表示される右眼用短冊画像のみが見えるようになっている。また、レンチキュラが配置される場合、各短冊集合画像に対応したレンズの光屈折効果により、観察者の左眼には左眼用短冊画像表示領域に表示される左眼用短冊画像、右眼には右眼用短冊画像表示領域に表示される右眼用短冊画像のみが見えるようになっている。また、偏光眼鏡方式では、表示部190の奇数ラインと偶数ラインに偏光方向の異なる偏光フィルタ(例えば、左円偏光を透過する偏光フィルタと、右円偏光を透過する偏光フィルタ)が交互に配置され、表示部190の奇数ラインと偶数ラインに第1の画像(左眼用画像)と第2の画像(右眼用画像)を交互に表示し、これを偏光眼鏡(例えば、左眼に左円偏光を透過する偏光フィルタ、右眼に右円偏光を透過する偏光フィルタを付けた眼鏡)で見ることで立体視を実現する。また、ページフリップ方式では、表示部190に第1の画像(左眼用画像)と第2の画像(右眼用画像)を所定時間毎(例えば、1/120秒毎)に交互に表示する。そして、この表示の切り替えに連動して液晶シャッター付きの眼鏡の左眼、右眼の液晶シャッターを交互に開閉することで、立体視を実現する。
【0040】
通信部196は他の画像生成装置10やサーバとの間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0041】
なお、サーバ20が有する情報記憶媒体280や記憶部270に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体180や記憶部170に記憶してもよい。このようにプログラムやデータを受信してゲームシステムを機能させる場合も本発明の範囲内に含む。
【0042】
処理部100(プロセッサ)は、操作部160からの操作データ、通信部196を介して受信したデータやプログラムなどに基づいて、ゲーム処理、画像生成処理、音生成処理などの処理を行う。ここで、ゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。この処理部100は主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0043】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部118、通信制御部119、画像生成部120、音生成部130を含む。
【0044】
オブジェクト空間設定部110は、オブジェクト(キャラクタ、移動体)、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)を仮想3次元空間(オブジェクト空間、ワールド座標系)に配置設定する処理を行う。つまり、プリミティブを仮想3次元空間に配置する処理を行う。例えば、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義であり、例えば、ワールド座標系でのX、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0045】
移動・動作処理部112は、オブジェクト(移動体、キャラクタ等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160により観察者(プレーヤ)が入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)、物理法則などに基づいて、オブジェクトを仮想3次元空間(オブジェクト空間、ワールド座標系)内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(例えば、1/60秒又は1/30秒等)毎に順次求めるシミュレーション処理を行う。なお、フレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0046】
また移動・動作処理部112は、ネットワークを介して接続された他の画像生成装置10から通信部196を介して受信したオブジェクト(他のプレーヤに対応するオブジェクト)の移動情報や動作情報に基づき当該オブジェクトの移動情報や動作情報を更新する処理を行うようにしてもよい。
【0047】
また、移動・動作処理部112は、他の画像生成装置から通信部196を介して受信した操作データ等に基づき、当該オブジェクトの移動・動作演算を行うようにしてもよい。
【0048】
仮想カメラ制御部118は、仮想3次元空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、操作部160によりプレーヤが入力した操作データ或いはプログラム(移動・動作アルゴリズム)等に基づいて、ワールド座標系における仮想カメラの位置(X、Y、Z)又は光軸の方向(例えば、X、Y、Z軸の各軸の負方向からみて時計回りに回る場合における回転角度等)を制御する処理を行う。要するに、視点位置、仮想カメラの向き、画角を制御する処理を行う。
【0049】
また、2眼式の立体視方式により立体視画像を表示する場合には、仮想カメラ制御部118は、第1の仮想カメラ(左眼用仮想カメラ)VCL、第2の仮想カメラ(右眼用仮想カメラ)VCRそれぞれの位置、向き及び画角を制御する。また、仮想カメラ制御部118は、第1の仮想カメラと第2の仮想カメラを設定するための基準となる基準仮想カメラ(センターカメラ)VCCの制御を行い、基準仮想カメラVCCの位置、向き及び第1、第2の仮想カメラ間の距離情報に基づいて、第1、第2の仮想カメラの位置、向きを制御するようにしてもよい。
【0050】
つまり、仮想カメラ制御部118は、第1、第2の仮想カメラVCL、VCRそれぞれの仮想カメラ情報(位置、向き、画角の少なくとも1つ)を制御する。また、仮想カメラ制御部118は、基準仮想カメラVCCの(位置、向き、画角の少なくとも1つ)を制御する。
【0051】
通信制御部119は、他の画像生成装置又はサーバ20とネットワークを介して相互にデータを送受信する処理を行う。
【0052】
なお、本実施形態の画像生成装置10では、通信制御で必要となるネットワーク情報をサーバから取得し、管理する処理等を行うようにしてもよい。例えば、画像生成装置10は、各画像生成装置10に個別に付与される画像生成装置10の識別情報(オンラインゲームに参加できる画像生成装置10を識別するために個別に付与されたデータ、ID)と、画像生成装置10の識別情報に対応付けられたパケットの送信先を指定する宛先情報(IPアドレスなど)とを取得し、管理する処理を行うようにしてもよい。
【0053】
通信制御部119は、他の画像生成装置又はサーバ20に送信するパケットを生成する処理、パケット送信先の画像生成装置10のIPアドレスやポート番号を指定する処理、受信したパケットに含まれるデータを記憶部170に保存する処理、受信したパケットを解析する処理、その他のパケットの送受信に関する制御処理等を行う。
【0054】
また、本実施形態の通信制御部119は、他の画像生成装置10、又はサーバ20においての接続が確立されてから接続が切断されるまで、データを所定周期(例えば、1秒周期で)互いに送受信する処理を行うようにしてもよい。ここで、画像生成装置10で送受信されるデータは、操作部(入力部)の操作情報(入力情報)としてもよいし、各画像生成装置10の操作対象のオブジェクト(機体、移動体)の位置情報、移動情報としてもよい。
【0055】
また、本実施形態の通信制御部119は、他の画像生成装置(第2の画像生成装置)又はサーバ20から送信されたパケットを受信すると、受信したパケットを解析し、パケットに含まれる他の画像生成装置の操作対象のオブジェクトの位置情報などのデータを記憶部に記憶する処理を行う。
【0056】
また、複数の画像生成装置10で構成されるネットワークシステムの場合は、複数の画像生成装置10間でデータの送受信を行いながらオンラインゲームを実行するピア・ツー・ピア(いわゆるP2P)方式としてもよいし、サーバ20を介して各画像生成装置10がデータ(情報)の送受信を行いながらオンラインゲームを実行するクライアント・サーバ方式によるものであってもよい。また、本実施形態のネットワークシステムでは、有線通信のみならず無線通信でデータを送受信してもよい。
【0057】
例えば、本実施形態の通信制御部119は、サーバ20に対して操作情報を送信し、サーバ20において生成される立体視画像の画像データ(表示データ)等を受信するようにしてもよい。
【0058】
画像生成部120は、処理部100で行われる種々の処理の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。
【0059】
画像生成部120は、いわゆる3次元画像を生成する場合には、まずオブジェクトの各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0060】
頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換(カメラ座標変換)、クリッピング処理、射影変換(透視変換、投影変換)、ビューポート変換(スクリーン座標変換)、光源計算等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。ジオメトリ処理後のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、オブジェクトデータ記憶部176に保存される。
【0061】
そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、プリミティブ(ポリゴン)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。
【0062】
ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し(画像を構成する各画素の画像情報を求め)、透視変換されたオブジェクトの描画色などの画像情報をフレームバッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色情報(R、G、Bの各輝度情報)、法線情報、奥行き情報(深度情報)、半透明情報(α値)等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、仮想3次元空間(オブジェクト空間)内において仮想カメラ(所与の視点)から見える画像が生成される。
【0063】
そして画像生成部120は、オブジェクトを描画する際に、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0064】
テクスチャマッピングは、記憶部170のテクスチャ記憶部178に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部178からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0065】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ179(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファ179に格納されるZ値を参照する。そして参照されたZバッファ179のZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば参照されたZ値よりも小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファ179のZ値を新たなZ値に更新する。
【0066】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。例えば、通常αブレンディングでは、α値を合成の強さ(合成率、合成割合)として線形補間を行うことにより2つの色を合成した色を求める処理を行う。なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えばRGBの各色成分の輝度を表す色情報以外のプラスアルファの情報(半透明情報)である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0067】
特に本実施形態の画像生成部120は、第1の画像生成部124と第2の画像生成部126、立体視画像生成部128とを含む。
【0068】
第1の画像生成部124(左眼用画像生成部)は、仮想3次元空間(ワールド座標系、オブジェクト空間)において、第1の仮想カメラ(左眼用仮想カメラVCL)から見える第1の画像(左眼用画像)の各画素の画像情報(色情報、法線情報、深度情報、半透明情報の少なくとも1つ)を、第1のバッファ(例えば、第1のフレームバッファ174a、第1のテクスチャバッファ178a、第1のZバッファ179a)に記憶させる処理を行う。
【0069】
特に本実施形態の第1の画像生成部124は、仮想3次元空間において第1の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第1の画像を生成する処理を行う。
【0070】
また、第1の画像生成部124は、スクリーンに対応する特定バッファの各画素に、第1の仮想カメラに対して最前面にあるプリミティブの情報(例えば、プリミティブの識別情報、プリミティブの仮想3次元空間の位置座標、プリミティブの奥行き情報、等)を記憶させる処理を行う。
【0071】
例えば、第1の画像生成部124は、スクリーンに対応する特定バッファの各画素に、第1の仮想カメラに対して最前面にあるプリミティブの識別情報(プリミティブの番号i)及び仮想3次元空間の位置座標(ワールド座標値)の少なくとも一方を記憶させる処理を行う。例えば、第1の画像生成部214は、Zバッファ179aの更新時に、スクリーンに対応する特定バッファの各画素に、第1の仮想カメラに対して最前面にあるプリミティブの識別情報(プリミティブの番号i)及び仮想3次元空間の位置座標(ワールド座標)の少なくとも一方を記憶させる処理を行う。
【0072】
また、第1の画像生成部124は、スクリーンに対応する特定バッファの各画素に、第1の仮想カメラに対して最前面にあるプリミティブの奥行き情報(Z値)を記憶させる処理を行うようにしてもよい。この場合、特定バッファ175に記憶される奥行き情報は、第1のZバッファ179aの奥行き情報と一致する内容となる。
【0073】
また、第1の画像生成部124は、第1の画像を加工する処理を行う。例えば、第1の画像を第1のテクスチャバッファ178aに格納し、エフェクト処理等を行った最終的な画像を、第1のフレームバッファ174aに格納するようにしてもよい。
【0074】
また、第2の画像生成部126(右眼用画像生成部)は、仮想3次元空間において、第2の仮想カメラ(右眼用仮想カメラVCR)から見える第2の画像(右眼用画像)の各画素の画像情報を、第2のバッファ(例えば、第2のフレームバッファ174b、第2のテクスチャバッファ178b、第2のZバッファ179b)に記憶させる処理を行う。
【0075】
特に、本実施形態の第2の画像生成部126は、仮想3次元空間において第2の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第2の画像を生成する処理を行う。
【0076】
また、第2の画像生成部126は、ピクセル処理前に、第2の画像の画素毎に、プリミティブの情報と前記特定バッファの画素のプリミティブの情報とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。
【0077】
例えば、第2の画像生成部126は、ピクセル処理前に、第2の画像の画素毎に、プリミティブの識別情報と特定バッファの画素のプリミティブの識別情報とを比較する処理、及び、プリミティブの仮想3次元空間の位置座標と特定バッファの画素のプリミティブの仮想3次元空間の位置座標とを比較する処理、の少なくとも一方を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。
【0078】
また、第2の画像生成部126は、ピクセル処理前に、第2の画像の画素毎に、プリミティブの仮想3次元空間の位置座標と、第1の仮想カメラ及び第2の仮想カメラの仮想カメラ情報及び特定バッファの画素の奥行き情報に基づき算出された仮想3次元空間の位置座標と、を比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行うようにしてもよい。
【0079】
また、第1の画像から流用可能な画素の画像情報は1つでもよいし、複数でもよい。また、第2の画像の画素の画像情報に流用する処理とは、例えば、第1の画像の画素の画像情報を第2の画像の画素の画像情報として第2のバッファに記憶させる処理、第1の画像から、当該画素を複数サンプリングし、それらを合成(平均化、加重平均化、等)した画像情報を第2の画像の画素の画像情報として第2のバッファに記憶させる処理である。
【0080】
また、第2の画像生成部126は、プリミティブの情報と特定バッファの画素のプリミティブの情報とが同じ場合に、第1の画像から流用可能な画素の画像情報が存在すると判定する処理を行い、特定バッファの当該画素に対応する第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。つまり、特定バッファの当該画素と同じ位置座標にある第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。
【0081】
例えば、第2の画像生成部126は、プリミティブの識別情報と特定バッファの画素のプリミティブの識別情報とが同じ場合に、第1の画像から流用可能な画素の画像情報が存在すると判定する処理を行い、特定バッファの当該画素に対応する第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。つまり、特定バッファの当該画素と同じ位置座標にある第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。
【0082】
また、第2の画像生成部126は、プリミティブの仮想3次元空間の位置座標と特定バッファの画素のプリミティブの仮想3次元空間の位置座標とが同じ場合に、第1の画像から流用可能な画素の画像情報が存在すると判定する処理を行い、特定バッファの当該画素に対応する第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。つまり、特定バッファの当該画素と同じ位置座標にある第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。
【0083】
また、第2の画像生成部126は、第2の画像の画素毎に、第1の仮想カメラ及び第2の仮想カメラの仮想カメラ情報及び第2の画像の画素の奥行き情報に基づいて、特定バッファの探索領域を決定し、プリミティブの情報と探索領域内の画素のプリミティブの情報とを比較する処理を行う。
【0084】
例えば、第2の画像生成部126は、プリミティブの識別情報と探索領域内の画素のプリミティブの識別情報とを比較する処理、及び、プリミティブの仮想3次元空間の位置座標と探索領域内の画素のプリミティブの仮想3次元空間の位置座標とを比較する処理、の少なくとも一方を行う。
【0085】
例えば、特定バッファの探索領域は、第2の画像の処理対象の画素と同じ行で、連続して配置される2画素分の領域とする。
【0086】
例えば、探索領域において、第2の画像の処理対象の画素のプリミティブの識別情報が同じ画素が存在する場合、及び/又は、第2の画像の処理対象の画素のプリミティブの仮想3次元空間の位置座標が同じ画素が存在する場合に、同じであると判断された探索領域の画素に対応する(同じであると判断された探索領域の画素と同じ位置座標にある)第1の画像の画素の画像情報(例えば、色情報)を、第2の画像の処理対象の画素の画像情報(例えば、色情報)に流用する。
【0087】
また、探索領域内の全ての画素が、第2の画像の処理対象の画素のプリミティブの識別情報と同じ場合、及び/又は、第2の画像の処理対象の画素のプリミティブの仮想3次元空間の位置座標と同じ場合は、探索領域内の全画素に対応する第1の画像の画素群の画像情報(例えば、色情報)をサンプリングし、サンプリングを行った画像情報を元に何らかの演算(平均化、加重平均化、等)を行って、第2の画像の画素の画像情報に流用する処理を行うようにしてもよい。
【0088】
なお、立体視画像生成部128が、第1〜第N(N≧3)の仮想カメラに基づいて、立体視画像を生成する場合には、第2の画像生成部126は、第2〜第Nの各画像において、画素毎に、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、画像の画素の画像情報に流用する処理を行う。
【0089】
また、第2の画像生成部126は、第2の画像を加工する処理を行う。例えば、第2の画像を第2のテクスチャバッファ178bに格納し、エフェクト処理等を行った最終的な画像を、第2のフレームバッファ174bに格納するようにしてもよい。
【0090】
立体視画像生成部128は、第1の画像と第2の画像とに基づいて、立体視画像を生成する処理を行う。つまり、立体視画像生成部128は、立体視の方式(裸眼方式、偏光眼鏡方式、ページフリップ方式等)に応じて、第1の画像と第2の画像から、インターリーブ処理を行い立体視画像を生成する。例えば、立体視画像生成部128は、第1の画像と第2の画像とを合成した結合画像を生成する処理や、所定周期で第1の画像、第2の画像の切り替え処理等を行う。また、立体視画像生成部128は、短冊状に第1の画像と第2の画像とを交互に配置させる処理、奇数ライン、偶数ラインに第1の画像と第2の画像とを交互に配置させる処理等を行う。
【0091】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0092】
また、音生成部130は、オブジェクトの位置に応じて音像定位が変化する音を生成してもよい。
【0093】
2.立体視画像の生成処理の概要
立体視用画像を生成する手法の概要について、図2を用いて説明する。図2に示すように、2眼式の立体視方式で立体視画像を生成する場合は、観察者(プレーヤ)の両眼の幅に対応する距離だけ離れた左眼用仮想カメラVCLと右眼用仮想カメラVCRを仮想3次元空間(オブジェクト空間、ワールド座標系)に配置設定する。そして、左眼用仮想カメラVCLに対応して左眼用ビューボリュームVVLが設定され、右眼用仮想カメラVCRに対応して右眼用ビューボリュームVVRが設定される。
【0094】
左眼用、右眼用ビューボリュームVVL、VVRは、左眼用、右眼用仮想カメラVCL、VCRの位置、向き、画角及びスクリーン(投影面)40の位置によって上下左右の構成面が決定される視錐台の領域である。スクリーン40は、表示部190の画面に対応する面であり、観察者の視点位置に相当する左眼用、右眼用仮想カメラVCL、VCRの位置及び向きと、観察者の視点位置と表示部190の画面との位置関係とに基づき設定される。なお、図2において、NPLは左眼用ビューボリュームVVLのニアクリップ面、FPLは左眼用ビューボリュームVVLのファークリップ面であり、NPRは右眼用ビューボリュームVVRのニアクリップ面、FPRは右眼用ビューボリュームVVRのファークリップ面である。
【0095】
左眼用仮想カメラVCLから見える画像である左眼用画像(第1の画像)は、左眼用ビューボリュームVVL内に存在するオブジェクトを構成するプリミティブ(ポリゴン)をスクリーン40に透視投影して描画することで生成される。同様に、右眼用仮想カメラVCRから見える画像である右眼用画像(第2の画像)は、右眼用ビューボリュームVVR内に存在するオブジェクトを構成するプリミティブ(ポリゴン)をスクリーン40に透視投影して描画することで生成される。
【0096】
ここで、仮想3次元空間においてプリミティブがスクリーン40上に位置する場合には、左眼用画像でのプリミティブの描画位置と右眼用画像でのプリミティブの描画位置は一致し、プリミティブの画像の視差は無くなる。つまり、スクリーン40は、スクリーン40に位置するプリミティブが描画された画像の視差がなくなる面である。この場合、観察者からはプリミティブが表示部190の画面上に存在するように見える。
【0097】
また、プリミティブが、スクリーン40よりも左眼用、右眼用仮想カメラVCL、VCRからみて手前側のエリア(スクリーン40とニアクリップ面NPL、NPRに挟まれたエリア)である第1のエリアAR1に位置する場合には、図3(A)に示すように、左眼用画像でのプリミティブPTLの描画位置は、右眼用画像でのプリミティブPTRの描画位置に対して右側にずれ、観察者からはプリミティブが表示部190の画面よりも手前側に飛び出しているように見える。また、プリミティブが、スクリーン40よりも左眼用、右眼用仮想カメラVCL、VCRからみて奥側のエリア(スクリーン40とファークリップ面FPL、FPRに挟まれたエリア)である第2のエリアAR2に位置する場合には、図3(B)に示すように、左眼用画像でのプリミティブPTLの描画位置は、右眼用画像でのプリミティブPTRの描画位置に対して左側にずれ、観察者からはプリミティブが表示部190の画面よりも奥側に引っ込んでいるように見える。
【0098】
3.典型的なレンダリングパイプラインの説明
次に、典型的なレンダリングパイプラインRPによる画像の生成処理について、図4を用いて説明する。例えば、レンダリングパイプラインRPで、画像を生成する場合には、まず、オブジェクトを構成する各プリミティブの各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル、α値等)、プリミティブデータ(プリミティブの番号等)が入力され(ステップS11)、入力された頂点データ、プリミティブデータに基づいて、ジオメトリ変換(広義には、頂点処理)が行われる(ステップS12)。
【0099】
そして、ジオメトリ変換後(頂点処理後)の頂点データに基づいて、クリッピング、ラスタライズ(走査変換)が行われる(ステップS13)。つまり、プリミティブの面とピクセルとが対応づけられる。
【0100】
次に、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ179(奥行きバッファ)を用いたZテスト(Zバッファ法、奥行き比較法)による隠面消去処理を行う(ステップS14)。
【0101】
そして、画像を構成するピクセルを描画するピクセルレンダリング処理(広義には、ピクセル処理)、ライティング処理が行われる(ステップS16)。なお、ピクセルレンダリング(ステップS16)では、テクスチャの読出し(テクスチャマッピング)、テクスチャサンプリングを行い(ステップS15)、画像を構成するピクセルの最終的な描画色を決定してもよい。
【0102】
そして、ピクセルの色情報をフレームバッファ(描画バッファ)174に出力(描画)する処理、プリミティブに対応する描画ピクセルを描画する際に、Zバッファ179にZ値を格納する処理を行う(ステップS17)。
【0103】
例えば、従来の2眼式の立体視画像の生成する場合、まず、レンダリングパイプラインRPで、仮想3次元空間内の左眼用仮想カメラから見える画像である左眼用画像を左眼用フレームバッファ174aに描画し、その後、レンダリングパイプラインRPで、仮想3次元空間内の右眼用仮想カメラから見える画像である右眼用画像を右眼用フレームバッファ174bに描画していた。つまり、左眼用画像と右眼用画像とにおいて、2回のピクセルレンダリング(ピクセル処理)を行うことが必要であったので、非常に処理負荷が高くなるという問題があった。
【0104】
4.本実施形態の処理の手法
そこで、本実施形態では、第1のフレームバッファ174a(左眼用フレームバッファ)に左眼用画像(第1の画像の一例)を描画した後に、左目用画像の画素の色情報を、右眼用画像(第2の画像の一例)に描画する画素の色として流用可能か否かを判定する処理を行い、左眼用画像の描画した画素の色情報を右眼用画像の画素の色として流用可能と判断した場合には、左眼用画像の描画した当該画素の色情報を、右眼用画像の画素の色として流用する処理を行う手法を採用する。
【0105】
例えば、左眼用画像を生成する際に、スクリーン40に対応する特定バッファ175(例えば、ステンシルバッファ)の各画素に、左眼用仮想カメラVCLに対して最前面にあるプリミティブの番号i(識別情報)及びワールド座標値(仮想3次元空間の位置座標)の少なくとも一方を記憶させる処理を行う。
【0106】
そして、右眼用画像を生成する場合には、ピクセル処理前に、第2の画像の画素毎に、プリミティブの番号iと特定バッファ175のプリミティブの番号iとを比較する処理、及び、プリミティブのワールド座標値と特定バッファ175のプリミティブのワールド座標値とを比較する処理、の少なくとも一方を行うことによって、第1の画像から流用可能な画素の色情報(R、G、B)の画素が存在するか否かを判定する処理を行う。そして、第1の画像から流用可能な画素の色情報が存在する場合に、ピクセル処理の替わりに、第1の画像から当該画素の色情報(R、G、B)を、第2の画像の画素の色情報(R、G、B)に流用する処理を行う。
【0107】
このようにすれば、例えば、右眼用画像の画像生成処理において、ピクセル処理を省略することができ、処理負荷を軽減させることができる。また、第1の画像から画素の色情報を流用することによって、例えばハイライト領域等においては、違和感の少ない立体視画像を生成することができる。以下、本実施形態の処理の詳細について説明する。
【0108】
4−1.準備
まず、右眼用画像、左眼用画像の各画像を生成する際に、ワールド座標変換処理、スクリーン座標変換処理をそれぞれ行う。
【0109】
そして、右眼用画像、左眼用画像の各画像を生成する際は、ワールド座標変換後のプリミティブ(ポリゴン)の各頂点の頂点座標Vp(x、y、z)を格納するための頂点バッファVBを用意する。頂点バッファVBには、頂点座標Vpのほかに、各頂点の色情報(R、G、Bの各色値)、各頂点の法線(x、y、z)、各頂点のテクスチャ座標(U、V)を格納してもよい。
【0110】
また、右眼用画像、左眼用画像の各画像を生成する際は、ワールド座標系における各プリミティブの位置座標Wp(Wx、Wy、Wz)、及び、図5に示すように、各プリミティブのプリミティブ番号i(インデックス)を保持する。なお、プリミティブ番号iは、各プリミティブを識別可能な識別情報であり整数値が割り振られる。
【0111】
また、記憶部170の記憶領域に、スクリーン40(画面、投影面)のサイズ(解像度)と同一サイズの特定バッファ175(例えば、ステンシルバッファ)を予め確保しておく。例えば、スクリーン40のサイズが640×480である場合、特定バッファ175も640×480のサイズとなる。
【0112】
4−2.第1の画像(左眼用画像)の生成処理の説明
多眼式の立体視画像を生成する場合において、まず初めに生成する画像を第1の画像とする。なお、本実施形態では、左眼用画像を第1の画像としている。
【0113】
左眼用画像の生成処理では、図6に示すように、左眼用仮想カメラVCLに基づき頂点処理、ラスタライズ後、スクリーン座標系40(2次元座標)のピクセルの位置座標P(x、y)と同じ位置座標にある特定バッファ175(例えば、ステンシルバッファ)のピクセルの位置座標P(x、y)に、ビューボリュームVVL内であって左眼用仮想カメラVCLに対して最前面にあるプリミティブの番号i(「プリミティブの情報」の一例)とワールド座標系における位置座標Wp(Wx、Wy、Wz)(「プリミティブの情報」の一例)とを記憶させる処理を行う。つまり、(x、y)の2次元配列に、プリミティブ番号iとワールド座標値とを記憶させる。なお、本実施形態では、Zバッファの更新時に、特定バッファ175にプリミティブ番号iとワールド座標値とを上書きすることによって、左眼用仮想カメラVCLに対して最前面にあるプリミティブの番号iと、ワールド座標値Wp(Wx、Wy、Wz)とを記憶させる処理を行う。
【0114】
なお、スクリーン座標系40のピクセルの位置座標P(x、y)と同じ位置座標にある特定バッファ175のピクセルの位置座標P(x、y)に、プリミティブ番号iのみを記憶させるようにしてもよいし、プリミティブのワールド座標系における位置座標Wp(Wx、Wy、Wz)のみを記憶させるようにしてもよい。
【0115】
具体的には、図6に示すように、左眼用画像を生成する場合において、左眼用仮想カメラVCLに基づいて、プリミティブPT1(プリミティブ番号=1)をスクリーン40(投影面)に透視投影変換(広義には、頂点処理)を行い、その後、ラスタライズを行う。そして、ラスタライズ、ピクセル処理後、図7に示すように、スクリーン座標系40の画素の位置座標P1(x1、y1)と同じ特定バッファ175の画素の位置座標P1(x1、y1)に、プリミティブPT1のワールド座標系座標値Wp1(Wx1、Wy1、Wz1)とプリミティブPT1の番号「1」を格納する。
【0116】
つまり、フレームバッファ174aに左眼用画像が描画されると、特定バッファ175において、スクリーン座標の各画素の位置座標P(x、y)と、描画されたプリミティブ(左眼用仮想カメラVCLから見て最前面のプリミティブ)の番号、ワールド座標値Wp(Wx、Wy、Wz)とが、対応付けられることになる。
【0117】
また、本実施形態では、左眼用画像で見えているプリミティブのリストを作成する処理を行う。つまり、ビューボリュームVVL内であって、左眼用仮想カメラVCLから見て最前面のプリミティブの番号をリスト化する。
【0118】
図8は、左眼用画像のレンダリングパイプラインRP1(第1のレンダリングパイプライン)の処理の流れを示すフローチャートである。
【0119】
例えば、レンダリングパイプラインRP1で、左眼用画像を生成する場合には、まずプリミティブの各頂点の頂点データ、プリミティブデータが入力され(ステップS21)、入力された頂点データ、プリミティブデータに基づいて、ジオメトリ変換(広義には、「頂点処理」)が行われる。つまり、左眼用仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理を行う(ステップS22)。
【0120】
そして、ジオメトリ変換後の頂点データに基づいて、クリッピング、ラスタライズ(走査変換)が行われる(ステップS23)。つまり、プリミティブの面とピクセルとが対応づけられる。
【0121】
次に、描画ピクセルのZ値が格納されるZバッファ179aを用いたZテストによる隠面消去処理を行う(ステップS24)。
【0122】
そして、ピクセルレンダリング(画像を構成する各画素の画像情報を求めるピクセル処理)、ライティング処理が行われる(ステップS26)。なお、ピクセルレンダリング(ステップS26)では、テクスチャの読出し(テクスチャマッピング)等を行い、テクスチャサンプリングを行い(ステップS25)、画像を構成するピクセルの最終的な描画色を決定してもよい。
【0123】
そして、特定バッファ(例えば、ステンシルバッファ)の各画素に、プリミティブのプリミティブ番号とワールド座標値を保存(記憶)させる処理を行う(ステップS27)。
【0124】
そして、各画素の描画色を左眼用フレームバッファ(第1のフレームバッファ174a)に出力(描画)する処理、左眼Zバッファ(第1のZバッファ179a)にZ値を格納する処理を行う(ステップS28)。以上で処理が終了する。
【0125】
4−3.第2の画像(右眼用画像)の生成処理の説明
第2の画像の生成処理について説明する。第2の画像は、第1の画像が生成された後に生成する。なお、本実施形態では、右眼用画像を第2の画像としている。
【0126】
まず、右眼用画像を生成する場合には、左眼用画像で見えているプリミティブから優先してシェーダ(頂点シェーダ、頂点処理)に送るように制御する。つまり、左眼用画像に描画されるプリミティブは右眼用仮想カメラVCRから見て最前面に配置されている可能性が高く、演算量を削減できるからである。
【0127】
そして、本実施形態では、右眼用仮想カメラVCRに基づき、頂点処理及びラスタライズを行い、ラスタライズ後、右眼用画像のピクセル処理の前に、画素毎に、プリミティブ番号iと特定バッファ175(例えば、ステンシルバッファ)の画素のプリミティブ番号iとを比較する処理、プリミティブのワールド座標値と特定バッファ175の画素のプリミティブのワールド座標値とを比較する処理、の少なくとも一方を行うことによって、左眼用画像(フレームバッファ174a)から流用できる画素の色情報が存在するか否かを判定し、流用できる画素の色情報が存在する場合には、当該画素の色情報を、右眼用画像の画素の色情報として、第2のフレームバッファ174bに記憶させる処理を行う。つまり、右眼用画像の全画素について、描画色を決定する前に、特定バッファ175を参照して、左眼用画像から流用できる色があるか否かを判断する。
【0128】
そして、左目用画像から流用可能な画素の色情報が存在する場合には、流用可能な画素の色情報を、第2の画素の色情報として、右眼用フレームバッファ(フレームバッファ174b)に記憶させる処理を行う。
【0129】
具体的には、図9に示すように、右眼用画像を生成する場合において、右眼用仮想カメラVCRに基づいて、プリミティブPT1(プリミティブ番号=1)をスクリーン40(投影面)に透視投影変換(広義には、頂点処理)を行い、その後、ラスタライズを行う。例えば、スクリーン40の画素P2(x2、y2)に描画されるプリミティブPT1のワールド座標値はWp1(Wx1、Wy1、Wz1)である。
【0130】
すると、右眼用画像の処理対象の画素の位置座標P2(x2、y2)と同じプリミティブ番号、ワールド座標値を格納している画素を、特定バッファ175から探索する。つまり、右眼用画像の処理対象の画素の位置座標P2(x2、y2)と同じプリミティブ番号i=1であって、ワールド座標値Wp1(Wx1、Wy1、Wz1)である画素を、特定バッファ175から探索する。このようにすれば、左眼用画像から流用できる画素の画像情報が存在するか否かをより正確に判定することができるからである。
【0131】
例えば、図10に示すように、特定バッファ175において、プリミティブ番号i=1であって、ワールド座標値Wp1(Wx1、Wy1、Wz1)である画素P1(x1、y1)が存在する場合には、左目用画像から流用できる画素の色情報が存在すると判定する。一方、特定バッファ175において、プリミティブ番号i=1であって、ワールド座標値Wp1(Wx1、Wy1、Wz1)である画素が存在しない場合には、左目用画像から流用できる画素の色情報が存在しないと判定する。
【0132】
なお、特定バッファ175において、プリミティブ番号iのみを比較対象としてもよい。つまり、右眼用画像の処理対象の画素の位置座標P2(x2、y2)と同じプリミティブ番号i=1を格納している画素を、特定バッファ175から探索する。例えば、特定バッファ175において、プリミティブ番号i=1である画素P1(x1、y1)が存在する場合には、左目用画像から流用できる画素の色情報が存在すると判定し、特定バッファ175において、プリミティブ番号i=1である画素が存在しない場合には、左目用画像から流用できる画素の色情報が存在しないと判定する。このようにすれば、比較対象がプリミティブ番号iのみであるので、処理負荷を軽減することができる。例えば、ローポリゴン(詳細度レベルの低いオブジェクトを構成するプリミティブ、所定数以下のプリミティブ数で構成されるオブジェクト)については、プリミティブ番号iで比較するようにしてもよい。
【0133】
また、特定バッファ175において、プリミティブのワールド座標値のみを比較対象としてもよい。つまり、右眼用画像の処理対象の画素の位置座標P2(x2、y2)と同じプリミティブのワールド座標値Wp1(Wx1、Wy1、Wz1)を格納している画素を、特定バッファ175から探索する。例えば、特定バッファ175において、プリミティブのワールド座標値Wp1(Wx1、Wy1、Wz1)である画素P1(x1、y1)が存在する場合には、左目用画像から流用できる画素の色情報が存在すると判定し、特定バッファ175において、プリミティブのワールド座標値Wp1(Wx1、Wy1、Wz1)である画素が存在しない場合には、左目用画像から流用できる画素の色情報が存在しないと判定する。このようにすれば、左目用画像から流用できる画素の画像情報が存在するか否かの判定を、プリミティブ番号iのみを比較対象とするよりも正確に行うことができる。例えば、ハイポリゴン(詳細度レベルの高いオブジェクトを構成するプリミティブ、所定数以上のプリミティブ数で構成されるオブジェクト)については、ワールド座標値、或いは、ワールド座標値及びプリミティブ番号で比較するようにしてもよい。
【0134】
また、本実施形態では、探索処理を簡易なものとするために、右眼用画像の処理対象の画素P2(x2、y2)のZ値(Zバッファ179b(右眼用Zバッファ)のZ値)と、第1、第2の仮想カメラ情報に基づいて、特定バッファ175に探索領域Bを決定し、特定バッファ175探索領域B内の各画素を、左目用画像から流用できる画素の画像情報が存在するか否かの判定対象としてもよい。
【0135】
例えば、探索領域Bは次のように決定する。まず、図2に示すように、左眼用仮想カメラVCLと右眼用仮想カメラVCRを設定するための基準となる基準仮想カメラ(センターカメラ)VCCの視点31、画角θC、右眼用画像の処理対象の画素P2(x2、y2)のZ値(奥行き情報、右眼用視点座標系でのZ値)に基づいて、図10に示すように、探索領域Bを決定する。
【0136】
具体的には、右眼用画像を生成する際に、ラスタライズされたプリミティブの描画対象の画素の位置座標をPnとし、つまり、右眼用画像の処理対象の画素の位置座標をPnとし、基準仮想カメラ(センターカメラ)VCCの視点31、画角θC、右眼用画像の処理対象の画素PnのZ値に基づき、図11に示すように、位置座標Pnの特定バッファ175上の参照点Qnを求める。そして、参照点Qnに最も近い2画素Ka、Kbを探索領域Bとして決定する。
【0137】
なお、左眼用仮想カメラVCLの視点30L、画角θL、右眼用仮想カメラVCRの視点30R、画角θR、及び、右眼用画像のZ値(視点座標系でのZ値)に基づいて探索領域Bを決定してもよい。
【0138】
なお、本実施形態の探索領域Bは、2画素分の連続した領域としているが、探索領域Bは1画素、又は3以上の複数の画素からなる領域としてもよい。
【0139】
また、通常、左眼用仮想カメラVCLの視点30Lと、右眼用仮想カメラVCRの視点30Rは、ワールド座標系において平行に配置されるので、本実施形態では、図10に示すように、右眼用画像の処理対象の画素P2(x2、y2)と同一の行(ライン)であるn行目において探索領域Bが決定される。
【0140】
そして、図10に示すように、特定バッファ175のn行目の2画素分の領域(画素P1、P3)を探索領域Bとして決定された場合、右眼用画像の処理対象の画素P2(x2、y2)のプリミティブ番号i=1と、探索領域B内の各画素P1、P3のプリミティブ番号とを比較する処理を行い、右眼用画像の処理対象の画素P2(x2、y2)のワールド座標値Wp1(Wx1、Wy1、Wz1)と、探索領域B内の各画素P1、P3のワールド座標値とを比較する処理を行う。
【0141】
そして、右眼用画像の処理対象の画素P2(x2、y2)のプリミティブ番号及びワールド座標値の少なくとも一方が、探索領域B内に存在する場合に、左目用画像の画素の色情報を流用できると判定する。
【0142】
例えば、図10に示すように、特定バッファ175の探索領域Bの画素P1(x1、y1)のプリミティブ番号iは「1」、ワールド座標値はWx1、Wy1、Wz1であり、特定バッファ175の探索領域Bの画素P3(x3、y3)のプリミティブ番号iは「3」、ワールド座標値はWx3、Wy3、Wz3である場合、右眼用画像の処理対象の画素P2(x2、y2)のプリミティブ番号i=1とワールド座標値Wp1(Wx1、Wy1、Wz1)とが同じ画素P1(x1、y1)=(Wx1、Wy1、Wz1、1)が、特定バッファ175の探索領域B内に存在する。したがって、左目用画像の画素P1の色情報を、右眼用画像の処理対象の画素P2(x2、y2)の色情報として流用できると判定する。そして、図12に示すように、特定バッファ175の画素P1(x1、y1)と同じ位置座標にある左眼用画像の画素P1(x1、y1)の色情報(R、G、B)を、右眼用画像の画素P2(x2、y2)の色情報(R、G、B)として、右眼用フレームバッファ174bに格納する処理を行う。つまり、左眼用フレームバッファ174aの画素P1(x1、y1)の色情報を、右眼用フレームバッファ174bの画素P2(x2、y2)の色情報として流用する処理を行う。
【0143】
なお、特定バッファ175(或いは、探索領域B)において、右眼用画像の処理対象の画素のプリミティブ番号及びワールド座標値と同じ画素が存在しない場合は、左目用画像から流用できる画素の色情報が存在しないと判定する。
【0144】
例えば、図13に示すように、右眼用画像の処理対象の画素P2(x2、y2)のプリミティブ番号i=2、ワールド座標値Wp2(Wx2、Wy2、Wz2)であった場合において、特定バッファ175(或いは、探索領域B)において、プリミティブ番号i=2、ワールド座標値Wp2(Wx2、Wy2、Wz2)の画素が存在しない場合には、左目用画像から流用できる画素の色情報が存在しないと判定し、右眼用画像の画素P2について通常のピクセル処理を行い、画素P2の描画色を求める処理を行う。つまり、右眼用画像の画素P2について、プリミティブの頂点色、テクスチャ画像の色に基づき、最終的な描画色を決定するための演算処理を行う。
【0145】
なお、本実施形態では、右眼用画像の処理対象の画素Pnのプリミティブ番号、ワールド座標値と同じとみなされる画素が特定バッファに複数存在する場合には、当該複数の画素をサンプリングし、それらを合成(平均化、等)して、色情報を流用するようにしてもよい。例えば、図11に示すように、探索領域Bの画素Pa、Pbの各中心点Ka、Kbのうち、参照点Qnに最も近い画素Kaを、右眼用画像に流用する画素として決定してもよい。要するに、ポイントサンプリング方式によって、右眼用画像に流用する画素を決定してもよい。また、図11に示すように、探索領域Bの画素Pa、Pbの各中心点Ka、Kbと参照点Qnの距離に基づいて、画素Pa、Pbの色情報を加重平均して流用してもよい。要するに、バイリニアフィルタに基づき、探索領域Bの複数の画素Pa、Pbの色情報を、右眼用画像の画像情報として流用してもよい。
【0146】
以上のように、本実施形態では、右眼用画像のピクセル処理を省略することができる。また、左目用画像の画素の色情報を、右眼用画像の画素の色情報に流用することによって、違和感の少ない立体視画像を生成することができる。
【0147】
図14は、第2の画像(右眼用画像)のレンダリングパイプラインRP2(第2のレンダリングパイプライン)の処理の流れを示すフローチャートである。
【0148】
例えば、レンダリングパイプラインRP2で、右眼用画像を生成する場合には、まずプリミティブの各頂点の頂点データ、プリミティブデータが入力され(ステップS31)、入力された頂点データ、プリミティブデータに基づいて、ジオメトリ変換(広義には、「頂点処理」)が行われる(ステップS32)。
【0149】
そして、ジオメトリ変換後の頂点データに基づいて、クリッピング、ラスタライズが行われる(ステップS33)。つまり、プリミティブの面とピクセルとが対応づけられる。
【0150】
次に、センターカメラの画角、視点、右眼用の仮想カメラのZ値(奥行き値)に基づいて、特定バッファ(例えば、ステンシルバッファ)の探索領域を決定する(ステップS34)。
【0151】
そして、特定バッファの探索領域にプリミティブのワールド座標値及びプリミティブ番号の少なくとも一方が同じ画素が存在するか否かを判断する(ステップS35)。
【0152】
特定バッファの探索領域に、プリミティブのワールド座標値及びプリミティブ番号の少なくとも一方が同じ画素が存在する場合には(ステップS35のY)、当該画素と同じ位置座標にある左眼用のフレームバッファ174aの画素の色情報を流用する(ステップS36)。
【0153】
特定バッファの探索領域に、プリミティブのワールド座標値及びプリミティブ番号の少なくとも一方が同じ画素が存在しない場合には(ステップS35のN)、描画ピクセルのZ値が格納されるZバッファ179を用いたZテストによる隠面消去処理を行う(ステップS37)。
【0154】
そして、画像を構成する各画素のピクセルレンダリング処理(広義には、ピクセル処理)、ライティング処理が行われる(ステップS39)。なお、ピクセルレンダリング(ステップS39)では、テクスチャの読出し(テクスチャマッピング)等を行い、テクスチャサンプリングを行い(ステップS38)、画像を構成するピクセルの最終的な描画色を決定してもよい。
【0155】
そして、ステップS36、S39の後、透視変換されたプリミティブの描画色を右眼用フレームバッファ174bに出力(描画)する処理、右眼用Zバッファ179bにZ値を格納する処理を行う(ステップS40)。以上で処理が終了する。
【0156】
5.応用例
5.1 流用する画像情報の応用例
本実施形態では、右眼用画像の画素毎に、左眼用画像から流用可能な画素の色情報が存在するか否かを判定する処理を行い、左眼用画像から流用可能な画素の色情報が存在する場合に、左眼用画像の画素の色情報を、右眼用画像の画素の色情報に流用する処理例について説明したが、色情報だけでなく、輝度情報、半透明情報、法線情報、奥行き情報に流用するようにしてもよい。
【0157】
例えば、グレースケール画像の立体視の場合において、本実施形態では、右眼用画像の画素毎に、左眼用画像から流用可能な画素の輝度情報が存在するか否かを判定する処理を行い、左眼用画像から流用可能な画素の輝度情報が存在する場合に、左眼用画像の画素の輝度情報を、右眼用画像の画素の輝度情報に流用してもよい。左眼用画像から流用可能な画素の輝度情報が存在するか否かを判定する処理は、上述したように、右眼用画像生成時のプリミティブ番号、ワールド座標値、特定バッファ175(例えば、ステンシルバッファ)のプリミティブ番号、ワールド座標値を比較することによって行えばよい。このようにすれば、右眼用画像、左眼用画像で、同一のプリミティブ、同一のワールド座標値にあるプリミティブに対して、同じ輝度で画像を生成することができ、違和感の少ない立体視画像を生成することができる。
【0158】
つまり、本実施形態では、右眼用画像の画素毎に、左眼用画像から流用可能な画素の半透明情報(α値)が存在するか否かを判定する処理を行い、左眼用画像から流用可能な画素の半透明情報が存在する場合に、左眼用画像の画素の半透明情報を、右眼用画像の画素の半透明情報に流用してもよい。左眼用画像から流用可能な画素の半透明情報が存在するか否かを判定する処理は、上述したように、右眼用画像生成時のプリミティブ番号、ワールド座標値、特定バッファ175のプリミティブ番号、ワールド座標値を比較することによって行えばよい。このようにすれば、右眼用画像、左眼用画像で、同一のプリミティブ、同一のワールド座標値にあるプリミティブに対して、同じ合成割合で半透明合成処理等を行うことができ、違和感の少ない立体視画像を生成することができる。
【0159】
また、本実施形態では、右眼用画像の画素毎に、左眼用画像から流用可能な画素の法線情報(法線ベクトル)が存在するか否かを判定する処理を行い、左眼用画像から流用可能な画素の法線情報が存在する場合に、左眼用画像の画素の法線情報を、右眼用画像の画素の法線情報に流用してもよい。左眼用画像から流用可能な画素の法線情報が存在するか否かを判定する処理は、上述したように、右眼用画像生成時のプリミティブ番号、ワールド座標値、特定バッファ175のプリミティブ番号、ワールド座標値を比較することによって行えばよい。このようにすれば、右眼用画像、左眼用画像で、同一のプリミティブ、同一のワールド座標値にあるプリミティブに対して、同じ法線情報で光沢の計算、法線マッピングなど種々の処理が行うことができ、違和感の少ない立体視画像を生成することができる。
【0160】
また、本実施形態では、右眼用画像の画素毎に、左眼用画像から流用可能な画素の奥行き情報(深度情報)が存在するか否かを判定する処理を行い、左眼用画像から流用可能な画素の奥行き情報が存在する場合に、左眼用画像の画素の奥行き情報を、右眼用画像の画素の奥行き情報に流用してもよい。左眼用画像から流用可能な画素の奥行き情報が存在するか否かを判定する処理は、上述したように、右眼用画像生成時のプリミティブ番号、ワールド座標値、特定バッファ175のプリミティブ番号、ワールド座標値を比較することによって行えばよい。このようにすれば、右眼用画像、左眼用画像で、同一のプリミティブ、同一のワールド座標値にあるプリミティブに対して、同じ奥行き情報で種々の処理が行うことができ、違和感の少ない立体視画像を生成することができる。
【0161】
5.2 仮想カメラの応用例
本実施形態では、左眼用画像を初めに生成し、右眼用画像を後に生成する例について説明したが、右眼用画像を第1の画像として初めに生成し、左眼用画像を第2の画像として後に生成してもよい。
【0162】
また、本実施形態では、2つの視点(右眼、左眼)に基づく立体視画像の生成処理について説明したが、3つ以上の視点に基づく立体視画像を生成してもよい。例えば、初めに生成する仮想カメラの画像を第1の画像として、特定バッファ175(例えば、ステンシルバッファ)に当該仮想カメラから見て最前面にあるプリミティブのワールド座標値とプリミティブ番号を格納し、他の視点の画像(第2の画像〜第Nの画像(Nは3以上の整数))を生成する場合には、特定バッファ175を参照し、画素毎に、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画その画像情報が存在する場合に、第1の画像の当該画素の画像情報を、画像の画素の画像情報に流用するようにしてもよい。
【0163】
例えば、図15に示すように、仮想カメラVC1〜VC5の5つの多眼式の立体視画像を生成する場合には、まず、第1のレンダリングパイプラインRP1によって、中心の仮想カメラVC3に基づいて、画像を生成する。そして、他の仮想カメラVC1、VC2、VC4、VC5の画像を生成する場合には、第2のレンダリングパイプラインRP2に基づいて画像を生成する。つまり、仮想カメラVC1、VC2、VC4、VC5に基づく画像を生成する場合には、VC3に基づいて生成された画像の色情報を流用できるか否かを判断し、流用できる場合には、当該画素の色情報を流用するようにする。
【0164】
5.3 Zテストを省略させる処理
本実施形態では、左眼用画像の画素の色情報を、右眼用画像の処理対象の画素Pnの色情報として流用した場合には、当該右眼用画像の画素PnのZバッファ179bのZ値を最大値に設定してもよい。つまり、当該右眼用画像の画素PnのZバッファ179bのZ値を最大値に設定することによって、Zテストにおいて、画素Pnを常に右眼用仮想カメラから見て最前面にある画素とすることができ、ピクセル処理を省略させることができ、処理負荷を軽減することができる。例えば、左眼用仮想カメラVCLに対して最前面にあるプリミティブは、右眼用カメラVCRに対しても最前面にあるという仮定が成り立つ場合において、立体視画像を生成する場合には、処理負荷が軽減されて有効である。
【0165】
5.4 加工処理の例
本実施形態では、第1のレンダリングパイプラインRP1によって生成された左眼用画像(第1の画像)を加工する処理を行い、第2のレンダリングパイプラインRP2によって生成された右眼用画像(第2の画像)を加工する処理を行い、加工された第1、第2の画像に基づいて、立体視画像を生成する処理を行うようにしてもよい。
【0166】
例えば、第1のレンダリングパイプラインRP1によって生成された左眼用画像を第1のテクスチャバッファ178aに格納し、第2のレンダリングパイプラインRP2によって生成された右眼用画像を第2のテクスチャバッファ178bに格納する。
【0167】
そして、各テクスチャバッファ178a、178bに格納されたテクスチャ画像それぞれに対して、独立したエフェクト処理などの特殊な加工処理を施す。このようにすれば、処理負荷を軽減しながら、右眼用画像、左眼用画像で異なるような加工処理を施すことが適切である場合には、違和感の少なく、意図した光沢感を適度に保った立体視画像を生成することができる。
【0168】
5.5 特定バッファに奥行き情報を記憶させる例
本実施形態では、スクリーンに対応する特定バッファの各画素に、左眼用仮想カメラ(第1の仮想カメラ)VCLに対して最前面にあるプリミティブの奥行き情報(「プリミティブの情報」の一例)を記憶させる処理を行うようにしてもよい。特定バッファ175に記憶される奥行き情報(左眼用視点座標系でのZ値)は、第1のZバッファ179aの奥行き情報と一致する内容となる。なお、第1のZバッファ179aを、特定バッファの一例として使用してもよい。奥行き情報は、仮想3次元空間の位置座標よりもデータ量が少ないので、記憶容量を節約することができるからである。
【0169】
そして、特定バッファに奥行き情報を記憶した場合には、右眼用画像のピクセル処理前に、右眼用画像(第2の画像)の画素毎に、プリミティブの仮想3次元空間の位置座標と、左眼用仮想カメラVCL及び右眼用仮想カメラVCRの仮想カメラ情報及び特定バッファの画素の奥行き情報(Z値)に基づき算出された仮想3次元空間の位置座標と、を比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行う。
【0170】
例えば、「左眼用仮想カメラVCLの視点30L及び右眼用仮想カメラVCRの視点30R」及び、特定バッファに記憶された各画素の奥行き情報(Z値)に基づき、左眼用仮想カメラVCLに対して最前面にあるプリミティブのワールド座標値Wp(Wx、Wy、Wz)を求める。そして、右眼用画像の処理対象の画素のワールド座標値と、求めたワールド座標値Wp(左眼用仮想カメラVCLに対して最前面にあるプリミティブのワールド座標値Wp)とを比較し、左眼用画像から流用できる画素の色情報が存在するか否かを判定する。この方法では、記憶容量が少なくてすむ代わりに、計算負荷は増えるので、計算負荷よりも記憶容量の方を削減したい場合に用いると良い。
【0171】
6.サーバ
また、本実施形態では、クライアント・サーバ方式のサーバ20に適用してもよい。つまり、サーバ20が、画像生成装置10(端末)で行う一部の処理(例えば、処理部100の少なくとも1つの処理)を行うようにしてもよい。
【0172】
例えば、サーバ20が、ネットワーク(例えば、インターネット)を介して複数の画像生成装置10A〜10Cと接続され、サーバ20が、画像生成装置10から入力情報を受信する。そして、サーバ20が、受信した第1、第2、第3の入力情報に基づいて画像を生成し、生成した画像を画像生成装置10に送信してもよい。
【0173】
図16は、サーバ20の機能ブロック図の例を示す。なお本実施形態のサーバ20は図16の構成要素(各部)の一部を省略した構成としてもよい。
【0174】
記憶部270は、処理部200や通信部296などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。そして、本実施形態の記憶部270は、ワーク領域として使用される主記憶部272と、画像が記憶されるフレームバッファ274と、特定バッファ275(例えば、ステンシルバッファ)、オブジェクトのモデルデータが記憶されるオブジェクトデータ記憶部276と、各オブジェクトデータ用のテクスチャが記憶されるテクスチャ記憶部278と、オブジェクトの画像の生成処理時にZ値が記憶されるZバッファ279とを含む。なお、これらの一部を省略する構成としてもよい。
【0175】
なお、フレームバッファ274は、第1のフレームバッファ274a(左眼用フレームバッファ)と、第2のフレームバッファ274b(右眼用フレームバッファ)とを含む。また、テクスチャ記憶部178は、第1のテクスチャバッファ278a(左眼用テクスチャバッファ)と、第2のテクスチャバッファ278b(右眼用テクスチャバッファ)とを含む。また、Zバッファ179は、第1のZバッファ279a(左眼用Zバッファ)と、第2のZバッファ279b(右眼用Zバッファ)とを含む。
【0176】
情報記憶媒体280(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部200は、情報記憶媒体280に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。情報記憶媒体280には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶することができる。
【0177】
通信部296は外部(例えば画像生成装置10、他のサーバ)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0178】
なお、他のサーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体280や記憶部270に記憶してもよい。このようにプログラムやデータを受信して画像生成装置10を機能させる場合も本発明の範囲内に含む。
【0179】
処理部200(プロセッサ)は、受信したデータやプログラムなどに基づいて、ゲーム処理、画像生成処理、音処理などの処理を行う。
【0180】
この処理部200は記憶部270内の主記憶部271をワーク領域として各種処理を行う。処理部200の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0181】
処理部200は、オブジェクト空間設定部210、移動・動作処理部212、仮想カメラ制御部218、通信制御部219、画像生成部220、音生成部230を含む。
【0182】
オブジェクト空間設定部210は、オブジェクト(キャラクタ、移動体)、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)を仮想3次元空間(オブジェクト空間)に配置設定する処理を行う。例えば、オブジェクト空間設定部210は、画像生成装置10のオブジェクト空間設定部110と同様な処理を行う。
【0183】
移動・動作処理部212は、オブジェクト(移動体、キャラクタ等)の移動・動作演算(移動・動作シミュレーション)を行う。移動・動作処理部212は、画像生成装置10からネットワークを介して受信した操作データ等に基づき、当該オブジェクトの移動・動作演算を行うようにしてもよい。例えば、移動・動作処理部212は、画像生成装置10の移動・動作処理部112と同様な処理を行う。
【0184】
仮想カメラ制御部218は、仮想3次元空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。例えば、仮想カメラ制御部218は、画像生成装置10の仮想カメラ制御部118と同様な処理を行う。
【0185】
通信制御部219は、画像生成装置10又は他のサーバ20とネットワークを介して相互にデータを送受信する処理を行う。
【0186】
なお、本実施形態のサーバ20は、通信制御で必要となるネットワーク情報を画像生成装置10に送信してもよい。なお、例えば、サーバ20は、各端末に個別に付与される端末の識別情報と、端末の識別情報に対応付けられたパケットの送信先を指定する宛先情報を管理する。
【0187】
サーバ20の通信制御部219は、画像生成装置10に送信するパケットを生成する処理、パケット送信先の端末のIPアドレスやポート番号を指定する処理、受信したパケットに含まれるデータを記憶部270に保存する処理、受信したパケットを解析する処理、その他のパケットの送受信に関する制御処理等を行う。
【0188】
また、本実施形態の通信制御部219は、端末と接続が確立されてから接続が切断されるまで、データを所定周期(例えば、1秒周期で)互いに送受信する処理を行う。ここで、画像生成装置10から送信されるデータは、画像生成装置10の操作部160からの操作情報としてもよいし、各画像生成装置10の操作対象のオブジェクト(キャラクタ、移動体)の位置情報、移動情報としてもよい。
【0189】
また、本実施形態の通信制御部219は、画像生成装置10から送信されたパケットを受信すると、受信したパケットを解析し、パケットに含まれる他の端末の操作対象のオブジェクトの位置情報などのデータを主記憶部272に記憶する処理を行う。
【0190】
また、本実施形態の通信制御部219は、第1〜第Nの仮想カメラに基づき生成された各画像の画像データ(例えば、2眼式の場合、第1の画像データ、第2の画像データ)、或いは、立体視画像データを、ネットワークを介して、画像生成装置10に送信するようにしてもよい。
【0191】
画像生成部220は、処理部200で行われる種々の処理の結果に基づいて描画処理を行い、これにより画像を生成する。画像生成部220の処理は、画像生成装置10の画像生成部120と同様な処理を行う。
【0192】
特に本実施形態の画像生成部220は、第1の画像生成部224と第2の画像生成部226、立体視画像生成部228とを含む。
【0193】
第1の画像生成部224は、画像生成装置10の第1の画像生成部124と同様な処理を行う。
【0194】
例えば、第1の画像生成部224(左眼用画像生成部)は、仮想3次元空間(ワールド座標系、オブジェクト空間)において、第1の仮想カメラ(左眼用仮想カメラVCL)から見える第1の画像(左眼用画像)の各画素の画像情報(色情報、法線情報、深度情報、半透明情報の少なくとも1つ)を、第1のバッファ(例えば、第1のフレームバッファ274a、第1のテクスチャバッファ278a、第1のZバッファ279a)に記憶させる処理を行う。
【0195】
特に本実施形態の第1の画像生成部224は、仮想3次元空間において第1の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第1の画像を生成する処理を行う。
【0196】
また、第1の画像生成部224は、スクリーンに対応する特定バッファ275(例えば、ステンシルバッファ)の各画素に、第1の仮想カメラに対して最前面にあるプリミティブの情報を記憶させる処理を行う。
【0197】
また、第1の画像生成部224は、第1の画像を加工する処理を行う。例えば、第1の画像第1のテクスチャバッファ278aに格納し、エフェクト処理等を行った最終的な画像を、第1のフレームバッファ274aに格納するようにしてもよい。
【0198】
第2の画像生成部226は、画像生成装置10の第2の画像生成部126と同様な処理を行う。
【0199】
つまり、第2の画像生成部226(右眼用画像生成部)は、仮想3次元空間において、第2の仮想カメラ(右眼用仮想カメラVCR)から見える第2の画像(右眼用画像)の各画素の画像情報を、第2のバッファ(例えば、第2のフレームバッファ274a、第2のテクスチャバッファ278b、第2のZバッファ279b)に記憶させる処理を行う。
【0200】
特に本実施形態の第2の画像生成部226は、仮想3次元空間において第2の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第2の画像を生成する処理を行う。
【0201】
また、第2の画像生成部226は、ピクセル処理前に、第2の画像の画素毎に、プリミティブの情報と特定バッファの画素のプリミティブの情報とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。
【0202】
例えば、第2の画像生成部226は、プリミティブの識別情報と特定バッファの画素のプリミティブの識別情報とが同じ場合に、第1の画像から流用可能な画素の画像情報が存在すると判定する処理を行い、特定バッファの当該画素に対応する第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。また、第2の画像生成部226は、プリミティブの仮想3次元空間の位置座標と特定バッファの画素のプリミティブの仮想3次元空間の位置座標とが同じ場合に、第1の画像から流用可能な画素の画像情報が存在すると判定する処理を行い、特定バッファの当該画素に対応する第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行う。
【0203】
また、第2の画像生成部226は、第2の画像の画素毎に、第1の仮想カメラ及び第2の仮想カメラの仮想カメラ情報及び第2の画像の画素の奥行き情報に基づいて、特定バッファの探索領域を決定し、プリミティブの識別情報と探索領域内の画素のプリミティブの識別情報とを比較する処理、及び、プリミティブの仮想3次元空間の位置座標と探索領域内の画素のプリミティブの仮想3次元空間の位置座標とを比較する処理、の少なくとも一方を行う。探索領域は、画像生成装置10の第2の画像生成部126と同様な処理で決定すればよい。
【0204】
なお、立体視画像生成部228が、第1〜第N(N≧3)の仮想カメラに基づいて、立体視画像を生成する場合には、第2の画像生成部226は、第2〜第Nの各画像において、画素毎に、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、画像の画素の画像情報とする処理を行う。
【0205】
また、第2の画像生成部226は、第2の画像を加工する処理を行う。例えば、第2の画像第2のテクスチャバッファ278bに格納し、エフェクト処理等を行った最終的な画像を、第2のフレームバッファ274bに格納するようにしてもよい。
【0206】
立体視画像生成部228は、第1の画像と第2の画像とに基づいて、立体視画像を生成する処理を行う。立体視画像生成部228は、立体視画像生成部128と同様な処理を行う。
【0207】
音生成部230は、処理部100で行われる種々の処理の結果に基づいて音処理を行う。
【0208】
7.その他
本発明は、家庭用ゲームシステム、業務用ゲームシステム等の種々のゲームシステムの立体視画像の生成処理に適用できる。
【0209】
なお、本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0210】
本発明は、実施の形態で説明した構成と実質的に同一の構成(例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成)を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。なお、本実施形態で説明した実施例は、自由に組み合わせることができる。
【符号の説明】
【0211】
100 処理部、110 オブジェクト空間設定部、112 移動・動作処理部、
118 仮想カメラ制御部、119 通信制御部、120 画像生成部、
124 第1の画像生成部、126 第2の画像生成部、128 立体視画像生成部、
130 音生成部、160 操作部、170 記憶部、172 主記憶部、
174 フレームバッファ、174a 第1のフレームバッファ、
174b 第2のフレームバッファ、175 特定バッファ、
176 オブジェクトデータ記憶部、178 テクスチャ記憶部、
178a 第1のテクスチャバッファ、178b 第2のテクスチャバッファ、
179 Zバッファ、179a 第1のZバッファ、179b 第2のZバッファ、
180 情報記憶媒体、190 表示部、192 音出力部、196 通信部、
200 処理部、210 オブジェクト空間設定部、212 移動・動作処理部、
218 仮想カメラ制御部、219 通信制御部、220 画像生成部、
224 第1の画像生成部、226 第2の画像生成部、228 立体視画像生成部、
230 音生成部、270 記憶部、272 主記憶部、
274 フレームバッファ、274a 第1のフレームバッファ、
274b 第2のフレームバッファ、275 特定バッファ、
276 オブジェクトデータ記憶部、278 テクスチャ記憶部、
278a 第1のテクスチャバッファ、278b 第2のテクスチャバッファ、
279 Zバッファ、279a 第1のZバッファ、279b 第2のZバッファ、
280 情報記憶媒体、296 通信部、
10 端末、20 サーバ、40 スクリーン

【特許請求の範囲】
【請求項1】
仮想3次元空間にプリミティブを配置し、立体視画像を生成する処理を行うプログラムであって、
前記仮想3次元空間において第1の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第1の画像を生成する処理を行う第1の画像生成部と、
前記仮想3次元空間において第2の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第2の画像を生成する処理を行う第2の画像生成部と、
第1の画像と第2の画像に基づき、立体視画像を生成する処理を行う立体視画像生成部として、コンピュータを機能させ、
前記第1の画像生成部が、
スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの情報を記憶させる処理を行い、
前記第2の画像生成部が、
前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの情報と前記特定バッファの画素のプリミティブの情報とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、
第1の画像から流用可能な画素の画像情報が存在する場合に、前記ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行うことを特徴とするプログラム。
【請求項2】
請求項1において、
前記第1の画像生成部が、
スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの識別情報を記憶させる処理を行い、
前記第2の画像生成部が、
前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの識別情報と前記特定バッファの画素のプリミティブの識別情報とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行うことを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記第1の画像生成部が、
スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの前記仮想3次元空間の位置座標を記憶させる処理を行い、
前記第2の画像生成部が、
前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの仮想3次元空間の位置座標と前記特定バッファの画素の仮想3次元空間の位置座標とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行うことを特徴とするプログラム。
【請求項4】
請求項1〜3のいずれかおいて、
前記第1の画像生成部が、
スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの奥行き情報を記憶させる処理を行い、
前記第2の画像生成部が、
前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの仮想3次元空間の位置座標と、前記第1の仮想カメラ及び前記第2の仮想カメラの仮想カメラ情報及び前記特定バッファの画素の奥行き情報に基づき算出された仮想3次元空間の位置座標と、を比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行うことを特徴とするプログラム。
【請求項5】
請求項1〜4のいずれかにおいて、
前記第2の画像生成部が、
プリミティブの情報と前記特定バッファの画素のプリミティブの情報とが同じ場合に、第1の画像から流用可能な画素の画像情報が存在すると判定する処理を行い、前記特定バッファの当該画素に対応する第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行うことを特徴とするプログラム。
【請求項6】
請求項1〜5のいずれかにおいて、
前記第2の画像生成部が、
第2の画像の画素毎に、前記第1の仮想カメラ及び前記第2の仮想カメラの仮想カメラ情報及び第2の画像の画素の奥行き情報に基づいて、前記特定バッファの探索領域を決定し、プリミティブの情報と探索領域内の画素のプリミティブの情報とを比較する処理を行うことを特徴とするプログラム。
【請求項7】
請求項1〜6のいずれかにおいて、
前記立体視画像生成部が、第1〜第N(N≧3)の仮想カメラに基づいて、立体視画像を生成する場合に、
前記第1の画像生成部が、
第1の仮想カメラに基づき、前記頂点処理と前記ピクセル処理とを行うことによって、第1の画像を生成する処理を行い、前記特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの情報を記憶させる処理を行い、
前記第2の画像生成部が、
前記頂点処理と前記ピクセル処理とを、第2〜第Nの仮想カメラ毎に行うことによって、第2〜第Nの各画像を生成する処理を行い、
前記第2の画像生成部が、
第2〜第Nの各画像において、画素毎に、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、第1の画像から流用可能な画素の画像情報が存在する場合に、前記ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、画像の画素の画像情報に流用する処理を行うことを特徴とするプログラム。
【請求項8】
請求項1〜7のいずれかにおいて、
前記第1の画像生成部が、
前記第1の画像を加工する処理を行い、
前記第2の画像生成部が、
前記第2の画像を加工する処理を行い、
前記立体視画像生成部が、
加工された第1の画像と、加工された第2の画像とに基づいて、立体視画像を生成する処理を行うことを特徴とするプログラム。
【請求項9】
請求項1〜8のいずれかにおいて、
前記画像情報は、色情報、法線情報、奥行き情報、半透明情報の少なくとも1つであることを特徴とするプログラム。
【請求項10】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1〜9のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項11】
仮想3次元空間にプリミティブを配置し、立体視画像を生成する処理を行う画像生成装置であって、
前記仮想3次元空間において第1の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第1の画像を生成する処理を行う第1の画像生成部と、
前記仮想3次元空間において第2の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第2の画像を生成する処理を行う第2の画像生成部と、
第1の画像と第2の画像に基づき、立体視画像を生成する処理を行う立体視画像生成部と、を含み、
前記第1の画像生成部が、
スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの情報を記憶させる処理を行い、
前記第2の画像生成部が、
前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの情報と前記特定バッファの画素のプリミティブの情報とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、
第1の画像から流用可能な画素の画像情報が存在する場合に、前記ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行うことを特徴とする画像生成装置。
【請求項12】
仮想3次元空間にプリミティブを配置し、立体視画像を生成する処理を行うサーバであって、
前記仮想3次元空間において第1の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第1の画像を生成する処理を行う第1の画像生成部と、
前記仮想3次元空間において第2の仮想カメラに基づきプリミティブをスクリーンに透視投影変換する頂点処理と、各画素の画像情報を求めるピクセル処理と、を行うことによって、第2の画像を生成する処理を行う第2の画像生成部と、
第1の画像と第2の画像に基づき、立体視画像を生成する処理を行う立体視画像生成部と、を含み、
前記第1の画像生成部が、
スクリーンに対応する特定バッファの各画素に、前記第1の仮想カメラに対して最前面にあるプリミティブの情報を記憶させる処理を行い、
前記第2の画像生成部が、
前記ピクセル処理前に、第2の画像の画素毎に、プリミティブの情報と前記特定バッファの画素のプリミティブの情報とを比較する処理を行うことによって、第1の画像から流用可能な画素の画像情報が存在するか否かを判定する処理を行い、
第1の画像から流用可能な画素の画像情報が存在する場合に、前記ピクセル処理の替わりに、第1の画像の当該画素の画像情報を、第2の画像の画素の画像情報に流用する処理を行うことを特徴とするサーバ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2013−61898(P2013−61898A)
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願番号】特願2011−201389(P2011−201389)
【出願日】平成23年9月15日(2011.9.15)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】