以下、本実施形態について図面を用いて説明する。
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.構成
図1に、本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の一例を示す。なお、本実施形態の画像生成システムは、図1の各部(機能ブロック)を全て含む必要はなく、その一部(例えば操作部160、携帯型情報記憶装置194又は通信部196等)を省略した構成としてもよい。
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、シフトレバー、アクセルペダル、ブレーキペダル、マイク、センサー、或いは筺体などのハードウェアにより実現できる。
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAMなどのハードウェアにより実現できる。
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などのハードウェアにより実現できる。処理部100は、この情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部をコンピュータに実現させるためのプログラム)が記憶(記録、格納)される。
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、或いはHMD(ヘッドマウントディスプレイ)などのハードウェアにより実現できる。
音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどのハードウェアにより実現できる。
携帯型情報記憶装置194は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリカードや携帯型ゲーム装置などを考えることができる。
通信部196は、外部(例えばホスト装置や他の画像生成システム)との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバー)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(記憶部170)に配信するようにしてもよい。このようなホスト装置(サーバー)の情報記憶媒体の使用も本発明の範囲内に含まれる。
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの各種の処理を行う。この場合、処理部100は、記憶部170内の主記憶部172をワーク領域として使用して、各種の処理を行う。この処理部100の機能は、各種プロセッサ(CPU、DSP等)又はASIC(ゲートアレイ等)などのハードウェアや、プログラム(ゲームプログラム)により実現できる。
処理部100は、移動・動作処理部110、オブジェクト空間設定部112、仮想カメラ(視点)制御部118、画像生成部120、音生成部130を含む。なお、処理部100は、これらの各部(機能ブロック)を全て含む必要はなく、その一部を省略してもよい。
移動・動作処理部110は、オブジェクト(移動オブジェクト)の移動情報(位置、回転角度)や動作情報(オブジェクトの各パーツの位置、回転角度)を求める処理を行う。即ち、操作部160によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、オブジェクトを移動させたり動作(モーション、アニメーション)させたりする処理を行う。
オブジェクト空間設定部112は、移動体(キャラクタ、車、戦車、ロボット)、柱、壁、建物、マップ(地形)などの各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間内に配置設定するための処理を行う。より具体的には、ワールド座標系でのオブジェクトの位置や回転角度(方向)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転)でオブジェクトを配置する。
オブジェクト空間設定部112は仮想点設定部114を含む。この仮想点設定部114は、仮想カメラの視点位置とは別に用意される仮想点(プログラムにおいて、視点位置とは別のパラメータでその位置が表される仮想的な点)をオブジェクト空間に設定する。
そして、オブジェクト空間設定部112は、設定された仮想点と各オブジェクト(例えば板形状のオブジェクト又は基準線から放射状に延びる複数のプリミティブ面を有するオブジェクト)との位置関係により決められる方向(例えばオブジェクトの任意の点と仮想点とを結ぶ線分の方向)と、各オブジェクトの向き(例えばオブジェクトのプリミティブ面又は主面の法線ベクトルの方向)とが、所定の方向関係(例えば平行)になるように、オブジェクト空間内にオブジェクトを配置設定する。
オブジェクト空間設定部112は仮想方向設定部116を含む。この仮想方向設定部116は、オブジェクト(オブジェクト群)の向き(例えばオブジェクトのプリミティブ面又は主面の法線ベクトルの方向)を設定するための方向であり仮想カメラの視線方向とは別に用意される仮想方向(プログラムにおいて、視線方向とは別のパラメータでその方向が表される仮想的な方向)を、オブジェクト空間に設定する。
そして、オブジェクト空間設定部112は、設定された仮想方向とオブジェクト(例えば板形状のオブジェクト又は基準線から放射状に延びる複数のプリミティブ面を有するオブジェクト)の向きとが、所定の方向関係(例えば平行)になるように、オブジェクト空間内にオブジェクト(オブジェクト群)を配置設定する。
仮想カメラ制御部118は、オブジェクト空間内の所与(任意)の視点での画像を生成するための仮想カメラを制御する処理を行う。即ち、仮想カメラの位置(X、Y、Z)又は回転(X、Y、Z軸回りでの回転)を制御する処理(視点位置や視線方向を制御する処理)等を行う。
例えば、仮想カメラにより移動オブジェクトを後方から撮影する場合には、移動オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転(仮想カメラの方向)を制御する。この場合には、移動・動作演算部110で得られた移動オブジェクトの位置、方向又は速度などの情報に基づいて、仮想カメラを制御することになる。或いは、仮想カメラを、予め決められた移動経路で移動させながら予め決められた角度で回転させるようにしてもよい。この場合には、仮想カメラの位置(移動経路)や回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御することになる。
画像生成部120は、処理部100で行われる種々の処理の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。即ち、いわゆる3次元のゲーム画像を生成する場合には、まず、座標変換、クリッピング処理、透視変換或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)が、描画バッファ174(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画される。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成されるようになる。
画像生成部120はα合成部122を含む。このα合成部122は、α値(A値)に基づくα合成処理(αブレンディング、α加算又はα減算等)を行う。例えばα合成がαブレンディングである場合には下式のような合成処理が行われる。
RQ=(1−α)×R1+α×R2 (1)
GQ=(1−α)×G1+α×G2 (2)
BQ=(1−α)×B1+α×B2 (3)
ここで、R1、G1、B1は、描画バッファ174に既に描画されている画像(背景画像)の色(輝度)のR、G、B成分であり、R2、G2、B2は、描画バッファ174に描画するオブジェクト(プリミティブ)の色のR、G、B成分である。また、RQ、GQ、BQは、αブレンディングにより得られる画像の色のR、G、B成分である。
なお、α値(A値)は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
画像生成部120はデプスキューイング部124を含む。このデプスキューイング部124は、オブジェクトのデプスキューイング処理を行う。
ここでデプスキューイング処理は、オブジェクトの色(輝度)を距離を関数として補間して、背景の色(広義にはターゲット色)に徐々に近づける処理である。例えば背景色が青であった場合には、距離(例えば仮想カメラ又は仮想点からの距離)が遠いオブジェクトほど、その色が青に近づくようになる。従って、オブジェクトの元の色が何色であっても、遠景においてはオブジェクトの色が背景色に近づき、オブジェクトが背景に溶け込んだかのように見える画像を生成できる。なお、デプスキューイング処理は、デプスキューイング効果の強さを決めるパラメータであるデプスキューイング値を用いて制御される。
画像生成部120はテクスチャマッピング部126を含む。このテクスチャマッピング部126は、テクスチャ記憶部176に記憶されるテクスチャをオブジェクトにマッピングする処理を行う。具体的には、オブジェクト(プリミティブ面)の頂点に設定(付与)されるテクスチャ座標等を用いて、テクスチャ記憶部176からテクスチャ(色、輝度、法線、α値などの表面プロパティ)を読み出す。そして、2次元の画像又はパターンであるテクスチャをオブジェクトにマッピング(project)する。この場合に、画素とテクセルとを対応づける処理やバイリニア補間(テクセル補間)などを行う。また、インデックスカラー・テクスチャマッピング用のLUT(ルックアップテーブル)を用いたテクスチャマッピングを行うようにしてもよい。
画像生成部120は画像処理変更部128を含む。この画像処理変更部128は、オブジェクトと仮想点との距離(奥行き距離、直線距離等)に応じて、オブジェクトに施される画像処理の内容を変更する。
より具体的には、オブジェクトと仮想点との距離に基づいて、α合成処理、デプスキューイング処理、テクスチャマッピング処理が行われるようにする。例えば、オブジェクトと仮想点との距離に基づいて、オブジェクトに使用されるα値(半透明度、透明度)を変更する。或いは、オブジェクトと仮想点の距離に基づいて、デプスキューイング処理が行われるようにする。或いは、オブジェクトと仮想点の距離に基づいて、オブジェクトにマッピングされるテクスチャ(テクスチャ座標)を変更する。
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて生成してもよい。
2.本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
2.1 仮想点の設定
さて、いわゆるビルボード処理では、図2(A)に示すように、仮想カメラVCの視点位置VWPとオブジェクトOB1、OB2、OB3を結ぶ方向を求める。そして、求められた方向とOB1、OB2、OB3の向きN1、N2、N3とが平行になるように、OB1、OB2、OB3を配置する。これにより、オブジェクトOB1〜OB3が仮想カメラVCの視点位置VWPの方に正対するように配置される。
しかしながら、これまでのビルボード処理では、オブジェクトOB1〜OB3の向きを決定するのに、仮想カメラの視点位置だけが用いられていた。このため、生成される画像が画一的になってしまったり、オブジェクト配置の設計の自由度が制限されてしまうなどの課題があることが判明した。
そこで本実施形態では図2(B)に示すように、仮想カメラVCの視点位置VWPとは別に仮想点VLPを用意する。即ち、視点位置VWPのパラメータとは別のパラメータ(変数)でその位置が表される仮想点VLPを用意する。
そして、この仮想点VLPとオブジェクトOB1〜OB3との位置関係により決められる方向と、OB1〜OB3の向きN1〜N3とが所定(所与)の方向関係になるように、OB1〜OB3を配置する。
このようにすることで、図2(A)では、仮想カメラVCの視点位置VWPの方にしかオブジェクトOB1〜OB3を正対させることができなかったのに対して、図2(B)では、仮想点VLPの方にオブジェクトOB1〜OB3を正対させることが可能になる。これにより、視点位置VWPとは独立に任意の位置に設定可能な仮想点VLPの方に、オブジェクトOB1〜OB3を向かせることが可能になる。従って、視点設定の変更イベントの発生、仮想カメラVCが追従するオブジェクトとVCとの位置関係、或いはゲーム状況の変化などに応じて、種々の位置に仮想点VLPを設定することで、多種多様な画像を生成できるようになる。また、仮想点VLPを任意の位置に設定することで、オブジェクト配置の設計の自由度を増すことが可能になり、ゲーム設計の容易化を図れる。
なお、VLPとOB1〜OB3との位置関係(位置座標)により決められる方向は、例えば、VLPとOB1〜OB3の任意の点(代表点又は頂点等)とを結ぶ方向である。或いは、VLPの第1、第2の座標成分(X、Z座標)で特定される点(XZ平面上の点)と、OB1〜OB3の第1、第2の座標成分で特定される点とを結ぶ方向などであってもよい。
また、オブジェクトOB1〜OB3の向きN1〜N3(表示方向の向き。表の面の向き)は、オブジェクトOB1〜OB3を構成するプリミティブ面(主面)の法線ベクトルの方向である。或いは、オブジェクトOB1〜OB3の向きを代表的に表す方向として仮想的に設定された方向であってもよい。
また、VLPとOB1〜OB3との位置関係により決められる方向とOB1〜OB3の向きN1〜N3とが所定の方向関係になるとは、例えば、その方向とN1〜N3とのなす角度が所定の角度になることである。より具体的には図2(B)に示すように、その方向とN1〜N3とのなす角度を例えば零度(ほぼ零度の場合を含む)に設定して、その方向とN1〜N3が平行(ほぼ平行の場合を含む)になるようにする。
図3(A)〜(F)に、仮想点VLP(或いは仮想方向)に基づいてその向きが設定されるオブジェクトOB(図2(B)のOB1〜OB3)の例を示す。
図3(A)のOBは板形状のオブジェクト(1又は複数のプリミティブ面を平面的に配置することで構成されるオブジェクト)であり、木の画像(立体的に見えるようにCGにより作成された画像)がOBに描かれている。より具体的には木の画像のテクスチャ(木が描かれている部分以外は透明のテクスチャ)がOBにマッピングされている。
図3(A)の板形状のオブジェクトOBを多数配置することで森林を表現できる。そして、仮想点VLPの方にその向きが向くように複数のオブジェクトOBを配置すれば、より少ない個数のオブジェクトOBで、より広い面積を占める森林を表現できる。
図3(B)、(C)のOBも板形状のオブジェクトであり、観客の画像、爆発の画像がOBに描かれている。より具体的には観客の画像、爆発の画像のテクスチャがOBにマッピングされている。図3(B)、(C)の板形状のオブジェクトOBを多数配置することで、大きな観客席や大きな爆発を表現できる。
なお、図3(A)、(B)、(C)のオブジェクトOBでは、画像が描かれている表示面側(表の面)の法線ベクトルの方向を、OBの向き(図2(B)のN1〜N3)に設定できる。
図3(D)、(E)、(F)のOBは、基準線RL(中心線)から放射状に延びる複数のプリミティブ面(ポリゴン)PR1〜PR4、PR1〜PR3、PR1〜PR5を有するオブジェクトである。図3(D)、(E)、(F)に示すようなオブジェクトOBを用いれば、いわゆる書き割り形状(十字形状等)であるのにもかかわらず、あたかもボリュームを持つ立体形状であるかのように表示物を見せることができる。
なお、図3(D)、(E)、(F)のオブジェクトOBでは、OBを構成するプリミティブ面のうちの1つのプリミティブ面(PR1〜PR5のいずれか)の法線ベクトルの方向を、OBの向き(図2(B)のN1〜N3)に設定できる。或いは、オブジェクトOBに仮想的に設定された代表方向を、OBの向きに設定してもよい。この場合の代表方向としては、例えば、プリミティブ面(PR1〜PR5のいずれか)に沿った方向や、第1のプリミティブ面(例えばPR1)に沿った方向と第2のプリミティブ面(例えばPR2)に沿った方向の中間方向などを採用できる。
また、図3(D)、(E)、(F)のオブジェクトOBにおいて、プリミティブ面PR1〜PR5に交差(直交)するプリミティブ面を更に付加してもよい。
また、図3(A)〜(F)のオブジェクトOBに、ムービー・テクスチャをマッピングするようにしてもよい。
2.2 注視点、移動***置への仮想点の設定
仮想点VLPを設定位置としては種々の位置を考えることができる。
例えば図4では、オブジェクトOB1、OB2がゲームにおいて注視する点の位置に、VLPが設定されている。
より具体的には、オブジェクトOB1、OB2には、図3(B)に示すような観客の画像がマッピングされている。そして、ゲームにおける観客の注視点は、オブジェクトEOB1、EOB2(他のプレーヤ又はコンピュータが操作するオブジェクト)のクラッシュ地点になっている。この場合には、OB1、OB2の注視点であるクラッシュ地点に、仮想点VLPを設定する。なお、MOBは仮想カメラVCが追従するオブジェクト(プレーヤが操作するオブジェクト)である。
図4のようにすれば、観客表現用のオブジェクトOB1、OB2の向きN1、N2が、仮想点VLPが設定される注視点(クラッシュ地点)の方に向くようになる。従って、観客がクラッシュ地点を注視している様子が、仮想カメラVCから見えるようになり、より多様でリアルな画像を表現できる。例えば図2(A)のように視点位置VWPだけに基づいてオブジェクトの向きを設定する手法では、図4に示すような画像表現を実現できない。
なお、仮想点VLPが設定される注視点は、固定的な位置であってもよいし、ゲーム状況、ゲーム進行、時間経過又移動オブジェクトの速度等に応じてその位置を動的に変化させてもよい。
また、仮想点VLPが設定される注視点としては、ゲームにおけるイベントの発生位置(クラッシュ位置、キャラクタ同士の戦闘位置)、球技ゲームにおけるボールの位置など、種々のものを考えることができる。
図5(A)では、仮想カメラVCが追従する移動オブジェクトMOB(プレーヤが操作するオブジェクト)の位置(代表点)に、仮想点VLPが設定されている。
図5(A)のようにすれば、オブジェクトOB1〜OB3の向きN1、N2、N3が、仮想点VLPが設定された移動オブジェクトMOBの方に向くようになる。従って、仮想カメラVCの視点位置VWPの変化に依らず、オブジェクトOB1〜OB3の向きN1〜N3が、移動オブジェクトMOBを注視する方向に向くようになる。
また図5(B)、(C)では、仮想カメラVCが追従する移動オブジェクトMOBの速度により決められる位置に、仮想点VLPが設定されている。
例えば図5(B)では、移動オブジェクトMOBの速度が速いため、オブジェクトOB1〜OB3から、より近い位置に仮想点VLPが設定される。一方、図5(C)では、移動オブジェクトMOBの速度が遅いため、オブジェクトOB1〜OB3から、より遠い位置に仮想点VLPが設定される。
このようにすれば、移動オブジェクトMOBの速度が速いほど、図5(B)のオブジェクトOB1、OB3の向きN1、N3が、MOBの移動方向(仮想カメラVCの視線方向VWD)に対してより直交する方向に向くようになる。この結果、スピード感溢れる画像が仮想カメラVCから見えるようになり、画像のリアル度を増すことができる。
なお、移動オブジェクトMOBの速度に応じて仮想点VLPの位置を変化させる場合には、仮想カメラVCの視線方向VWDの線分上で、MOBの速度に応じて仮想点VLPの位置を変化させてもよい。或いは、移動オブジェクトMOBが走行するコースに沿った方向(コースデータが有するコース方向データにより特定される方向)の線分上で、MOBの速度に応じて仮想点VLPの位置を変化させてもよい。
2.3 オブジェクト群毎の仮想点の設定
本実施形態では、オブジェクト群毎に異なる仮想点を設定できる。
例えば図6では、オブジェクトOB1〜OB3(第1のオブジェクト群)は、仮想点VLP1(第1の仮想点)に基づいて、その向きN1〜N3が設定される。即ち、仮想点VLP1とOB1〜OB3との位置関係により決められる方向とOB1〜OB3の向きN1〜N3とが、所定(所与)の方向関係になるように、OB1〜OB3が配置される。なお、仮想点VLP1の代わりに、仮想カメラVCの視点位置VWPに基づいて、OB1〜OB3の向きN1〜N3を設定してもよい。
一方、オブジェクトOB4〜OB6(第2のオブジェクト群)は、仮想点VLP2(第2の仮想点)に基づいて、その向きN4〜N6が設定される。即ち、仮想点VLP2とOB4〜OB6との位置関係により決められる方向とOB4〜OB6の向きN4〜N6とが、所定の方向関係になるように、OB4〜OB6が配置される。
このように、オブジェクト群毎に異なる仮想点を設定することで、更に多様な画像を生成できる。
例えば、オブジェクトOB1〜OB3として図3(B)に示すような観客表現用オブジェクトを採用し、これらのOB1〜OB3については、OB1〜OB3から近い位置に設定される仮想点VLP1(或いは視点位置VWP)に基づいて、その向きN1〜N3を設定する。
一方、オブジェクトOB4〜OB7として図3(A)に示すような木表現用のオブジェクトを採用し、これらのOB4〜OB7については、OB4〜OB7から遠い位置に設定される仮想点VLP2に基づいて、その向きN4〜N6を設定する。
このようにすれば、観客表現用のオブジェクトOB1、OB3の向きN1、N3を、仮想カメラVCの視線方向VWDに対してより直交する方向に向けることが可能になる。これにより、観客がVLP1の方を注視している様子を表現できる。
一方、木表現用のオブジェクトOB4、OB6の向きN4、N6については、仮想カメラVCの視線方向VWDに対してより平行な方向に向けることが可能になる。これにより、より少ない個数のオブジェクトで、より広い面積を占める森林を表現できるようになる。
なお、仮想点VLP1、VLP2は、仮想カメラVCの視線方向VWDの線分上(視点位置VWPを通る線分上)において異なった位置に設定できる。或いは、移動オブジェクトが走行するコースに沿った方向(コースデータが有するコース方向データにより特定される方向)の線分上で、異なった位置に設定してもよい。
また、仮想カメラVCの視点設定の変更イベント(広義には、ゲーム中のイベント)が発生したことを条件に、オブジェクト群毎に異なる仮想点を設定するようにしてもよい。
例えば図7(A)に示すように、視点設定変更イベントの発生前においては、爆発表現用の第1のオブジェクト群のオブジェクトOB1、木表現用の第2のオブジェクト群のオブジェクトOB2は、共に、仮想カメラVCの視点位置VWP(或いは視線方向VWD)に基づいて、その向きN1、N2が設定されている。
一方、図7(B)に示すように、仮想カメラVCの視点位置VWPや視線方向VWDが急激に変化する視点設定変更イベントが発生した場合には、仮想点VLP1、VLP2を新たに設定する(VLP1、VLP2のパラメータを用意する)。そして、爆発表現用の第1のオブジェクト群のオブジェクトOB1については、仮想点VLP1又は視点位置VWPに基づいて、その向きN1を設定する。一方、木表現用の第2のオブジェクト群のオブジェクトOB2については、仮想点VLP2に基づいて、その向きN2を設定する。即ち、オブジェクト毎の仮想点の設定を異ならせる。
このようにすることで、例えば、爆発表現用の第1のオブジェクト群のオブジェクトOB1の向きN1については、仮想点VLP1(視点位置VWP)の方に向き、木表現用の第2のオブジェクト群のオブジェクトOB2の向きN2については、仮想点VLP2の方に向くという、オブジェクトの配置制御が可能になる。
これにより、視点設定変更イベントの発生により、木表現用のオブジェクトOB2の向きN2が仮想カメラVCの方に向いてしまうというような不自然な画像が生成されるのを防止できる。一方、爆発表現用のオブジェクトOB1については、視点設定変更イベントの発生時に仮想カメラVCの方に向いても不自然な画像にならない。逆にOB1の向きN1を仮想カメラVCの方に向けることで、VCから見たときのスクリーン上での爆発表示の占有面積が増すという利点が得られる。
なお、視点設定変更イベントは、仮想カメラの視点位置や視線方向が急激に変化等することで、仮想カメラの制御プログラムのアルゴリズムの切り替えが必要になるイベント等である。例えば、コース上で走行する移動オブジェクトに仮想カメラが追従している時に、仮想カメラが急激に上空に移動するイベントや、移動オブジェクトがスリップしてその向きが急激に変化するイベントや、ロールプレイングゲームにおいてゲーム場面が切り替わるイベントなどを考えることができる。
2.4 仮想点から距離に応じた画像処理内容の変更
本実施形態によれば、オブジェクトと仮想点との距離に応じて、オブジェクトに施される画像処理の内容を変更できる。より具体的には、オブジェクトと仮想点との距離に基づいて、オブジェクトのα値(半透明度、透明度)の変更処理、デプスキューイング処理、テクスチャ(テクスチャ座標)の変更処理などを行う。
例えば図8(A)において、オブジェクトOB1、OB2、OB3にはフォグ(霧、雲又は煙等)の画像(テクスチャ)が描かれている。そして、仮想点VLPとオブジェクトOB1、OB2、OB3の間の距離(奥行き距離或いは直線距離等)はD1、D2、D3(D1<D2<D3)となっている。
この場合に本実施形態では、例えば仮想点VLPから遠いオブジェクトほど、より不透明になるようにα値を設定する。例えば図8(A)では、オブジェクトOB1、OB2、OB3の順で、徐々に不透明度が高くなっている。このようにすることで、手前側では半透明で、奥側に行くほど徐々に不透明になってゆくリアルなフォグ画像を表現できる。
また図8(B)において、オブジェクトOB1、OB2、OB3にはビル、看板、道路等の画像(テクスチャ)が描かれている。そして、仮想点VLPとオブジェクトOB1、OB2、OB3の間の距離はD1、D2、D3(D1<D2<D3)となっている。
この場合に本実施形態では、例えば仮想点VLPから遠いオブジェクトほど、よりデプスキューイング効果(背景色の補間率)が高くなるように設定する。例えば図8(B)では、オブジェクトOB1、OB2、OB3の順で、その色が、徐々に背景色(ターゲット色)に近づいて行く。このようにすることで、奥側のオブジェクトが背景に溶け込んで行く様子を表現できる。
また図8(C)において、仮想点VLPとオブジェクトOB1、OB2、OB3の間の距離はD1、D2、D3(D1<D2<D3)となっている。
この場合に本実施形態では、仮想点VLPとオブジェクトの間の距離に応じて、そのオブジェクトにマッピングされるテクスチャを変更する。これにより、距離に応じて、オブジェクトの絵柄や半透明度を変化させることが可能になる。
例えば本実施形態と異なる手法として、仮想カメラVCの視点位置VWPからの距離に応じて、オブジェクトに施す画像処理の内容を変化させる手法を考えることができる。
しかしながら、この手法では、α合成処理のα値やデプスキューイング処理の補間率を制御するパラメータとして、視点位置VWPからの距離だけしか用いることができない。このため、α値や補間率を求める関数(距離を引数とする関数)が複雑化するなどの問題が生じる。
これに対して、本実施形態のように仮想点VLPからの距離に基づいてα値や補間率を制御する手法によれば、仮想点VLPを適切な位置に設定することで、α値や補間率を求める関数の簡素化等を図れる。例えば、オブジェクトOB1〜OB3のうち、奥側に位置するOB2、OB3だけについて、そのα値や補間率を変化させたい場合には、OB2の手前の位置に仮想点VLPを設定する。そして、オブジェクトOB2、OB3と仮想点VLPとの距離を引数となる簡素な関数(例えば一次関数、2次関数等)を用いて、OB2、OB3のα値や補間率を求めるようにする。
なお、仮想点との距離に応じて変更する画像処理は、図8(A)、(B)、(C)に限定されず、種々の処理を考えることができる。また、2個以上の仮想点を用いて画像処理の内容を変更してもよい。また、オブジェクトの向き等を変更せずに、仮想点との距離に応じて画像処理の内容だけを変更するようにしてもよい。
2.5 仮想方向の設定
以上では、仮想点を用いてオブジェクトの向きを制御していたが、本実施形態では、仮想方向を用いてオブジェクトの向きを制御することもできる。
具体的には図9(A)に示すように、複数のオブジェクトOB1〜OB3の向きN1、N2、N3を一律に設定するための仮想方向VLDを用意する。この仮想方向VLDは、仮想カメラVCの視線方向VWDとは別に用意される。即ち、仮想方向VLDは、視線方向VWDのパラメータとは別のパラメータ(変数)でその方向が表される。なお、一時的に仮想方向VLDと視線方向VWDが同じ方向になってもかまわない。
そして本実施形態では図9(A)に示すように、仮想方向VLDとオブジェクトOB1〜OB3(図3(A)〜(F)のオブジェクト)の向きN1〜N3とが所定(所与)の方向関係になるように、OB1〜OB3を配置する。
このようにすれば、仮想カメラVCの視線方向VWDとは独立に任意の方向に設定可能な仮想方向VLDを用いて、オブジェクトOB1〜OB3の向きN1〜N3を制御できるようになる。従って、オブジェクトOB1〜OB3の向きN1〜N3を視線方向VWDでしか制御できない手法に比べて、オブジェクト配置の設計の自由度を増すことができる。また、仮想方向VLDを任意の方向に設定することで、多種多様な画像を生成できるようになる。
例えば本実施形態によれば、図9(B)に示すように仮想カメラVCの視線方向VWDが変化した場合にも、この変化に仮想方向VLDを追従させないようにすることができる。従って、視線方向VWDが変化した時にも、オブジェクトOB1〜OB3の向きN1〜N4は変化しないようになり、より自然な画像を生成できる。
また、図2(B)に示す仮想点VLPを用いる手法では、VLPとオブジェクトOB1〜OB3とを結ぶ線分を求める処理が必要になる。これに対して、仮想方向VLDを用いる手法によれば、このような処理が不要になり、処理負荷を軽減できる。
なお、仮想方向VLDとOB1〜OB3の向きN1〜N3とが所定の方向関係になるとは、例えば、VLDとN1〜N3とのなす角度が所定の角度になることである。より具体的には図9(A)、(B)に示すように、仮想方向VLDとN1〜N3とのなす角度を例えば零度(ほぼ零度の場合を含む)に設定して、仮想方向VLDとN1〜N3が平行(ほぼ平行の場合を含む)になるようにする。或いは、仮想方向VLDのベクトルの第1、第2の座標成分(X、Z座標)で決められる方向と、N1〜N3のベクトルの第1、第2の座標成分で決められる方向とのなす角度が、所定の角度になるように、オブジェクトOB1〜OB3を配置してもよい。
2.6 オブジェクト群毎の仮想点の設定
本実施形態では、オブジェクト群毎に異なる仮想方向を設定できる。
例えば図10において、オブジェクトOB1〜OB3(第1のオブジェクト群)については仮想方向VLD1(第1の仮想方向)に基づいて、その向きN1〜N3を設定し、オブジェクトOB4〜OB6(第2のオブジェクト群)については、仮想方向VLD2(第2の仮想方向)に基づいて、その向きN4〜N6を設定する またオブジェクトOB7〜OB9(第3のオブジェクト群)については、仮想方向VLD3(第3の仮想方向)に基づいて、その向きN7〜N9を設定する。なお、仮想方向VLD1の代わりに、仮想カメラVCの視線方向VWDに基づいて、OB1〜OB3の向きN1〜N3を設定してもよい。
このように、オブジェクト群毎に異なる仮想方向を設定することで、更に多様な画像を生成できるようになる。
例えば、オブジェクトOB1〜OB3として図3(A)に示すような木表現用のオブジェクトを採用し、これらのOB1〜OB3については、視線方向VWDと同じ又は近い方向に設定される仮想方向VLD1(或いはVWDそのもの)に基づいて、その向きN1〜N3を設定する。
一方、オブジェクトOB4〜OB6、OB7〜OB9として図3(B)に示すような観客表現用のオブジェクトを採用し、これらのOB4〜OB6、OB7〜OB9については、視線方向VWDとは異なる方向に設定される仮想方向VLD2、VLD3に基づいて、その向きN4〜N6、N7〜N9を設定する。
このようにすれば、木表現用のオブジェクトOB1〜OB3の向きN1〜N3を、視線方向VWDに対してより平行な方向に向けることが可能になる。これにより、少ない個数のオブジェクトで、より広い面積を占める森林を表現できる。
一方、観客表現用オブジェクトOB4〜OB6、OB7〜OB9の向きN4〜N6、N7〜N9については、視線方向VWDに対してより直交する方向に向けることが可能になる。これにより、観客が移動オブジェクトや仮想カメラの方を注視している様子を表現できる。
また、仮想カメラVCの視点設定の変更イベント(広義には、ゲーム中のイベント)が発生したことを条件に、オブジェクト群毎に異なる仮想方向を設定するようにしてもよい。
例えば図11(A)に示すように、視点設定変更イベントの発生前においては、爆発表現用の第1のオブジェクト群のオブジェクトOB1、木表現用の第2のオブジェクト群のオブジェクトOB2は、共に、仮想カメラVCの視線方向VWDに基づいて、その向きN1、N2が設定されている。
一方、図11(B)に示すように、仮想カメラVCの視点位置VWPや視線方向VWDが急激に変化する視点設定変更イベントが発生した場合には、仮想方向VLD1、VLD2を新たに設定する(VLD1、VLD2のパラメータを用意する)。そして、爆発表現用の第1のオブジェクト群のオブジェクトOB1については、仮想方向VLD1又は視線方向VWDに基づいて、その向きN1を設定する。一方、木表現用の第2のオブジェクト群のオブジェクトOB2については、仮想方向VLD2に基づいて、その向きN2を設定する。即ち、オブジェクト毎の仮想方向の設定を異ならせる。
このようにすることで、視点設定変更イベントの発生により、木表現用のオブジェクトOB2の向きN2が仮想カメラVCの方に向いてしまうというような不自然な画像が生成されるのを防止できる。一方、爆発表現用のオブジェクトOB1については、視点設定変更イベントの発生時に仮想カメラVCの方に向いても不自然な画像にならない。逆にOB1の向きN1を仮想カメラVCの方に向けることで、VCから見たときのスクリーン上での爆発表示の占有面積が増すという利点が得られる。
2.7 移動オブジェクトとの位置関係に基づく仮想方向の設定
本実施形態では、仮想カメラと移動オブジェクトとの位置関係に基づき、仮想方向を設定できる。
例えば図12(A)において、仮想カメラVCは移動オブジェクトMOBの移動に追従する。この時に、仮想カメラVCと移動オブジェクトMOBとの位置関係に基づいて、仮想方向VLDを設定する。
ここで、仮想カメラVCと移動オブジェクトMOBとの位置関係に基づいて仮想方向VLDを設定するとは、例えば、仮想カメラVC(視点位置VWP)と移動オブジェクトMOB(代表点MP)とを結ぶ線分の方向を、仮想方向VLPに設定することである。或いは、視点位置VWPの第1、第2の座標成分(X、Z座標)で特定される点と、移動オブジェクトMOBの代表点MPの第1、第2の座標成分で特定される点を結ぶ線分の方向を、仮想方向VLPに設定してもよい。
このようにすれば、例えば仮想カメラVCの視線方向VWDが変化した場合にも、仮想方向VLDは、移動オブジェクトMOBと仮想カメラVCを結ぶ線分の方向に常に向くようになる。この結果、視線方向VWDが変化した場合にも、オブジェクトOB1〜OB3の向きN1〜N3は、VLDに平行な方向に常に向くようになり、視線方向VWDの変化の影響を受けにくい自然な画像を生成できる。
2.8 視線方向の変化への不追従
本実施形態では、仮想方向を、視線方向の変化に追従させない或いは弱い追従度で追従させるようにしてもよい。
例えば図13(A)、(B)、(C)に示すように、仮想カメラVCの視線方向VWDが変化した場合にも、この変化に仮想方向VLDを追従させないようにする(或いは弱い追従度で追従させる)。このようにすれば、視線方向VWDが変化した場合にも、オブジェクトOB1〜OB3の向きN1〜N3は変化しないようになり、より自然な画像を生成できる。
例えば、移動オブジェクト(車)のスリップ等が原因となって仮想カメラVCの視線方向VWDが急激に変化した場合に、この変化に追従してオブジェクトOB1〜OB3の向きN1〜N3が変化してしまうと、プレーヤが不自然さを感じてしまう可能性がある。
図13(A)、(B)、(C)の手法によれば、オブジェクトOB1〜OB3の向きN1〜N3は、仮想方向VLD(VWDの初期方向)に基づき決められる。従って、移動オブジェクトのスリップ等により視線方向VWDが急激に変化した場合にも、N1〜N3の方向は変化しないようになり、自然な画像を生成できる。
なお、 仮想方向VLDを弱い追従度で視線方向VWDに追従させる場合には、VWDの方向の変化を所与の減衰関数で減衰させ、減衰により得られた方向に、仮想方向VLDを設定すればよい。
3.本実施形態の処理
次に、本実施形態の処理の詳細例について、図14、図15のフローチャートを用いて説明する。
図14は仮想点を用いる手法の処理を示すフローチャートである。
まず、視点位置とは別に仮想点を設定する(ステップS1)。即ち、プログラムにおいて仮想点のパラメータを宣言する。
次に、オブジェクトの代表点(任意の点)と仮想点とを結ぶ線分の方向を求める(ステップS2)。そして、求められた方向にオブジェクトの向き(法線ベクトル)を向けるための変換マトリクス(例えばローカル座標系からワールド座標系への変換マトリクス)を求める(ステップS3)。
次に、求められた変換マトリクス等に基づいて、オブジェクトのジオメトリ処理(座標系変換処理)を行う(ステップS4)。そして、全てのオブジェクトの処理が終了したか否かを判断し(ステップS5)、終了していない場合にはステップS2に戻る。
全てのオブジェクトの処理が終了した場合には、ジオメトリ処理後のオブジェクトのプリミティブ面データ(ポリゴンデータ、頂点リスト)を作成し、描画プロセッサに転送する(ステップS6)。これにより、オブジェクト空間において仮想カメラから見える画像が生成されるようになる。
図15は仮想方向を用いる手法の処理を示すフローチャートである。
まず、仮想カメラの視線方向とは別に仮想方向を設定する(ステップS11)。即ち、プログラムにおいて仮想方向のパラメータを宣言する。
次に、設定された仮想方向にオブジェクト群の向きを向けるための変換マトリクスを求める(ステップS12)。
次に、求められた変換マトリクス等に基づいて、オブジェクト群のジオメトリ処理を行う(ステップS13)。そして、全てのオブジェクトの処理が終了したか否かを判断し(ステップS14)、終了していない場合にはステップS12に戻る。
全てのオブジェクトの処理が終了した場合には、ジオメトリ処理後のオブジェクトのプリミティブ面データを作成し、描画プロセッサに転送する(ステップS15)。これにより、オブジェクト空間において仮想カメラから見える画像が生成されるようになる。
4.ハードウェア構成
次に、本実施形態を実現できるハードウェアの構成の一例について図16を用いて説明する。
メインプロセッサ900は、CD982(情報記憶媒体)に格納されたプログラム、通信インターフェース990を介して転送されたプログラム、或いはROM950(情報記憶媒体の1つ)に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などの種々の処理を実行する。
コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算(ベクトル演算)を高速に実行する。例えば、オブジェクトを移動させたり動作(モーション)させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
ジオメトリプロセッサ904は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算(ベクトル演算)を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ900で動作するプログラムが、その処理をジオメトリプロセッサ904に指示する。
データ伸張プロセッサ906は、圧縮された画像データや音データを伸張するデコード処理を行ったり、メインプロセッサ900のデコード処理をアクセレートする処理を行う。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、MPEG方式等で圧縮された動画像を表示できるようになる。なお、デコード処理の対象となる画像データや音データは、ROM950、CD982に格納されたり、或いは通信インターフェース990を介して外部から転送される。
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ(プリミティブ面)で構成されるオブジェクトの描画(レンダリング)処理を高速に実行するものである。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970の機能を利用して、オブジェクトデータを描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると、描画プロセッサ910は、これらのオブジェクトデータやテクスチャに基づいて、Zバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ922に高速に描画する。また、描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行うことができる。そして、1フレーム分の画像がフレームバッファ922に書き込まれると、その画像はディスプレイ912に表示される。
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などの高品位のゲーム音を生成する。生成されたゲーム音は、スピーカ932から出力される。
ゲームコントローラ942(レバー、ボタン、筺体、パッド型コントローラ又はガン型コントローラ等)からの操作データや、メモリカード944からのセーブデータ、個人データは、シリアルインターフェース940を介してデータ転送される。
ROM950にはシステムプログラムなどが格納される。なお、業務用ゲームシステムの場合には、ROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納されることになる。なお、ROM950の代わりにハードディスクを利用するようにしてもよい。
RAM960は、各種プロセッサの作業領域として用いられる。
DMAコントローラ970は、プロセッサ、メモリ(RAM、VRAM、ROM等)間でのDMA転送を制御するものである。
CDドライブ980は、プログラム、画像データ、或いは音データなどが格納されるCD982(情報記憶媒体)を駆動し、これらのプログラム、データへのアクセスを可能にする。
通信インターフェース990は、ネットワークを介して外部との間でデータ転送を行うためのインターフェースである。この場合に、通信インターフェース990に接続されるネットワークとしては、通信回線(アナログ電話回線、ISDN)、高速シリアルバスなどを考えることができる。そして、通信回線を利用することでインターネットを介したデータ転送が可能になる。また、高速シリアルバスを利用することで、他の画像生成システムとの間でのデータ転送が可能になる。
なお、本実施形態の各部(各手段)は、その全てを、ハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
そして、本実施形態の各部をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納されることになる。より具体的には、上記プログラムが、ハードウェアである各プロセッサ902、904、906、910、930等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ902、904、906、910、930等は、その指示と渡されたデータとに基づいて、本発明の各部を実現することになる。
図17(A)に、本実施形態を業務用ゲームシステム(画像生成システム)に適用した場合の例を示す。プレーヤは、ディスプレイ1100上に映し出されたゲーム画像を見ながら、操作部1102(レバー、ボタン)を操作してゲームを楽しむ。内蔵されるシステムボード(サーキットボード)1106には、各種プロセッサ、各種メモリなどが実装される。そして、本実施形態の各部を実現するためのプログラム(データ)は、システムボード1106上の情報記憶媒体であるメモリ1108に格納される。以下、このプログラムを格納プログラム(格納情報)と呼ぶ。
図17(B)に、本実施形態を家庭用のゲームシステム(画像生成システム)に適用した場合の例を示す。プレーヤはディスプレイ1200に映し出されたゲーム画像を見ながら、コントローラ1202、1204などを操作してゲームを楽しむ。この場合、上記格納プログラム(格納情報)は、本体システムに着脱自在な情報記憶媒体であるCD1206、或いはメモリカード1208、1209などに格納されている。
図17(C)に、ホスト装置1300と、このホスト装置1300とネットワーク1302(LANのような小規模ネットワークや、インターネットのような広域ネットワーク)を介して接続される端末1304-1〜1304-n(ゲーム機、携帯電話)とを含むシステムに本実施形態を適用した場合の例を示す。この場合、上記格納プログラム(格納情報)は、例えばホスト装置1300が制御可能な磁気ディスク装置、磁気テープ装置、メモリなどの情報記憶媒体1306に格納されている。端末1304-1〜1304-nが、スタンドアロンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置1300からは、ゲーム画像、ゲーム音を生成するためのゲームプログラム等が端末1304-1〜1304-nに配送される。一方、スタンドアロンで生成できない場合には、ホスト装置1300がゲーム画像、ゲーム音を生成し、これを端末1304-1〜1304-nに伝送し端末において出力することになる。
なお、図17(C)の構成の場合に、本実施形態の各部を、ホスト装置(サーバー)と端末とで分散して実現するようにしてもよい。また、本実施形態の各部を実現するための上記格納プログラム(格納情報)を、ホスト装置(サーバー)の情報記憶媒体と端末の情報記憶媒体に分散して格納するようにしてもよい。
またネットワークに接続する端末は、家庭用ゲームシステムであってもよいし業務用ゲームシステムであってもよい。
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
例えば、明細書中の記載において広義な用語(方向関係、α値、ターゲット色、視点設定変更イベント等)として引用された用語(なす角度、半透明度、背景色、ゲームイベント等)は、明細書中の他の記載においても広義な用語に置き換えることができる。
また、仮想点、仮想方向の設定手法も、本実施形態で詳細に説明した手法に限定されず、種々の変形実施が可能である。
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
また、本発明は種々のゲーム(格闘ゲーム、競争ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、ロールプレイングゲーム等)に適用できる。
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々の画像生成システム(ゲームシステム)に適用できる。