説明

プログラム、情報記憶媒体及び画像生成システム

【課題】チラツキの少ない立体視画像の効率的な生成を可能にするプログラム等の提供。
【解決手段】画像生成システムは、第1、第2の領域AR1、AR2を有するバッファTBと、多眼立体視画像ISを生成するための描画処理を行う描画部を含む。描画部は、多眼立体視の第1の視点画像IRを高さ方向において1/2に圧縮して、バッファTBの第1の領域AR1に書き込むと共に、多眼立体視の第2の視点画像ILを高さ方向において1/2に圧縮して、バッファTBの第2の領域AR2に書き込む。そしてバッファTBから画像を読み出すことで、第1の領域AR1に書き込まれた第1の視点画像IRのピクセル画像と第2の領域AR2に書き込まれた第2の視点画像ILのピクセル画像とが、ライン毎に交互に表示される多眼立体視画像ISを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システムに関する。
【背景技術】
【0002】
従来より、ゲームや映画などの分野において、臨場感溢れる画像を生成するシステムとして、立体視画像の生成が可能な画像生成システムが注目を浴びている。このような画像生成システムとしては例えば特許文献1に開示される従来技術がある。この画像生成システムでは、右目用画像と左目用画像を用意し、これらの画像を表示画面上にフレーム毎(例えば1/60秒毎)に交互に表示する。そして観者は専用の眼鏡を装着し、右目は右目用画像のみを見て、左目は左目用画像のみを見ることで、立体視を実現する。
【0003】
しかしながら、この方式の立体視では、右目用画像と左目用画像がフレーム毎に交互に表示されるため、画面にチラツキが発生する。従って、例えば3次元ゲームの画像を、このような方式で表示すると、長時間のゲームプレイが難しいという課題があった。
【特許文献1】特開2004−178581号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
本発明の幾つかの態様によれば、チラツキの少ない立体視画像の効率的な生成を可能にするプログラム、情報記憶媒体及び画像生成システムを提供できる。
【課題を解決するための手段】
【0005】
本発明は、多眼立体視のための画像生成システムであって、第1の領域と第2の領域を有するバッファと、多眼立体視画像を生成するための描画処理を行う描画部とを含み、前記描画部は、多眼立体視の第1の視点画像を高さ方向において1/2に圧縮して、前記バッファの前記第1の領域に書き込むと共に、多眼立体視の第2の視点画像を高さ方向において1/2に圧縮して、前記バッファの前記第2の領域に書き込み、前記バッファから画像を読み出すことで、前記第1の領域に書き込まれた前記第1の視点画像のピクセル画像と前記第2の領域に書き込まれた前記第2の視点画像のピクセル画像とが、ライン毎に交互に表示される前記多眼立体視画像を生成する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0006】
本発明によれば、第1、第2の視点画像が、高さ方向に1/2に圧縮されてバッファの第1、第2の領域に書き込まれる。そしてこのバッファから画像を読み出すことで、第1の領域の第1の視点画像と第2の領域の第2の視点画像がライン毎に交互に表示された多眼立体視画像が生成される。このようにすれば、第1、第2の視点画像の高さ方向に圧縮した書き込み処理と、バッファからの画像の読み出し処理だけで、第1、第2の視点画像がライン毎に交互に表示された多眼立体視画像を生成できるため、チラツキの少ない立体視画像の効率的な生成が可能になる。
【0007】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記バッファは、幅がWピクセルであり高さがH/2ピクセルである前記第1の領域と、幅がWピクセルであり高さがH/2ピクセルである前記第2の領域を有し、前記描画部は、前記バッファのメモリピッチを2Nバイトに設定し、幅がWピクセルであり高さがHピクセルである前記第1の視点画像を高さ方向において圧縮して、前記第1の領域に書き込むと共に、幅がWピクセルであり高さがHピクセルである前記第2の視点画像を高さ方向において圧縮して、前記第2の領域に書き込み、前記バッファのメモリピッチをNバイトに設定し、前記バッファから画像を読み出すことで、前記第1の視点画像のピクセル画像と前記第2の視点画像のピクセル画像がライン毎に交互に表示される前記多眼立体視画像を生成してもよい。
【0008】
このようにすれば、画像の書き込み時にはメモリピッチを2Nバイトに設定し、画像の読み出し時にはメモリピッチをNバイトに設定することで、第1、第2の視点画像のピクセル画像がライン毎に交互に表示された多眼立体視画像を生成できる。
【0009】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記第1、第2の視点画像を描画するための描画バッファを含み、前記描画部は、前記第1の視点画像を前記描画バッファに描画し、前記描画バッファに描画された前記第1の視点画像を高さ方向において圧縮して前記バッファの前記第1の領域にコピーし、前記第2の視点画像を前記描画バッファに描画し、前記描画バッファに描画された前記第2の視点画像を高さ方向において圧縮して前記バッファの前記第2の領域にコピーしてもよい。
【0010】
このようにすれば、高さ方向での画像の圧縮は、描画バッファから第1、第2の領域へのコピー処理の際に行えば済むため、処理の簡素化、効率化を図れる。
【0011】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記描画部は、前記描画バッファに描画された前記第1の視点画像を、前記第1の領域のサイズのポリゴンにテクスチャマッピングして前記第1の領域に描画することで、前記描画バッファから前記第1の領域への前記第1の視点画像のコピーを行い、前記描画バッファに描画された前記第2の視点画像を、前記第2の領域のサイズのポリゴンにテクスチャマッピングして前記第2の領域に描画することで、前記描画バッファから前記第2の領域への前記第2の視点画像のコピーを行ってもよい。
【0012】
このようにすれば、ポリゴンのサイズの設定だけで高さ方向の画像圧縮を実現できるため、処理の更なる簡素化、効率化を図れる。
【0013】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記描画部は、前記第2の視点画像を前記第2の領域のサイズのポリゴンにテクスチャマッピングする際に、高さ方向のテクスチャ座標を1テクセル分だけシフトさせてもよい。
【0014】
このようにすれば、第1、第2の視点画像のピクセル画像が適正に配列された多眼立体視画像を生成できる。
【0015】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記描画部は、前記第1、第2の視点画像が前記第1、第2の領域にコピーされた後に、前記バッファの画像を前記描画バッファに書き戻してもよい。
【0016】
このようにすれば、描画バッファを用いた既存の描画アルゴリズムに対して、バッファ等を追加するだけで、多眼立体視画像を生成できるようになる。
【0017】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記描画部は、前記バッファの画像を、前記描画バッファのサイズのポリゴンにテクスチャマッピングして前記描画バッファに描画することで、前記バッファの画像を前記描画バッファに書き戻してもよい。
【0018】
このようにすれば、テクスチャマッピングを有効活用した効率的な処理で、描画バッファへの画像の書き戻しを実現できる。
【0019】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記描画バッファとして、第1、第2の描画バッファが用意され、前記描画部は、前記第1、第2の描画バッファの一方の描画バッファから前記バッファへの画像のコピー処理及び前記バッファから前記一方の描画バッファへの画像の書き戻し処理を行った後に、前記一方の描画バッファをバックバッファからフロントバッファに切り替え、前記一方とは異なる他方の描画バッファをフロントバッファからバックバッファに切り替えてもよい。
【0020】
このようにすれば、複数バッファ方式を採用した既存の描画アルゴリズムに対して、バッファ等を追加するだけで、多眼立体視画像を生成できるようになる。
【0021】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記描画部は、前記第1、第2の視点画像を高さ方向において圧縮して前記第1、第2の領域に書き込む際に、前記第1、第2の視点画像の第iのラインのピクセル画像と次の第i+1のラインのピクセル画像の平均化処理を行ってもよい。
【0022】
このようにすれば、ジャギー等を低減して、高品位の画像を生成できるようになる。
【0023】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記描画部は、前記第1、第2の視点画像を、前記第1、第2の領域のサイズのポリゴンにテクセル補間方式でテクスチャマッピングして前記第1、第2の領域に描画することで、前記第iのラインのピクセル画像と前記第i+1のラインのピクセル画像の前記平均化処理を行ってもよい。
【0024】
このようにすれば、テクスチャマッピングを行うことで、平均化処理が自動的に実行されるようになるため、処理を効率化できる。
【0025】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記描画部は、前記多眼立体視画像の第mのラインについては、前記第1の視点画像の第jのラインのピクセル画像と次の第j+1のラインのピクセル画像の平均化が行われ、前記多眼立体視画像の第m+1のラインについては、前記第2の視点画像の第j+1のラインのピクセル画像と次の第j+2のラインのピクセル画像の平均化が行われるように、前記平均化処理を行ってもよい。
【0026】
このようにすれば、適正な位置に適正な第1、第2の視点画像のピクセル画像が表示された多眼立体視画像を生成できる。
【0027】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記描画部は、多眼立体視の第1の視点用の仮想カメラの注視点と、多眼立体視の第2の視点用の仮想カメラの注視点を、高さ方向においてずらして、前記第1の視点画像と前記第2の視点画像を生成してもよい。
【0028】
このようにすれば、更に適正な多眼立体視画像を生成できる。
【発明を実施するための最良の形態】
【0029】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0030】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)のブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0031】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、方向キー、操作ボタン、アナログスティック、レバー、ステアリング、アクセル、ブレーキ、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【0032】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。この記憶部170は、電源を切るとデータが消えてしまう揮発性のメモリにより構成できるが、補助記憶装置194よりも高速な記憶装置になっている。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。
【0033】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、或いはメモリ(ROM等)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0034】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0035】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される大容量の記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードや、HDDなどにより実現できる。この補助記憶装置194は脱着自在になっているが、内蔵されるものであってもよい。この補助記憶装置194は、ゲームの途中結果などのセーブデータや、プレーヤ(ユーザ)の個人的な画像データや音楽データなどを保存するために使用される。
【0036】
通信部196は、有線や無線のネットワークを介して外部(例えば他の画像生成システム、サーバ、ホスト装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【0037】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(或いは記憶部170、補助記憶装置194)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0038】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部100は記憶部170(主記憶部172)をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0039】
処理部100は、ゲーム演算部102、オブジェクト空間設定部104、移動体演算部106、仮想カメラ制御部108、描画部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
【0040】
ゲーム演算部102はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0041】
オブジェクト空間設定部104は、モデルオブジェクト(車、戦闘機、人、ロボット、ミサイル、弾等の移動体)、マップ(地形)、建物、コース(道路)、樹木、壁などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のモデルデータ記憶部MSには、オブジェクトの位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。そしてこのオブジェクトデータは、移動体演算部106の移動体演算処理等により順次更新される。
【0042】
オブジェクト空間設定部104はカリング処理部105を含む。このカリング処理部105は例えばソフトウェアによるカリング処理を行う。具体的には、オブジェクトデータのオブジェクトリストの中から、当該フレームにおいて表示されることがないオブジェクトを削除する処理を行う。例えば当該フレームにおいて仮想カメラの視野範囲内に存在せず、表示処理を行う必要がないオブジェクトを予め削除する。このようにすれば、削除されたオブジェクトを構成するポリゴンについては頂点データ等を作成しなくても済むため、処理負荷を大幅に軽減できる。
【0043】
移動体演算部(移動体制御部)106は、移動体(移動体オブジェクト)を移動させるための演算を行う。また移動体を動作させるための演算も行う。即ち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、移動体(オブジェクト、モデルオブジェクト)をオブジェクト空間内で移動させたり、移動体を動作(モーション、アニメーション)させる処理を行う。具体的には、移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0044】
より具体的には、移動体演算部106は、モーションデータ記憶部MTSに記憶されるモーションデータに基づいて、オブジェクトのモーションを再生する処理を行う。即ち、オブジェクト(スケルトン)を構成する各パーツオブジェクト(スケルトンを構成する骨)の位置又は回転角度(方向)等を含むモーションデータを、モーションデータ記憶部MTSから読み出す。そして、オブジェクトの各パーツオブジェクト(骨)を動かすことで(スケルトン形状を変形させることで)、オブジェクトのモーションを再生する。
【0045】
仮想カメラ制御部108は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向或いは画角を制御する処理)を行う。
【0046】
例えば仮想カメラにより車、キャラクタ、戦闘機などの移動体を後方から撮影する場合には、移動体の位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動体演算部106で得られた移動体の位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0047】
なお本実施形態では仮想カメラ制御部108は、多眼立体視画像を生成するために、複数の視点の仮想カメラの制御を行う。具体的には第1の視点用(例えば右目用)の仮想カメラと第2の視点用(例えば左目用)の仮想カメラを制御して、プレーヤに立体感を感じさせるための両眼視差等を実現する。
【0048】
描画部120(画像生成部)は、処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずモデル(オブジェクト)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が生成され、これらのデータに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0049】
頂点処理(頂点シェーダ処理)では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、或いは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。
【0050】
ピクセル処理(ピクセルシェーダ処理)では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたモデルの描画色を描画バッファDB(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット、フレームバッファ)に出力(描画)する。即ち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定或いは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。
【0051】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0052】
描画部120は、ライティング処理部122、テクスチャマッピング部124を含む。なおこれらの一部を省略する構成としてもよい。
【0053】
ライティング処理部122は、照明モデル等に基づくライティング処理(シェーディング処理)を行う。具体的にはこのライティング処理は、光源情報(光源ベクトル、光源色、明るさ、光源タイプ等)、仮想カメラ(視点)の視線ベクトル、オブジェクト(半透明オブジェクト)の法線ベクトル、オブジェクトのマテリアル(色、材質)などを用いて行われる。なお照明モデルとしては、アンビエント光とディフューズ光だけを考慮したランバードの拡散照明モデルや、アンビエント光、ディフューズ光に加えてスペキュラ光も考慮するフォンの照明モデルやブリン・フォンの照明モデルなどがある。
【0054】
テクスチャマッピング部124は、オブジェクト(ポリゴン)にテクスチャをマッピングする処理を行う。ここでテクスチャマッピング処理は、テクスチャ記憶部TSに記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングする処理である。具体的には、オブジェクト(プリミティブ面)の頂点やピクセルに設定(付与)されるテクスチャ座標等を用いてテクスチャ記憶部TSからテクスチャ(色、α値などの表面プロパティ)を読み出す。そして2次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理やバイリニア補間(広義にはテクセル補間)などを行う。
【0055】
そして本実施形態では描画部120は、多眼立体視画像(n眼立体視画像。n≧2)を生成するための描画処理を行う。具体的には描画部120は、多眼立体視(2眼立体視)の第1の視点画像(例えば右目用画像)を高さ方向(縦方向)において例えば1/2に圧縮(縮小)して、バッファTBの第1の領域AR1(例えば左半分側の領域)に書き込む。また多眼立体視の第2の視点画像(例えば左目用画像)を高さ方向(縦方向)において例えば1/2に圧縮(縮小)して、バッファTBの第2の領域AR2(例えば右半分側の領域)に書き込む。そしてバッファTBから画像(AR1、AR2の画像)を読み出すことで、第1の領域AR1に書き込まれた第1の視点画像のピクセル画像(R、G、B、α)と第2の領域AR2に書き込まれた第2の視点画像のピクセル画像とが、ライン毎(例えば走査ライン毎、ビットマップライン毎)に交互に表示される多眼立体視画像を生成する。
【0056】
更に具体的には、第1、第2の領域AR1、AR2は、幅がWピクセル(例えば1920ピクセル)であり高さがH/2ピクセル(例えば1080/2=540ピクセル)の領域になっている。
【0057】
そして画像の書き込み時には、バッファTBのメモリピッチを2Nバイト(例えば2×4バイト×2048ピクセル=16384バイト)に設定する。ここでメモリピッチ(ピッチサイズ)は、ビットマップラインの先頭を表すアドレスと、次のラインの先頭を表すアドレスとのバイト単位の距離である。描画部120は、このように設定されたバッファTBにおいて、幅がWピクセルであり高さがHピクセルである第1の視点画像を、第1の領域AR1に書き込む。また幅がWピクセルであり高さがHピクセルである第2の視点画像を、第2の領域AR2に書き込む。例えば第1の視点画像を描画バッファDB(DB1又はDB2)に描画し、描画された第1の視点画像を高さ方向において圧縮してバッファTBの第1の領域AR1にコピーする。また第2の視点画像を描画バッファDB(DB1又はDB2)に描画し、描画された第2の視点画像を高さ方向において圧縮してバッファTBの第2の領域AR2にコピーする。この場合のコピー処理は、第1、第2の領域AR1、AR2のサイズのポリゴン(画面に表示されない仮想的なポリゴン)に対して、第1又は第2の視点画像をテクスチャとしてマッピングし、当該ポリゴンを第1又は第2の領域AR1、AR2に描画することで実現できる。
【0058】
一方、画像の読み出し時には、バッファTBのメモリピッチをNバイトに設定する。描画部120は、このように設定されたバッファTBから画像を読み出すことで、多眼立体視画像を生成する。例えば第1、第2の視点画像が第1、第2の領域AR1、AR2にコピーされた後に、バッファTBの画像を描画バッファDB(DB1又はDB2)に書き戻す(ライトバックする)。この場合の書き戻し処理は、バッファTBの画像を、描画バッファDB(DB1又はDB2)のサイズのポリゴンにテクスチャマッピングし、当該ポリゴンを描画バッファDBに描画することなどで実現できる。
【0059】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0060】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0061】
2.本実施形態の手法
2.1 立体視方式
まず、図2、図3を用いて、本実施形態において採用される立体視方式の一例について説明する。
【0062】
図2の画像生成システム300(例えばゲーム装置)により生成された多眼立体視画像は、表示装置310(例えばハイビジョン対応テレビ)の表示画面に表示される。表示画面には、右目用偏光フィルタと左目用偏光フィルタが走査ライン毎に交互に配列されたフィルム312が貼られている。プレーヤは、これらの偏光フィルタに対応する偏光眼鏡320を掛けて表示画面を見ることで、立体視映像を鑑賞する。
【0063】
具体的には表示装置310の表示画面には、走査ライン毎に右目用画像と左目用画像とが交互に表示される。プレーヤは、偏光眼鏡320の右目部分322に設けられた偏光フィルタを介して、フィルム312の右目用偏光フィルタにより偏光された各走査ラインの右目用画像を見る。また偏光眼鏡320の左目部分324を介して、フィルム312の左目用偏光フィルタにより偏光された各走査ラインの左目用画像を見る。
【0064】
図2の立体視方式によれば、プレーヤは、右目用画像及び左目用画像を偏光眼鏡320の右目部分322及び左目部分324を介して同時に見ることができる。従って、右目用画像と左目用画像がフレーム毎に交互に表示される従来の立体視方式に比べて、チラツキが少なく疲れにくい理想的な立体視表示を実現できる。特に3次元ゲーム映像のように、動きの速い映像では、従来の立体視方式では立体感が失われたり、眼の疲労が大きくなるなどの欠点があるが、図2の立体視方式によれば、このような欠点を解消できる。
【0065】
図3に右目用画像IR、左目用画像IL、多眼立体視画像ISを概念的に示す。図3の多眼立体視画像ISでは、奇数番目の走査ラインには右目用画像IRのピクセル画像が表示され、偶数番目の走査ラインには左目用画像ILのピクセル画像が表示される。プレーヤは、奇数番目の走査ラインのピクセル画像を偏光眼鏡320の右目部分322を介して見ると共に、偶数番目の走査ラインのピクセル画像を左目部分324を介して見ることで、立体感のある映像を楽しむことができる。
【0066】
図4(A)、図4(B)、図5に、本実施形態の画像生成システムにより生成される右目用画像IR、左目用画像IL、多眼立体視画像ISの一例を示す。これらは3次元レースゲームに本実施形態の手法を適用した場合の画像例である。
【0067】
図4(A)、図4(B)では、全ての走査ラインについて右目用画像IR、左目用画像ILのピクセル画像が生成されている。例えばフルハイビジョン対応の場合には、1080本の全ての走査ラインについてピクセル画像が生成される。そして図5の多眼立体視画像ISは、これらのフルハイビジョン対応の右目用画像IR、左目用画像ILを合成することで生成される。従って、フルハイビジョンの解像度で立体視ゲーム映像を表示できるため、プレーヤの仮想現実感を飛躍的に向上できる。即ち従来の立体視方式では、立体視画像にすることで、解像度が落ちたり、フレームレートが低下するため、画像品質が低下してしまうという問題があったが、図4(A)〜図5の手法によればこのような問題を解消できる。
【0068】
2.2 立体視画像の生成手法
次に本実施形態の立体視画像の生成手法について説明する。本実施形態では、図4(A)〜図5に示すような高品質の立体視画像を生成するために以下に説明する手法を採用している。なお以下では第1の視点画像が右目用画像であり、第2の視点画像が左目用画像である場合を例にとり説明するが、本実施形態はこれに限定されない。例えば第1の視点画像が左目用画像等であり、第2の視点画像が右目用画像等であってもよい。
【0069】
図6に示すように本実施形態では、バッファTBに第1、第2の領域AR1、AR2を確保する。そして図4(A)に例示されるような右目用画像IR(広義には第1の視点画像)を生成し、この右目用画像IRを高さ方向(縦方向)において圧縮(縮小)して、バッファTBの第1の領域AR1に書き込む。また図4(B)に例示されるような左目用画像IL(広義には第2の視点画像)を生成し、この左目用画像ILを高さ方向において圧縮して、バッファTBの第2の領域AR2に書き込む。
【0070】
そして、このバッファTBから画像を読み出すことで、図5に例示されるような多眼立体視画像ISを生成(合成)する。即ち領域AR1の右目用のピクセル画像と領域AR2の左目用のピクセル画像とが、ライン毎(走査ライン毎、ビットマップライン毎)に交互に表示される多眼立体視画像ISを生成する。
【0071】
具体的には右目用画像IR、左目用画像ILは、幅がWピクセル、高さがHピクセルの画像になっている。フルハイビジョン対応の場合には例えばW=1920、H=1080になる。一方、領域AR1、AR2は、幅がWピクセル、高さがH/2ピクセルの領域になっている。
【0072】
バッファTBへの画像の書き込み時においては、バッファTBのメモリピッチ(ラインの先頭アドレスから次のラインの先頭アドレスまでのバイト単位の距離)は2Nバイトに設定される。例えば1ピクセル(R、G、B、α)が4バイトである場合には、フルハイビジョン対応では例えば2Nバイト=2×4×2048バイトになる。そして図6では、幅がWピクセル、高さがHピクセルである右目用画像IRが、高さ方向において1/2に圧縮されて、領域AR1に書き込まれ、幅がWピクセルであり高さがHピクセルである左目用画像ILが、高さ方向において1/2に圧縮されて、領域AR2に書き込まれる。
【0073】
一方、バッファTBからの画像の読み出し時においては、バッファTBのメモリピッチはNバイトに設定される。そしてこのように設定されたバッファTBから右目用画像IR、左目用画像ILを読み出すことで、図5に例示されるような多眼立体視画像ISが合成される。
【0074】
具体的には、書き込み時に2Nバイトに設定されたメモリピッチ(ピッチサイズ)を、読み出し時にNバイトに設定することで、領域AR1の第1のラインの右目用ピクセル画像が、多眼立体視画像ISの第1のラインに表示され、領域AR2の第1のラインの左目用ピクセル画像が、多眼立体視画像ISの第2のラインに表示されるようになる。また領域AR1の第2のラインの右目用ピクセル画像が、多眼立体視画像ISの第3のラインに表示され、領域AR2の第2のラインの左目用ピクセル画像が、多眼立体視画像ISの第4のラインに表示されるようになる。即ち右目用ピクセル画像と左目用ピクセル画像がライン毎に交互に表示されるようになる。
【0075】
2.3 描画バッファの利用
レンダリングにより生成された右目用画像IR、左目用画像ILは、直接にバッファTBの領域AR1、AR2に描画してもよいが、図7(A)、図7(B)に示すように、描画バッファDBに描画した後に、領域AR1、AR2にコピーするようにしてもよい。
【0076】
即ち図7(A)では、右目用画像IRを描画バッファDBに描画し、描画された右目用画像IRを高さ方向において圧縮して、テンポラリバッファ(ワークバッファ)として機能するバッファTBの領域AR1にコピーする。また図7(B)では、左目用画像ILを描画バッファDBに描画し、描画された左目用画像ILを高さ方向において圧縮して、バッファTBの領域AR2にコピーする。
【0077】
このようにすれば、高さ方向での画像の圧縮(平均化、間引き、縮小)は、描画バッファDBから領域AR1、AR2へのコピー処理の際に行えばよく、画像圧縮と右目用・左目用画像の生成を同時に行わなくても済むため、処理の簡素化、効率化を図れる。
【0078】
この場合に図7(A)、図7(B)のコピー処理は、例えばテクスチャマッピングを利用して実現できる。
【0079】
具体的には図8(A)に示すように、描画バッファDBに描画された右目用画像IRを、領域AR1のサイズのポリゴンPL(画面に表示されない仮想的なプリミティブ面)にテクスチャマッピングする。この場合に、テクスチャマッピングは、ポイントサンプリング方式ではなく例えばテクセル補間方式(狭義にはバイリニアフィルタモード)に設定する。そしてこのように右目用画像IRがテクスチャとしてマッピングされたポリゴンPLを領域AR1に描画することで、図7(A)のコピー処理を実現する。
【0080】
また図8(B)に示すように、描画バッファDBに描画された左目用画像ILを、領域AR2のサイズのポリゴンPLにテクスチャマッピングする。この場合に、テクスチャマッピングはテクセル補間方式に設定する。また高さ方向にテクスチャ座標(UV空間の例えばV座標)を例えば1テクセル分だけシフトしてテクスチャマッピングを行う。そしてこのように左目用画像ILがテクスチャとしてマッピングされたポリゴンPLを領域AR2に描画することで、図7(B)のコピー処理を実現する。
【0081】
図8(A)、図8(B)のようにテクスチャマッピングによりコピー処理を実現すれば、ポリゴンPLのサイズの設定だけで高さ方向の画像圧縮を実現できるため、処理の簡素化、効率化を図れる。また、後述するような隣り合うラインのピクセル画像の平均化処理を、テクスチャマッピングのテクセル補間方式(バイリニアフィルタ)を利用して実現できるため、更に処理を効率化できる。
【0082】
なお図7(A)、図7(B)のように右目用画像IR、左目用画像ILが領域AR1、AR2にコピーされた後に、バッファTBの画像は描画バッファDBに書き戻される。具体的にはバッファTBのメモリピッチを2NバイトからNバイトに変更して、バッファTBの画像を描画バッファDBに書き戻し、図5に例示されるような多眼立体視画像ISを生成する。
【0083】
このようにすれば、描画バッファDBを利用した既存の描画アルゴリズムに対して、テンポラリバッファであるバッファTBやコピー・書き戻しアルゴリズム等を追加するだけで、右目用画像IR、左目用画像ILのテンポラリバッファTBへのコピー処理を実現して、多眼立体視画像ISを生成できるようになる。
【0084】
なお描画バッファDBへの画像の書き戻し(ライトバック)は、図8(A)、図8(B)と同様にテクスチャマッピングを利用した手法により実現できる。具体的には、バッファTBのピッチサイズを2NバイトからNバイトに変更する。そしてバッファTBの画像(TBの全体の画像)を、描画バッファDB(DB1又はDB2)のサイズのポリゴンにテクスチャマッピングする。そして、バッファTBの画像がテクスチャマッピングされたポリゴンを描画バッファDBに描画することで、バッファTBの画像を描画バッファDBに書き戻す。
【0085】
2.4 ダブルバッファ方式
描画バッファDBとしてダブルバッファ方式(或いはトリプルバッファ等の複数バッファ方式)を採用する場合には、図9(A)、図9(B)に示す手法を採用することが望ましい。
【0086】
例えば図9(A)では、描画バッファDBとして、第1、第2の描画バッファDB1、DB2が用意(確保)されている。また図9(A)の期間では、第1の描画バッファDB1がバックバッファ(描画用バッファ)に設定され、第2の描画バッファDB2がフロントバッファ(表示用バッファ)に設定されている。なおトリプルバッファ等の複数バッファ方式では、第1、第2の描画バッファDB1、DB2を含む3個以上の描画バッファを用意(確保)すればよい。
【0087】
そして図9(A)では、描画バッファDB1(広義には、第1、第2の描画バッファの一方の描画バッファ)からバッファTBに対して、図7(A)、図7(B)で説明した画像のコピー処理が行われる。またバッファTBから描画バッファDB1への画像の書き戻し処理が行われる。これにより、描画バッファDB1には、次のフレームに表示すべき多眼立体視画像ISが生成される。
【0088】
このように多眼立体視画像ISが描画バッファDB1に生成された後に、図9(B)に示すように、描画バッファDB1をバックバッファからフロントバッファに切り替える(フリップする)。これにより、描画バッファDB1の多眼立体視画像ISが表示装置の画面に表示される。またこの時に、描画バッファDB2(広義には、一方とは異なる他方の描画バッファ)は、フロントバッファからバックバッファに切り替えられる。
【0089】
そして図9(B)では、描画バッファDB2からバッファTBに対して、図7(A)、図7(B)で説明した画像のコピー処理が行われる。またバッファTBから描画バッファDB2への画像の書き戻し処理が行われる。これにより、描画バッファDB2には、次のフレームに表示すべき多眼立体視画像ISが生成される。
【0090】
以上の図9(A)、図9(B)の手法によれば、ダブルバッファ方式の既存の描画アルゴリズムに対して、テンポラリバッファであるバッファTBやコピー・書き戻しアルゴリズム等を追加するだけで、ダブルバッファ方式と本実施形態による多眼立体視画像ISの生成手法を両立できるようになる。
【0091】
2.5 平均化処理
図6に示すように高さ方向(走査ラインの並ぶ方向)での圧縮処理を行う場合には、隣り合うラインのピクセル画像の平均化処理(補間処理)を行うことが望ましい。
【0092】
具体的には図10に示すように、右目用画像IR(第1の視点画像)を高さ方向において圧縮して領域AR1に書き込む際に、右目用画像の第i(iは自然数)のラインのピクセル画像と次の第i+1のラインのピクセル画像の平均化処理を行う。同様に、左目用画像IL(第2の視点画像)を高さ方向において圧縮して領域AR2に書き込む際に、左目用画像の第iのラインのピクセル画像と次の第i+1のラインのピクセル画像の平均化処理を行う。
【0093】
例えば図10において、右目用画像IRの第1、第2、第3、第4のラインのピクセル画像(ライン中の特定ピクセルのRGB画像)をR1、R2、R3、R4とする。この場合には、領域AR1の第1のラインのピクセル画像は、R1とR2の平均化処理により(R1+R2)/2になり、第2のラインのピクセル画像は、R3とR4の平均化処理により(R3+R4)/2になる。右目用画像IRの他のラインや、左目用画像ILについても同様である。
【0094】
このような平均化処理を行えば、多眼立体視画像において右目用ピクセル画像と左目用ピクセル画像がライン毎に交互に表示される場合にも、例えばハイビジョン等に対応した高精細な解像度を維持した立体視画像の表示が可能になる。また、ジャギーやエイリアシングの発生を低減でき、高品位な立体視画像を生成できる。
【0095】
なおこのような平均化処理は、図8(A)、図8(B)で説明したように、テクスチャのマッピングモードをテクセル補間方式(バイリニアフィルタモード)に設定して、高さ方向にテクスチャを圧縮したテクスチャマッピングを行うことで、自動的に実行できる。具体的には、右目用画像IR、左目用画像ILを、領域AR1、AR2のサイズのポリゴンにテクセル補間方式でテクスチャマッピングして領域AR1、AR2に描画することで、第iのラインのピクセル画像と第i+1のラインのピクセル画像の平均化処理を実現する。
【0096】
即ちテクスチャを高さ方向に1/2に圧縮すると、右目用画像IR、左目用画像ILのテクスチャのテクセル間隔と、領域AR1、AR2のピクセル間隔が一致しなくなり、テクセル間隔はピクセル間隔の例えば1/2倍になる。従って、複数のテクセル画像を平均化した画像が、領域AR1、AR2の各ピクセルにマッピングされるようになる。これにより図10に示すような平均化処理が自動的に実行されるため、処理を効率化できる。
【0097】
図11に、本実施形態の平均化処理の更に詳細な具体例を示す。図11では、多眼立体視画像ISの第m(mは自然数)のラインについては、右目用画像IR(第1の視点画像)の第j(jは自然数)のラインのピクセル画像と次の第j+1のラインのピクセル画像の平均化が行われる。また多眼立体視画像ISの第m+1のラインについては、左目用画像IL(第2の視点画像)の第j+1のラインのピクセル画像と次の第j+2のラインのピクセル画像の平均化が行われる。これは図8(B)で説明したテクスチャ座標の1テクセル分のシフトにより実現できる。
【0098】
例えば右目用画像IRの第1〜第6のラインのピクセル画像をR1〜R6とし、左目用画像ILの第1〜第7のラインのピクセル画像をL1〜L7としたとする。この場合に、多眼立体視画像ISの第1のライン(第mのライン)には、右目用画像IRの第1のライン(第jのライン)のピクセル画像R1と、第2のライン(第j+1のライン)のピクセル画像R2を平均化した画像(R1+R2)/2が表示(配列)される。また多眼立体視画像ISの第2のライン(第m+1のライン)には、左目用画像ILの第2のライン(第j+1のライン)のピクセル画像L2と、第3のライン(第j+2のライン)のピクセル画像L3を平均化した画像(L2+L3)/2が表示される。
【0099】
同様に、多眼立体視画像ISの第3のラインには、右目用画像IRの第3のラインのピクセル画像R3と、第4のラインのピクセル画像R4を平均化した画像(R3+R4)/2が表示される。また多眼立体視画像ISの第4のラインには、左目用画像ILの第4のラインのピクセル画像L4と、第5のラインのピクセル画像L5を平均化した画像(L4+L5)/2が表示される。他のラインについても同様である。なお図11では、多眼立体視画像ISの最終ラインでは、ピクセル画像L1080の合成対象となるピクセル画像が存在しないため、ピクセル画像L1080が表示されるようになる。
【0100】
図11の手法によれば、多眼立体視画像ISにおいて適正な位置に適正な右目用ピクセル画像又は左目用ピクセル画像が表示されるようになるため、ジャギーやアンチエイリアシングを効果的に低減できる。
【0101】
例えば図12に、本実施形態の平均化手法を採用した場合に生成される画像の例を示す。図12は、例えばレースゲームにおけるガードレール部分を拡大した画像である。図12に示すように、階段状に変化するガードレールのエッジ部分に対して、平均化処理によるブラーがかかったような表示が行われるため、ジャギーが目立たなくなり、アンチエイリアシングを低減できる。
【0102】
一方、図13は、本実施形態の平均化手法を採用しなかった場合に生成される画像の例である。具体的には図13では、多眼立体視画像ISの第1のラインに右目用の画像R1、第2のラインに左目用の画像L2、第3のラインに右目用の画像R3、第4のラインに左目の画像L4が表示される。図13では、階段状に変化するガードレールのエッジ部分に対して、図12に示すようなブラーがかからないため、ジャギーが目立ってしまい、画像の品質が劣化する。本実施形態の平均化手法によれば、このような問題を解消できる。
【0103】
なお図11では、多眼立体視画像ISの最終ライン(L1080)では、平均化処理が行われず、この部分では正しい表示を実現できないという問題がある。このような問題を解決するために、仮想カメラの注視点(描画範囲)をずらす手法を採用してもよい。
【0104】
具体的には図14に示すように、多眼立体視の右目用(第1の視点用)の仮想カメラVCRの注視点と、多眼立体視の左目用(第2の視点用)の仮想カメラVCLの注視点を、例えば高さ方向(走査ラインの並ぶ方向)においてずらして(シフトさせて)、右目用画像、左目用画像(第1の視点画像、第2の視点画像)を生成している。
【0105】
更に具体的には、右目用の仮想カメラVCRの注視点については、例えば上方向に0.5ピクセルだけずらし、左目用の仮想カメラVCLの注視点については、例えば下方向に0.5ピクセルだけずらす。これにより、左右の注視点は上下に例えば1ピクセルだけずれるようになる。この結果、図11の最終ラインにおいても、画像L1079とL1080を平均化したものが表示されるようになり、生成される画像の品質を更に向上できる。
【0106】
2.6 詳細な処理例
次に本実施形態の詳細な処理例を図15、図16のフローチャートを用いて説明する。
【0107】
まず、図6、図9(A)、図9(B)で説明したように、メモリピッチがNバイト、幅がWピクセル、高さがHピクセルである第1、第2の描画バッファDB1、DB2を確保する(ステップS1)。また、幅がWピクセル、高さがH/2ピクセルである第1、第2の領域AR1、AR2を有し、メモリピッチが2Nバイト、高さがH/2ピクセルであるバッファTBを確保する(ステップS2)。
【0108】
次に、右目用の仮想カメラVCRから見える右目用画像IRを第1の描画バッファDB1に描画する(ステップS3)。そして図7(A)〜図8(B)で説明したように、第1の描画バッファDB1に描画された画像(W×Hピクセル)をテクスチャとして、第1の領域AR1(W×H/2ピクセル)にポリゴンを描画することで、DB1の画像を高さ方向に圧縮してAR1にコピーする。この際に、第1の領域AR1に書き込むポリゴンには、第1の描画バッファDB1の画像の全域をマッピングする(ステップS4)。
【0109】
次に、左目用の仮想カメラVCLから見える左目用画像ILを第1の描画バッファDB1に描画する(ステップS5)。そして、第1の描画バッファDB1に描画された画像(W×Hピクセル)をテクスチャとして、第2の領域AR2(W×H/Zピクセル)にポリゴンを描画することで、DB1の画像を高さ方向に圧縮してAR2にコピーする。この際に、第2の領域AR2に書き込むポリゴンには、第1の描画バッファDB1の画像を下方向に1テクセルずらしてマッピングする(ステップS6)。
【0110】
次に、バッファTBの全領域をメモリピッチがNバイト、幅がWピクセル、高さがHピクセルのテクスチャとして、DB1の全域(W×Hピクセル)にポリゴンを描画することで、バッファTBの画像を第1の描画バッファDB1にコピーする(ステップS7)。次の、VSYNCのタイミング(フレームの切り替えタイミング)で、図9(A)、図9(B)で説明したように、第1の描画バッファDB1をバックバッファからフロントバッファに切り替える(ステップS8)。
【0111】
次に、右目用の仮想カメラVCRから見える右目用画像IRを第2の描画バッファDB2に描画する(ステップS9)。そして、第2の描画バッファDB2に描画された画像(W×Hピクセル)をテクスチャとして、第1の領域AR1(W×H/2ピクセル)にポリゴンを描画することで、DB2の画像を高さ方向に圧縮してAR1にコピーする。この際に、第1の領域AR1に書き込むポリゴンには、第2の描画バッファDB2の画像の全域をマッピングする(ステップS10)。
【0112】
次に、左目用の仮想カメラVCLから見える左目用画像ILを第2の描画バッファDB2に描画する(ステップS11)。そして、第2の描画バッファDB2に描画された画像(W×Hピクセル)をテクスチャとして、第2の領域AR2(W×H/2ピクセル)にポリゴンを描画することで、DB2の画像を高さ方向に圧縮してAR2にコピーする。この際に、第2の領域AR2に書き込むポリゴンには、第2の描画バッファDB2の画像を下方向に1テクセルずらしてマッピングする(ステップS12)。
【0113】
次に、バッファTBの全領域をメモリピッチがNバイト、幅がWピクセル、高さがHピクセルのテクスチャとして、第2の描画バッファDB2の全域(W×Hピクセル)にポリゴンを描画することで、バッファTBの画像を第2の描画バッファDB2にコピーする(ステップS13)。
【0114】
次のVSYNCのタイミングで、第2の描画バッファDB2をバックバッファからフロントバッファに切り替える(ステップS14)。
【0115】
3.ハードウェア構成
図17(A)に本実施形態を実現できるハードウェアの構成例を示す。
【0116】
CPU900(メインプロセッサ)は、複数のCPUコア1、CPUコア2、CPUコア3を含むマルチコアプロセッサである。またCPU900は図示しないキャッシュメモリを含む。CPUコア1、2、3の各々にはベクタ演算器等が設けられている。そしてCPUコア1、2、3の各々は、例えば2つのH/Wスレッド処理をコンテクストスイッチをすることなしに並列実行でき、マルチスレッド機能がハードウェアでサポートされている。そして3つのCPUコア1、2、3の合計で、6つのH/Wスレッド処理を並列実行できる。
【0117】
GPU910(描画プロセッサ)は、頂点処理やピクセル処理を行って、描画(レンダリング)処理を実現する。具体的には、シェーダプログラムに従って、頂点データの作成・変更やピクセル(フラグメント)の描画色の決定を行う。1フレーム分の画像がVRAM920(フレームバッファ)に書き込まれると、その画像はビデオ出力を介してTVなどのディスプレイに表示される。なおメインメモリ930はCPU900やGPU910のワークメモリとして機能する。またGPU910では、複数の頂点スレッド、複数のピクセルスレッドが並列実行され、描画処理のマルチスレッド機能がハードウェアでサポートされている。またGPU910にはハードウェアのテッセレータも備えられている。またGPU910は、頂点シェーダとピクセルシェーダとがハードウェア的に区別されていないユニファイド・シェーダ・タイプとなっている。
【0118】
ブリッジ回路940(サウスブリッジ)は、システム内部の情報流通を制御する回路であり、USBコントローラ(シリアルインターフェース)、ネットワークの通信コントローラ、IDEコントローラ、或いはDMAコントローラなどのコントローラを内蔵する。そしてこのブリッジ回路940により、ゲームコントローラ942、メモリーカード944、HDD946、DVDドライブ948との間のインターフェース機能が実現される。
【0119】
なお本実施形態を実現できるハードウェア構成は図17(A)に限定されず、例えば図17(B)のような構成であってもよい。
【0120】
図17(B)ではCPU902が、プロセッサエレメントPPと8つのプロセッサエレメントPE1〜PE8を含む。プロセッサエレメントPPは汎用的なプロセッサコアであり、プロセッサエレメントPE1〜PE8は比較的シンプルな構成のプロセッサコアである。そしてプロセッサエレメントPPとプロセッサエレメントPE1〜PE8のアーキテクチャは異なっており、プロセッサエレメントPE1〜PE8は、複数のデータに対して1命令で同じ処理を同時にできるSIMD型のプロセッサコアとなっている。これによりストリーミング処理などのマルチメディア処理を効率的に実行できる。プロセッサエレメントPPは、2つのH/Wスレッド処理を並列実行でき、プロセッサエレメントPE1〜PE8の各々は、1つのH/Wスレッド処理を実行できる。従って、CPU902では、合計で10個のH/Wスレッド処理の並列実行が可能になる。
【0121】
図17(B)では、GPU912とCPU902の連携が密になっており、GPU912は、CPU902側のメインメモリ930に直接にレンダリング処理を行うことができる。また例えばCPU902がジオメトリ処理を行って、頂点データを転送したり、GPU912からCPU902にデータを戻すことも容易にできる。またCPU902が、レンダリングのプリプロセッシング処理やポストプロセッシング処理を行うことも容易であり、テッセレーション(平面分割)やドットフィルをCPU902が実行できる。例えば抽象度の高い処理はCPU902が行い、抽象度が低い細かな処理はGPU912が行うというような役割分担が可能である。
【0122】
なお本実施形態の各部の処理をハードウェアとプログラムにより実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアであるプロセッサ(CPU、GPU)に処理を指示すると共に、必要であればデータを渡す。そして、プロセッサは、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0123】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(第1の視点画像、第2の視点画像、第1の視点、第2の視点等)と共に記載された用語(右目用画像、左目用画像、右目、左目等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。
【0124】
また、第1、第2の視点画像の描画処理、コピー処理、書き戻し処理、テクスチャマッピング処理や、描画バッファ、バッファの確保手法等も、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【0125】
【図1】本実施形態の画像生成システムのブロック図の例。
【図2】本実施形態が採用する立体視方式の一例を説明する図。
【図3】本実施形態が採用する立体視方式の一例を説明する図。
【図4】図4(A)、図4(B)は本実施形態により生成された右目用画像、左目用画像の例。
【図5】本実施形態により生成された多眼立体視画像の例。
【図6】本実施形態の多眼立体視画像生成手法の説明図。
【図7】図7(A)、図7(B)は右目用画像、左目用画像のコピー処理の説明図。
【図8】図8(A)、図8(B)はテクスチャマッピングを利用したコピー処理の説明図。
【図9】図9(A)、図9(B)はダブルバッファ方式を採用した場合の本実施形態の手法の説明図。
【図10】本実施形態の平均化処理手法の説明図。
【図11】本実施形態の平均化処理手法の説明図。
【図12】本実施形態の平均化手法を採用した場合に生成される画像の例。
【図13】本実施形態の平均化手法を採用しなかった場合に生成される画像の例。
【図14】仮想カメラの注視点をシフトする手法の説明図。
【図15】本実施形態の詳細な処理を説明するフローチャート。
【図16】本実施形態の詳細な処理を説明するフローチャート。
【図17】図17(A)、図17(B)はハードウェア構成例。
【符号の説明】
【0126】
DB 描画バッファ、DB1、DB2 第1、第2の描画バッファ、
TB バッファ、AR1、AR2 第1、第2の領域、MS モデルデータ記憶部、
TS テクスチャ記憶部、MTS モーションデータ記憶部、
100 処理部、102 ゲーム演算部、104 オブジェクト空間設定部、
105 カリング処理部、106 移動体演算部、108 仮想カメラ制御部、
120 描画部、122 ライティング処理部、124 テクスチャマッピング部、
130 音生成部、160 操作部、170 記憶部、180 情報記憶媒体、
190 表示部、192 音出力部、194 補助記憶装置、196 通信部

【特許請求の範囲】
【請求項1】
第1の領域と第2の領域を有するバッファと、
多眼立体視画像を生成するための描画処理を行う描画部として、
コンピュータを機能させ、
前記描画部は、
多眼立体視の第1の視点画像を高さ方向において1/2に圧縮して、前記バッファの前記第1の領域に書き込むと共に、多眼立体視の第2の視点画像を高さ方向において1/2に圧縮して、前記バッファの前記第2の領域に書き込み、
前記バッファから画像を読み出すことで、前記第1の領域に書き込まれた前記第1の視点画像のピクセル画像と前記第2の領域に書き込まれた前記第2の視点画像のピクセル画像とが、ライン毎に交互に表示される前記多眼立体視画像を生成することを特徴とするプログラム。
【請求項2】
請求項1において、
前記バッファは、
幅がWピクセルであり高さがH/2ピクセルである前記第1の領域と、幅がWピクセルであり高さがH/2ピクセルである前記第2の領域を有し、
前記描画部は、
前記バッファのメモリピッチを2Nバイトに設定し、幅がWピクセルであり高さがHピクセルである前記第1の視点画像を高さ方向において圧縮して、前記第1の領域に書き込むと共に、幅がWピクセルであり高さがHピクセルである前記第2の視点画像を高さ方向において圧縮して、前記第2の領域に書き込み、
前記バッファのメモリピッチをNバイトに設定し、前記バッファから画像を読み出すことで、前記第1の視点画像のピクセル画像と前記第2の視点画像のピクセル画像がライン毎に交互に表示される前記多眼立体視画像を生成することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記第1、第2の視点画像を描画するための描画バッファを含み、
前記描画部は、
前記第1の視点画像を前記描画バッファに描画し、前記描画バッファに描画された前記第1の視点画像を高さ方向において圧縮して前記バッファの前記第1の領域にコピーし、前記第2の視点画像を前記描画バッファに描画し、前記描画バッファに描画された前記第2の視点画像を高さ方向において圧縮して前記バッファの前記第2の領域にコピーすることを特徴とするプログラム。
【請求項4】
請求項3において、
前記描画部は、
前記描画バッファに描画された前記第1の視点画像を、前記第1の領域のサイズのポリゴンにテクスチャマッピングして前記第1の領域に描画することで、前記描画バッファから前記第1の領域への前記第1の視点画像のコピーを行い、前記描画バッファに描画された前記第2の視点画像を、前記第2の領域のサイズのポリゴンにテクスチャマッピングして前記第2の領域に描画することで、前記描画バッファから前記第2の領域への前記第2の視点画像のコピーを行うことを特徴とするプログラム。
【請求項5】
請求項4において、
前記描画部は、
前記第2の視点画像を前記第2の領域のサイズのポリゴンにテクスチャマッピングする際に、高さ方向のテクスチャ座標を1テクセル分だけシフトさせることを特徴とするプログラム。
【請求項6】
請求項3乃至5のいずれかにおいて、
前記描画部は、
前記第1、第2の視点画像が前記第1、第2の領域にコピーされた後に、前記バッファの画像を前記描画バッファに書き戻すことを特徴とするプログラム。
【請求項7】
請求項6において、
前記描画部は、
前記バッファの画像を、前記描画バッファのサイズのポリゴンにテクスチャマッピングして前記描画バッファに描画することで、前記バッファの画像を前記描画バッファに書き戻すことを特徴とするプログラム。
【請求項8】
請求項6又は7において、
前記描画バッファとして、第1、第2の描画バッファが用意され、
前記描画部は、
前記第1、第2の描画バッファの一方の描画バッファから前記バッファへの画像のコピー処理及び前記バッファから前記一方の描画バッファへの画像の書き戻し処理を行った後に、前記一方の描画バッファをバックバッファからフロントバッファに切り替え、前記一方とは異なる他方の描画バッファをフロントバッファからバックバッファに切り替えることを特徴とするプログラム。
【請求項9】
請求項1乃至8のいずれかにおいて、
前記描画部は、
前記第1、第2の視点画像を高さ方向において圧縮して前記第1、第2の領域に書き込む際に、前記第1、第2の視点画像の第iのラインのピクセル画像と次の第i+1のラインのピクセル画像の平均化処理を行うことを特徴とするプログラム。
【請求項10】
請求項9において、
前記描画部は、
前記第1、第2の視点画像を、前記第1、第2の領域のサイズのポリゴンにテクセル補間方式でテクスチャマッピングして前記第1、第2の領域に描画することで、前記第iのラインのピクセル画像と前記第i+1のラインのピクセル画像の前記平均化処理を行うことを特徴とするプログラム。
【請求項11】
請求項9又は10において、
前記描画部は、
前記多眼立体視画像の第mのラインについては、前記第1の視点画像の第jのラインのピクセル画像と次の第j+1のラインのピクセル画像の平均化が行われ、前記多眼立体視画像の第m+1のラインについては、前記第2の視点画像の第j+1のラインのピクセル画像と次の第j+2のラインのピクセル画像の平均化が行われるように、前記平均化処理を行うことを特徴とするプログラム。
【請求項12】
請求項1乃至11のいずれかにおいて、
前記描画部は、
多眼立体視の第1の視点用の仮想カメラの注視点と、多眼立体視の第2の視点用の仮想カメラの注視点を、高さ方向においてずらして、前記第1の視点画像と前記第2の視点画像を生成することを特徴とするプログラム。
【請求項13】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至12のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項14】
多眼立体視のための画像生成システムであって、
第1の領域と第2の領域を有するバッファと、
多眼立体視画像を生成するための描画処理を行う描画部と、
を含み、
前記描画部は、
多眼立体視の第1の視点画像を高さ方向において1/2に圧縮して、前記バッファの前記第1の領域に書き込むと共に、多眼立体視の第2の視点画像を高さ方向において1/2に圧縮して、前記バッファの前記第2の領域に書き込み、
前記バッファから画像を読み出すことで、前記第1の領域に書き込まれた前記第1の視点画像のピクセル画像と前記第2の領域に書き込まれた前記第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

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2009−64355(P2009−64355A)
【公開日】平成21年3月26日(2009.3.26)
【国際特許分類】
【出願番号】特願2007−233314(P2007−233314)
【出願日】平成19年9月7日(2007.9.7)
【出願人】(507301626)株式会社セリウス (12)
【Fターム(参考)】