説明

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

【課題】システムの処理負荷を抑えて、メモリの使用量を節約して、大量のポリゴンを描画することができるプログラム、情報記憶媒体、及び画像生成システムを提供する。
【解決手段】カメラマトリクスに基づき、複数の頂点マトリクスを求め、求めた複数の頂点マトリクスと、複数の原点とを用いて、スプライトの頂点座標を求める。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体、画像生成システムに関する。
【背景技術】
【0002】
従来から、複数のポリゴンが設定されるオブジェクト空間(仮想的な3次元空間)内において、仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
このような画像生成システムでは、同一の形状、同一の大きさの複数のポリゴン、例えば、大量のパーティクルを用いて画像を生成する場合があり、通常、オブジェクト空間に配置された複数のポリゴンの各頂点座標をカメラマトリクスを用いて、カメラ座標系に座標を変換する処理を行っている。
【特許文献1】特開2001−312740
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、ポリゴンの座標変換処理は、ポリゴンの各頂点に対して行うので、特に大量のパーティクルを用いて画像を生成する場合には、システムの処理負荷が重くなり、メモリ使用率が高くなるという問題があった。
【0005】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、システムの処理負荷を抑えると共にメモリの使用量を節約して、パーティクルなどの大量のポリゴンを描画することができるプログラム、情報記憶媒体、及び画像生成システムを提供することにある。
【課題を解決するための手段】
【0006】
(1)本発明は、
オブジェクト空間における仮想カメラから見える画像を生成するためのプログラムであって、
仮想カメラの位置・向きに基づいて、互いに異なる複数の頂点マトリクスによって構成される頂点マトリクス群を生成する頂点マトリクス演算部と、
オブジェクト空間において、互いに異なる複数の所与の点それぞれに対応するオブジェクトを設定するオブジェクト空間設定部として、コンピュータを機能させ、
前記オブジェクト空間設定部が、
前記複数の所与の点それぞれに対して、前記頂点マトリクス群を構成する各頂点マトリクスを用いて所与の点から複数の頂点へ変換する変換処理を行うと共に、変換された複数の頂点によって構成されるオブジェクトを当該所与の点に対応するオブジェクトとして設定することを特徴とするプログラムに関する。
【0007】
また、本発明は、上記プログラムを記憶した情報記憶媒体、上記各部として構成する画像生成システムに関係する。
【0008】
本発明によれば、同一の形状及び大きさの複数のオブジェクトを用いて描画する場合に、少ない情報量、演算量で効率よく画像を生成することができる。つまり、本発明によれば、画像生成システムの処理負荷、メモリ使用量を軽減することができる。
(2)また、本発明のプログラム、情報記憶媒体、画像生成システムは、
前記頂点マトリクス演算部が、
ワールド座標系の座標値を、オブジェクト空間における仮想カメラの位置・向きを基準とするカメラ座標系の座標値へ座標変換を行うカメラマトリクスに基づき、前記頂点マトリクス群を構成する各頂点マトリクスを生成すると共に、頂点マトリクスの各成分のうちx軸の平行移動成分及びy軸の平行移動成分の少なくとも一方の値を、前記頂点マトリクス群を構成する各頂点マトリクスにおいて互いに異ならせてもよい。
【0009】
本発明によれば、オブジェクトが仮想カメラに正対するように処理を行うビルボード処理も行いながら、少ない情報量、演算量で効率よく複数のオブジェクトをオブジェクト空間に配置することができる。
(3)また、本発明のプログラム、情報記憶媒体、画像生成システムは、
前記頂点マトリクス演算部が、
x軸の平行移動成分のスケーリングパラメータに基づいて、前記頂点マトリクス群を構成する各頂点マトリクスのx軸の平行移動成分の値を設定し、y軸の平行移動成分のスケーリングパラメータに基づいて、前記頂点マトリクス群を構成する各頂点マトリクスのy軸の平行移動成分の値を設定してもよい。
【0010】
本発明によれば、スケーリングパラメータを変化させることによって、オブジェクトの大きさや形状を変化させることができ、少ない情報量、演算量で、バリエーションのある画像を生成することができる。
【発明を実施するための最良の形態】
【0011】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0012】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0013】
操作部160は、プレーヤがオブジェクト(プレーヤキャラクタ、移動体)の操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。
【0014】
なお、操作部160は、加速度センサや撮像部、或いは角速度を検出するジャイロセンサを備えた入力機器によってプレーヤからの入力データ(操作データ)を入力できるものでもよい。例えば、入力装置は、プレーヤが把持して動かすものであってもよいし、プレーヤが身につけて動かすものであってもよい。また、入力装置には、プレーヤが把持する刀型コントローラや銃型コントローラ、あるいはプレーヤが身につける(プレーヤが手に装着する)グローブ型コントローラなど実際の道具を模して作られたコントローラも含まれる。また入力装置には、入力装置と一体化されているゲーム装置、携帯型ゲーム装置、携帯電話なども含まれる。
【0015】
例えば、入力機器に備えられた加速度センサは、3軸(X軸、Y軸、Z軸)の加速度を検出する。すなわち、加速度センサは、上下方向、左右方向、及び、前後方向の加速度を検出することができる。なお、加速度センサは、5msec毎に加速度を検出している。また、加速度センサは、1軸、2軸、6軸の加速度を検出するものであってもよい。なお、加速度センサから検出された加速度は、入力機器の通信部によってゲーム装置(本体装置)に送信される。
【0016】
また、入力機器に備えられた撮像部は、赤外線フィルタ、レンズ、撮像素子(イメージセンサ)、画像処理回路を含む。赤外線フィルタは、入力装置の前方に配置され、表示部190に関連付けられて配置されている光源から入射する光から赤外線のみを通過させる。レンズは、赤外線フィルタを透過した赤外線を集光して撮像素子へ出射する。撮像素子は、例えば、CMOSセンサやCCDのような固体撮像素子であり、レンズが集光した赤外線を撮像して撮像画像を生成する。撮像素子で生成された撮像画像は、画像処理回路で処理される。例えば、撮像素子から得られた撮像画像を処理して高輝度部分を検知し、撮像画像における光源の位置情報(特定位置)を検出する。なお、光源が複数存在する場合には、撮像画像上の位置情報を検出する。また、検出した撮像画像上の位置情報は、通信部によって、本体装置に送信される。
【0017】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶することができる。
【0018】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0019】
通信部196は外部(例えば他の画像生成システム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0020】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体180や記憶部170に記憶してもよい。このようにプログラムやデータを受信して画像生成システムを機能させる場合も本発明の範囲内に含む。
【0021】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0022】
この処理部100は記憶部170内の主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0023】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部114、描画部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
【0024】
オブジェクト空間設定部110は、雪、雨、キャラクタ、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ライン(線)、ラインポリゴン、ポリゴン、多角形、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。例えば、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義であり、例えば、ワールド座標系でのX、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0025】
本実施形態のオブジェクト空間設定部110は、オブジェクト空間において、互いに異なる複数の所与の点それぞれに対応するオブジェクトを設定する。ここで所与の点とは、オブジェクト空間において、移動シミュレーションを行う対象のオブジェクトの代表点、原点とすることができる。例えば、雪が降るシミュレーション処理を行う場合には、当該所与の点に対して、移動シミュレーション処理を行ってもよい。
【0026】
また、本実施形態のオブジェクト空間設定部110は、オブジェクト空間の複数の所与の点それぞれに対して、後述する頂点マトリクス演算部118によって生成された頂点マトリクス群を構成する各頂点マトリクスを用いて所与の点から複数の頂点へ変換する変換処理を行うと共に、変換された複数の頂点によって構成されるオブジェクトを当該所与の点に対応するオブジェクトとして設定する。
【0027】
また、本実施形態のオブジェクト空間設定部110は、後述する頂点マトリクス演算部118によって、複数種類の頂点マトリクス群が生成された場合には、生成された複数の頂点マトリクス群のうち、いずれか1つの頂点マトリクス群を用いて、所与の点に対応するオブジェクトを設定してもよい。
【0028】
なお、本実施形態では、オブジェクトデータ記憶部176にオブジェクトのオブジェクトデータ(モデルデータ)が記憶されており、これらのオブジェクトをオブジェクト空間に配置する処理を行ってもよい。例えば、雪のモデルデータに基づいて、雪モデルをオブジェクト空間に配置する処理を行ってもよい。
【0029】
移動・動作処理部112は、オブジェクト(雪、キャラクタ、移動体等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)、物理法則などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0030】
特に本実施形態の移動・動作処理部112は、物理法則に基づいて、オブジェクト空間内で雪を移動させるシミュレーション演算を行う。例えば、オブジェクト空間における雪の位置を示す原点(代表点)を物理法則に基づいて移動させる処理を行う。
【0031】
仮想カメラ制御部114は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、ワールド座標系における仮想カメラの位置(X、Y、Z)又は回転角度(例えば、X、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を制御する処理を行う。要するに、視点位置、視線方向、画角を制御する処理を行う。
【0032】
例えば仮想カメラによりオブジェクト(例えばキャラクタ、移動体)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部112で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0033】
カメラマトリクス演算部116は、ワールド座標系における仮想カメラの位置・向きに基づいて、ワールド座標系の座標値からカメラ座標系(例えば、仮想カメラを原点として、x軸方向は透視変換後の最終的な画像の水平方向、y軸方向は透視変換後の最終的な画像の垂直方向とし、さらに視線方向がz軸の負の方向になるように設定された座標系)の座標値へ座標変換を行うカメラマトリクス(ビューマトリクス)を求める処理を行う。なお、カメラマトリクスは、ワールド座標系における仮想カメラの位置、注視点、そして仮想カメラの上方向に基づいて、生成することができる。
【0034】
頂点マトリクス演算部118は、仮想カメラの位置・向きに基づいて、互いに異なる複数の頂点マトリクスによって構成される頂点マトリクス群を生成する。
【0035】
頂点マトリクス演算部118は、カメラマトリクス演算部116によって求められるカメラマトリクスに基づき、頂点マトリクス群を構成する各頂点マトリクスを生成する。特に、頂点マトリクスの各成分のうちx軸の平行移動成分及びy軸の平行移動成分の少なくとも一方の値を、各頂点マトリクスにおいて互いに異ならせるようにして各頂点マトリクスを生成する。
【0036】
また、頂点マトリクス演算部118は、x軸の平行移動成分のスケーリングパラメータ(例えば、予め決められたスプライトの横サイズw)に基づいて、頂点マトリクス群を構成する各頂点マトリクスのx軸の平行移動成分の値を設定し、y軸の平行移動成分のスケーリングパラメータ(例えば、予め決められたスプライトの縦サイズh)に基づいて、頂点マトリクス群を構成する各頂点マトリクスのy軸の平行移動成分の値を設定してもよい。
【0037】
また、頂点マトリクス演算部118は、複数種類の頂点マトリクス群を生成してもよい。
【0038】
なお、頂点マトリクス演算部118は、頂点マトリクスの各成分のうちz軸の回転成分の少なくとも1つの成分を、各頂点マトリクスにおいて互いに異ならせるようにして各頂点マトリクスを生成してもよい。つまり、z軸に回転度合いの異なる複数の頂点マトリクスによって構成される頂点マトリクス群を生成してもよい。
【0039】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0040】
頂点処理部126では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換(カメラ座標変換)、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。
【0041】
特に、本実施形態の頂点処理部126は、頂点マトリクス演算部118で求めた頂点マトリクスを用いて、ワールド座標系におけるオブジェクトの原点座標からカメラ座標系における当該オブジェクトの各頂点の頂点座標を求める処理を行う。
【0042】
そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0043】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0044】
そして描画部120は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0045】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、オブジェクトデータ記憶部176に保存される。
【0046】
テクスチャマッピングは、記憶部170のテクスチャ記憶部178に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部178からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。特に本実施形態では、テクスチャ記憶部178に記憶されている雪模様テクスチャや煙模様テクスチャ、星模様テクスチャなどを、ポリゴンにマッピングする処理を行う。例えば、ポリゴンの原点(代表点)に応じて、ポリゴンにマッピングするテクスチャを決めて、テクスチャマッピングを行ってもよい。
【0047】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ179(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファ179に格納されるZ値を参照する。そして参照されたZバッファ179のZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファ179のZ値を新たなZ値に更新する。
【0048】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。
【0049】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0050】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0051】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
2.本実施形態の手法
(1)概要
本実施形態は、図2に示すように、形状及び大きさが同一の雪のポリゴン(パーティクル)を用いて画像をリアルタイムに生成する処理を行うものである。例えば、大量の雪のスプライト(ポリゴンの一例)の原点を、重力、風力などの物理的な運動法則に基づき移動させるシミュレーション処理を行い、スプライトに雪テクスチャ(雪模様テクスチャ)をマッピングして画像を生成している。ビルボード処理を行うのは、雪のモデルを作成する手間を省き、頂点数を極力軽減させてリアルな画像を生成するためである。
【0052】
(2)頂点マトリクスを用いて画像を生成する手法
ところで、通常の描画処理では種々の座標変換を行っており、例えば、図3に示すように、ワールド座標系における各スプライトの各頂点を、カメラ座標系(視点を原点とし、視線の方向がz軸の負の方向になるように設定される座標系)への座標変換処理、つまり視野変換処理を行っている。したがって、大量の雪のスプライトを表示する場合には、雪のスプライトそれぞれに対して、スプライトの頂点毎にカメラマトリクスを用いて視野変換を行うことになる。
【0053】
例えば、図3に示すように、ワールド座標系におけるスプライトの各頂点V0〜V3を、カメラマトリクスVmを用いて、カメラ座標系における座標に視野変換を行う場合、スプライト毎の頂点座標を必要とするので、大量のスプライトを表示する場合には、情報量が多くメモリの使用率が高くなり、また、スプライト数×頂点数に応じた座標変換を行うので演算量が多くなりシステムの処理負荷が重くなるという問題があった。
【0054】
そこで、本実施形態では、カメラマトリクスに基づき、互いに異なる4つの頂点マトリクスを生成し、各スプライトの原点情報(原点座標)と、生成された4つの頂点マトリクスのみで、カメラ座標系におけるスプライトの頂点座標を求める処理を行っている。つまり、本実施形態では、同じ形状、同じ大きさの大量のスプライトを表現する場合に、従来よりも少ない情報量、少ない演算量でカメラ座標系におけるスプライトの頂点座標を求めるようにしている。
【0055】
まず、頂点マトリクスを求める手法について具体的に説明すると、本実施形態では、図4に示すように、カメラマトリクスVmと、予め決められたスプライトの大きさと形状とに基づいて各頂点V0〜V3に対応する頂点マトリクスWm0〜Wm3を生成している。
【0056】
具体的には、スプライトの頂点それぞれに、原点から頂点への平行移動ベクトルを求め、カメラマトリクスVmのx軸、y軸の平行移動成分の値に、原点から頂点までの平行移動ベクトルを加算したマトリクスを、その頂点の頂点マトリクスとして設定する。
【0057】
例えば、図5に示すように、スプライトの原点がスプライトの中心点であって、スプライトの横サイズwと、縦サイズhが予め決められている場合には、図6に示すように、原点Pから頂点V0までの平行移動ベクトルが(x,y)=(−w/2,h/2)であるので、頂点マトリクスWm0は、x軸平行移動成分に、カメラマトリクスVmのx軸平行移動成分t0からw/2を減算した値を設定し、y軸平行移動成分に、カメラマトリクスVmのy軸平行移動成分t1にh/2を加算した値を設定し、頂点マトリクスWm0のx、y軸の平行移動成分以外の成分は、カメラマトリクスVmの成分の値と同じ値を設定する。つまり、ワールド座標系におけるスプライトの原点Pの座標を、カメラマトリクスVmによってカメラ座標系にされたカメラ座標系の原点Pの座標を頂点V0に平行移動させるためには、原点座標Pのx成分からw/2を減算し、y成分にh/2を加算することになる。すなわち、これら処理を一元的に行うのが、頂点V0用の頂点マトリクスWm0になる。
【0058】
同様に、原点Pから頂点V1までの平行移動ベクトルが(x,y)=(w/2,h/2)であるので、頂点マトリクスWm1は、x軸の平行移動成分に、カメラマトリクスVmのx軸の平行移動成分の値にw/2を加算した値を設定し、y軸の平行移動成分に、カメラマトリクスVmのy軸の平行移動成分の値にh/2を加算した値を設定し、その他の成分はカメラマトリクスVmと同一の値に設定している。
【0059】
また、原点Pから頂点V2までの平行移動ベクトルが(x,y)=(−w/2,−h/2)であるので、頂点マトリクスWm2は、x軸の平行移動成分に、カメラマトリクスVmのx軸の平行移動成分の値からw/2を減算した値を設定し、y軸の平行移動成分に、カメラマトリクスVmのy軸の平行移動成分の値からh/2を減算した値を設定し、その他の成分はカメラマトリクスVmと同一の値に設定している。
【0060】
また、原点Pから頂点V3までの平行移動ベクトルが(x,y)=(w/2,−h/2)であるので、頂点マトリクスWm3は、x軸の平行移動成分に、カメラマトリクスVmのx軸の平行移動成分の値にw/2を加算した値を設定し、y軸の平行移動成分に、カメラマトリクスVmのy軸の平行移動成分の値からh/2を減算した値を設定し、その他の成分はカメラマトリクスVmと同一の値に設定している。
【0061】
なお、本実施形態では、スプライトをカメラの視線方向に正対させるビルボード表示を行うようにしているので、4つの頂点マトリクスWm0〜Wm3のz軸の平行移動成分は全て同じ値にしている。例えば、原点Pから各頂点へのz軸方向の移動量を零する場合には、4つの頂点マトリクスWm0〜Wm3のz軸の平行移動成分は、カメラマトリクスのz軸の平行移動成分t2と同じ値に設定する。
【0062】
また、本実施形態では、カメラマトリクスVmに基づいて、頂点マトリクスWm0〜Wm3を生成している。したがって、仮想カメラの位置や向きが変化する度に頂点マトリクスWm0〜Wm3が生成されることになる。かかる場合には、メモリ節約のため、新たな頂点マトリクスWm0〜Wm3をメモリ上に上書きして記憶させるようにすることが望ましい。
【0063】
以上のように、大きさ及び形状が同一の複数のスプライトをビルボード表示する場合には、頂点マトリクスWm0〜Wm3を用いることで、従来よりも少ない情報量、演算数で、スプライトSP0〜SPnのカメラ座標系における頂点座標を求めることができる。
【0064】
つまり、雪のスプライト数分の原点座標と、頂点マトリクスWm0〜Wm3の4つのマトリクス情報だけで、カメラ座標系における雪の各スプライトの頂点座標を求めることができる。
【0065】
なお、本実施形態の手法を用いると、CPU側からGPU側へのデータの転送量を大幅に削減することができる。つまり、従来の手法の場合、CPU側がワールド座標系における各スプライトの頂点情報と、カメラマトリクスVmをGPU側に転送していた。しかし、本実施形態では、CPUが各スプライト(SP0〜SPn)のワールド座標系における原点座標と、4つの頂点マトリクスWm0〜Wm3を求め、各スプライトの原点情報と4つの頂点マトリクスそれぞれ配列としてCPU側からGPU側に設定(転送)し、スプライトを描画する際には上記原点情報配列のインデックス番号と頂点マトリクス配列のインデックス番号のみをCPU側からGPU側に転送する。そして、転送されたデータに基づき、GPU側がカメラ座標系のスプライトの頂点座標を求める処理を行うことになる。したがって、本実施形態の手法によれば従来の手法に比較してCPU側からGPU側へのデータの転送量を軽減させることができる。
【0066】
なお、原点座標PをカメラマトリクスVmを用いて視野変換を行った後に、原点から各頂点までのずらし量を加減算してもよいが、頂点マトリクスWm0〜Wm3を用いることで、遙かに演算数を軽減させることができる。
【0067】
さらに、より具体的な例を図7を用いて説明する。図7は、雪の各スプライトの横サイズwが10、スプライトの縦サイズhが10であって、スプライトの原点Pがスプライトの中心点に予め設定されている例である。
【0068】
例えば、仮想カメラが、ワールド座標系における(X,Y,Z)=(0,10,20)に配置され、ワールド座標系のZマイナス方向を向いている場合のカメラマトリクスVmは、以下のとおりである。
【0069】
【数1】

そして、スプライトの頂点V0〜V3の頂点マトリクスWm0〜Wm3は以下のとおりである。
【0070】
【数2】

そして、ワールド座標系における複数の原点座標P0〜Pnと、上述の4つ頂点マトリクスWm0〜Wm3によって、原点座標に対応するスプライトのカメラ座標系における頂点座標を求めることができる。
【0071】
例えば、スプライトSP0の原点座標P0が(X,Y,Z)=(15,15,0)である場合には、原点座標P0に対応するスプライトSP0の各頂点V0〜V3は、下式(1)〜(4)によって求めることができる。
【0072】
V0=Wm0×P0 (1)
V1=Wm1×P0 (2)
V2=Wm2×P0 (3)
V3=Wm3×P0 (4)
すなわち、スプライトSP0の各頂点V0〜V3は、以下の行列式で求めることができる。
【0073】
【数3】

このように、ワールド座標系におけるスプライト原点座標P0〜Pnと、4つの頂点マトリクスWm0〜Wm3との情報だけで、原点P0〜Pnに対応するスプライトSP0〜SPnのカメラ座標系における頂点座標を求めることができる。
【0074】
なお、本実施形態では、ポリゴンのデザインに応じて、原点からポリゴンの各頂点への平行移動ベクトルを求めることができる。例えば、矩形上のものだけでなく、台形や平行四辺形、など種々の形状に応じた頂点マトリクスを生成することができる。
【0075】
なお、本実施形態では、時間経過に応じて、スプライトを回転させるように頂点マトリクスを求めてもよい。例えば、図8に示すように、仮想カメラ座標系のz軸の正方向からみて反時計回りに回る場合における回転角度θを決定して、頂点マトリクスWm0〜Wm3を求めてもよい。回転角度θはランダムに求めてもよいし、所定角度(例えば、45度)としてもよい。
【0076】
そして、原点P0から各頂点V0〜V3への平行移動ベクトルを、回転角度に応じて変化させて求めることができる。
【0077】
例えば、図5に示すように、スプライトの原点がスプライトの中心点であって、スプライトの横サイズwと、縦サイズhが予め決められている場合には、原点Pから頂点V0までの平行移動ベクトルを(x,y)=(cosθ×(−w/2)−sinθ×(h/2),sinθ×(−w/2)+cosθ×(h/2))とし、カメラマトリクスVmのx軸、y軸の平行移動成分の値に、平行移動ベクトルを加算したマトリクスを、頂点V0の頂点マトリクスWm0として設定する。他の頂点V1〜V3に対応する頂点マトリクスWm1〜Wm3も同様に求めることができる。すなわち、頂点マトリクスWm0〜Wm3は以下のとおりである。
【0078】
【数4】

このようにすれば、全てのスプライトを同時に同一の回転角度で回転させることができ、図9(A)(B)に示すように、フレーム経過に応じてオブジェクト空間に配置されるスプライトを回転させることができ、例えば星模様テクスチャをマッピングした場合には、フレーム経過に応じて、大量の星が、各スプライトの中心を軸に動的に回転しているような画像を表現することができる。
【0079】
また、カメラの位置や向きが固定されている場合には、頂点マトリクスWm0〜Wm3群を複数求めておき、画像生成システムの進行状況や、時間経過、スプライトの種類(ポリゴンの種類)に応じて、いずれかの頂点マトリクス群を用いて、スプライトの頂点座標を求めてもよい。
【0080】
例えば、スプライトの大きさが異なる複数の頂点マトリクスを用意し、時間経過に応じてスプライトの大きさを決定し、決定されたスプライトの大きさに応じた頂点マトリクスを用いるようにしてもよい。
【0081】
例えば、カメラマトリクスVmによって求められる頂点マトリクス群A、B、Cを求め、時間経過に伴って頂点マトリクス群を変更する。
【0082】
具体的に説明すると、1フレーム〜10フレームまでは、横サイズw=4、縦サイズh=4のスプライトが配置される頂点マトリクス群A(Wm0a〜Wm3a)を生成して描画処理を行い、11フレームから20フレームまでは、横サイズw=10、縦サイズh=10のスプライトが配置される頂点マトリクス群B(Wm0b〜Wm3b)を用いて描画する処理を行い、21〜30フレームまでは、横サイズw=20、縦サイズh=20のスプライトが配置される頂点マトリクス群C(Wm0c〜Wm3c)を用いて描画する処理を行うようにしてもよい。つまり、合計12個の頂点マトリクスを生成し、時間経過に応じていずれかの頂点マトリクス群を用いるようにする。
【0083】
また、スプライトの種類に応じて頂点座標を求めてもよい。具体的に説明すると、形状や大きさが異なる3種類の星が大量に描画される画像を生成する場合には、スプライトの形状や大きさに応じた頂点マトリクス群を用いて3種類のスプライトを大量に描画する。
【0084】
例えば、予め、全ての原点情報それぞれに対応する、スプライトの種類を示す識別情報(例えば、頂点マトリクス群の識別情報)を記憶する。そして、原点情報に対応するスプライトの識別情報に基づいて、複数種類の頂点マトリクス群のうち、いずれかの頂点マトリクス群を選択し、選択した頂点マトリクス群を用いてスプライトの頂点座標を求める。
【0085】
例えば、原点情報に対応するスプライトの識別情報がA(頂点マトリクス群A)である場合には、当該原点情報と、頂点マトリクス群Aを用いてスプライトの頂点座標を求める。例えば、上述の例によれば、横サイズw=4、縦サイズh=4のスプライトの頂点座標を求める。
【0086】
そして、原点情報に対応するスプライトの識別情報がB(頂点マトリクス群B)である場合には、当該原点情報と、頂点マトリクス群Bを用いてスプライトの頂点座標を求める。例えば上述の例によれば、横サイズw=10、縦サイズh=10のスプライトの頂点座標を求める。
【0087】
また、原点情報に対応するスプライトの識別情報がC(頂点マトリクス群C)である場合には、当該原点情報と、頂点マトリクス群Cを用いてスプライトの頂点座標を求める。例えば、上述の例によれば、横サイズw=20、縦サイズh=20のスプライトの頂点座標を求める。
【0088】
3.本実施形態の処理
次に、本実施形態の詳細な処理例について図10のフローチャートを用いて説明する。
【0089】
まず、ワールド座標系における仮想カメラの位置、向きに基づいて、カメラマトリクスを求める(ステップS1)。
【0090】
そして、スプライトの横サイズw、縦サイズh、及びスプライトの原点、カメラマトリクスとに基づいて4つの頂点マトリクスを求める(ステップS2)。
【0091】
次に、ワールド座標系においてスプライトの原点を移動させるシミュレーション処理を行う。例えば、雪のスプライトを表現する場合には、物理法則に基づき各雪のスプライトの原点を移動(落下移動)させる処理を行う(ステップS3)。
【0092】
そして、各スプライトの原点のワールド座標系における座標と、4つの頂点マトリクスに基づいて、カメラ座標系における各スプライトの頂点座標を求める(ステップS4)。
【0093】
以上で処理が終了する。
【0094】
4.応用例
(1)上述した例では、頂点数が4つのスプライトではあるが、頂点数は3つから形成される3角形ポリゴン、頂点数が5つで構成される5角形ポリゴンなど、他の多角形にも応用できる。また、雨などのパーティクルを表現する場合には頂点数が2つであるラインポリゴン(ライン)についても応用してもよい。例えば、N個の頂点で構成される多角形のカメラ座標系における頂点座標を求める場合には、頂点マトリクスをN個求め、ポリゴンの原点と各頂点(V0〜VN)との平行移動ベクトルを求めて、カメラマトリクスのx、y軸の平行移動成分に平行移動ベクトルを加算し、各頂点の頂点マトリクス(Wm0〜WmN)を生成する。そして、N個の頂点マトリクスWm0〜WmNと、ワールド座標系の原点の座標情報とを用いて、カメラ座標系のポリゴンの頂点座標を求める。
【0095】
なお、かかる場合も、頂点数の異なるポリゴンの種類に応じた複数種類の頂点マトリクス群を予め生成してもよい。例えば、上述した頂点マトリクス群A〜Cの他、三角形ポリゴンの頂点座標を求める頂点マトリクス群D、5角形ポリゴンの頂点座標を求める頂点マトリクス群E、ラインポリゴンの頂点座標を求める頂点マトリクス群Fを予め用意してもよい。
【0096】
そして、全ての原点情報に対応づけて、予めポリゴンの種類を識別する識別情報(例えば、頂点マトリクス群の識別情報A〜F)を記憶し、描画する際には、原点情報に対応するポリゴンの識別情報に基づいて、複数種類の頂点マトリクス群(A〜F)のうち、いずれかの頂点マトリクス群を選択し、選択した頂点マトリクス群を用いてポリゴンの頂点座標を求める。
【0097】
(2)また、位置及び向きの少なくとも一方が異なる複数の仮想カメラに基づいて、複数の画像を生成する場合には、仮想カメラ毎に、カメラマトリクスとスプライトのサイズに基づいて頂点マトリクスを求めてもよい。
【0098】
例えば、オブジェクト空間に存在するスプライトを、プレーヤP1用の仮想カメラから見える画像と、プレーヤP2用の仮想カメラから見える画像とを生成する場合には、次のように処理を行う。
【0099】
まず、プレーヤP1用の仮想カメラの位置・向きに基づいてカメラマトリクスVm1を求め、カメラマトリクスVm1とスプライトの縦・横サイズに基づいて、頂点マトリクスWm01〜Wm31を生成する。そして、ワールド座標系における全ての各スプライトの原点座標と、求めた頂点マトリクスWm01〜Wm31を用いて、プレーヤP1用の仮想カメラのカメラ座標系における複数の各スプライトの頂点座標を求める。
【0100】
一方、プレーヤP2用の仮想カメラから見える画像を生成する場合には、プレーヤP2用の仮想カメラの位置・向きに基づいてカメラマトリクスVm2を求め、カメラマトリクスVm2とスプライトの縦・横サイズに基づいて、頂点マトリクスWm02〜Wm32を生成する。そして、ワールド座標系における全てのスプライトの各原点座標と、求めた頂点マトリクスWm02〜Wm32を用いて、プレーヤP2用の仮想カメラのカメラ座標系における複数の各スプライトの頂点座標を求める。
【0101】
以上のようにすれば、プレーヤP1、P2用それぞれの生成される画像は、それぞれスプライトが正面を向くビルボード表示を行うことができると共に、プレーヤP1、P2用共に、ワールド座標系での同一の原点座標を用いて、各仮想カメラに対応したカメラ座標系におけるスプライトの頂点座標を少ない情報量で簡易に求めることができる。
【図面の簡単な説明】
【0102】
【図1】本実施形態の画像生成システムの機能ブロック図の例。
【図2】本実施形態において生成する画像の一例。
【図3】本実施形態のカメラマトリクスを求める手法の説明図。
【図4】本実施形態の頂点マトリクスを求める手法、及び、スプライトの原点と頂点マトリクスとを用いてスプライトの頂点座標を求める手法の説明図。
【図5】スプライトの一例。
【図6】頂点用マトリクスを求める手法の説明図。
【図7】頂点用マトリクスを求める手法の説明図。
【図8】頂点用マトリクスを求める手法の説明図。
【図9】頂点用マトリクスを求める手法の説明図。
【図10】本実施形態の処理のフローチャート。
【符号の説明】
【0103】
SP、SP0〜SPN スプライト、
Vm カメラマトリクス、
Wm0〜WmN 頂点マトリクス、
P0〜Pn スプライトの原点、
100 処理部、110 オブジェクト空間設定部、112 移動・動作処理部、
114 仮想カメラ制御部、120 描画部、
116 カメラマトリクス演算部、118 頂点マトリクス演算部、
126 頂点処理部、130 音生成部、
160 操作部、170 記憶部、172 主記憶部、
174 描画バッファ、176 オブジェクトデータ記憶部、
178 テクスチャ記憶部、179 zバッファ、180 情報記憶媒体、
190 表示部、192 音出力部、196 通信部

【特許請求の範囲】
【請求項1】
オブジェクト空間における仮想カメラから見える画像を生成するためのプログラムであって、
仮想カメラの位置・向きに基づいて、互いに異なる複数の頂点マトリクスによって構成される頂点マトリクス群を生成する頂点マトリクス演算部と、
オブジェクト空間において、互いに異なる複数の所与の点それぞれに対応するオブジェクトを設定するオブジェクト空間設定部として、コンピュータを機能させ、
前記オブジェクト空間設定部が、
前記複数の所与の点それぞれに対して、前記頂点マトリクス群を構成する各頂点マトリクスを用いて所与の点から複数の頂点へ変換する変換処理を行うと共に、変換された複数の頂点によって構成されるオブジェクトを当該所与の点に対応するオブジェクトとして設定することを特徴とするプログラム。
【請求項2】
請求項1において、
前記頂点マトリクス演算部が、
ワールド座標系の座標値を、オブジェクト空間における仮想カメラの位置・向きを基準とするカメラ座標系の座標値へ座標変換を行うカメラマトリクスに基づき、前記頂点マトリクス群を構成する各頂点マトリクスを生成すると共に、頂点マトリクスの各成分のうちx軸の平行移動成分及びy軸の平行移動成分の少なくとも一方の値を、前記頂点マトリクス群を構成する各頂点マトリクスにおいて互いに異ならせることを特徴とするプログラム。
【請求項3】
請求項2において、
前記頂点マトリクス演算部が、
x軸の平行移動成分のスケーリングパラメータに基づいて、前記頂点マトリクス群を構成する各頂点マトリクスのx軸の平行移動成分の値を設定し、y軸の平行移動成分のスケーリングパラメータに基づいて、前記頂点マトリクス群を構成する各頂点マトリクスのy軸の平行移動成分の値を設定することを特徴とするプログラム。
【請求項4】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1〜3のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項5】
オブジェクト空間における仮想カメラから見える画像を生成するための画像生成システムであって、
仮想カメラの位置・向きに基づいて、互いに異なる複数の頂点マトリクスによって構成される頂点マトリクス群を生成する頂点マトリクス演算部と、
オブジェクト空間において、互いに異なる複数の所与の点それぞれに対応するオブジェクトを設定するオブジェクト空間設定部とを含み、
前記オブジェクト空間設定部が、
前記複数の所与の点それぞれに対して、前記頂点マトリクス群を構成する各頂点マトリクスを用いて所与の点から複数の頂点へ変換する変換処理を行うと共に、変換された複数の頂点によって構成されるオブジェクトを当該所与の点に対応するオブジェクトとして設定することを特徴とする画像生成システム。

【図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


【公開番号】特開2009−140371(P2009−140371A)
【公開日】平成21年6月25日(2009.6.25)
【国際特許分類】
【出願番号】特願2007−317732(P2007−317732)
【出願日】平成19年12月7日(2007.12.7)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】