説明

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

【課題】少ない処理負荷で、波の影響を受けて変化する沖合から波打ち際までの水面のリアルな画像を生成すること。
【解決手段】本プログラムは、形状が変化する物体の第1の領域に対応した第1のオブジェクトについて、当該第1のオブジェクトの構成点の高さを周期的に変化させるための処理を行う第1のオブジェクト設定処理部116と、前記第1のオブジェクトの高さ変化の周期に同期させて、形状が変化する物体の第2の領域に対応した第2のオブジェクトの前記第1のオブジェクトに対する位置を周期的に変化させるための処理を行う第2のオブジェクト設定処理部117と、第1のオブジェクトと第2のオブジェクトが設定されたオブジェクト空間を仮想カメラから見た画像を生成する描画部120と、してコンピュータを機能させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像生成システム、プログラム及び情報記憶媒体に関する。
【背景技術】
【0002】
従来より、キャラクタなどのオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
さてこのようなゲームシステムでは、プレーヤの仮想現実向上のために、よりリアルな画像を生成することが重要な技術的課題になっている。
【0004】
例えば水面(海面等)の画像を表示するゲームシステムでは、水面(海面等)を書いた1つのテクスチャで形成されるのが一般的であったが、単調な画像となっていたため、よりリアルな水面(海面等)の画像が表示できるゲームシステムが望まれていた。
【特許文献1】特許第2812674号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
例えば上記文献では2つのポリゴンデータを上下に間隔を開けて配置し、それそれテクスチャをマッピングすることにより、透明感及び深さ感のあるリアルな画像や霧のかかった水面の画像を表現しようとするものである。
【0006】
ところが波によって生じる海水面の複雑な動きを表現するものではなかった。
【0007】
一般に海では沖では水面の高さの変化として進行してきた波が波打ち際付近では寄せたり引いたりする白波となっており、波によって沖と波打ち際では異なる態様をとりながらも一体として動作する。
【0008】
しかし従来のゲームシステムでは、このような波による影響を反映したリアルな画像表現が行われていなかった。
【0009】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、少ない処理負荷で、波の影響を受けて変化する沖合から波打ち際までの水面のリアルな画像を生成することが可能な画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【課題を解決するための手段】
【0010】
(1)本発明は、
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
形状が変化する物体の第1の領域に対応した第1のオブジェクトについて、当該第1のオブジェクトの構成点の高さを周期的に変化させるための処理を行う第1のオブジェクト設定処理部と、
前記第1のオブジェクトの高さ変化の周期に同期させて、形状が変化する物体の第2の領域に対応した第2のオブジェクトの前記第1のオブジェクトに対する位置を周期的に変化させるための処理を行う第2のオブジェクト設定処理部と、
第1のオブジェクトと第2のオブジェクトが設定されたオブジェクト空間を仮想カメラから見た画像を生成する描画部と、とを含む画像生成システムに関係する。
【0011】
また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【0012】
例えば形状が変化する物体の第1の領域に対応した第1のオブジェクトについて、当該第1のオブジェクトの構成点の平面座標と時間を引数とする周期関数に基づいて、当該第1のオブジェクトの構成点の高さを周期的に変化させるようにしてもよい。そして各フレームにおける各構成点の高さを演算して各フレームにおける第1のオブジェクトの形状を特定することができる。
【0013】
そして第1のオブジェクトの高さ変化の周期に同期させて、第2のオブジェクトの位置を周期的に変化させる。
【0014】
形状が変化する物体とは例えば液体や気体、固体でも形状が変化するもの)であり、具体的には波の立つ海等である。
【0015】
第1のオブジェクトは、例えば海水(形状が変化する物体)の沖を含む領域(第1の領域)の水面の画像を生成するためのオブジェクトであり、複数の構成点(構成点のXZ座標は例えばメッシュ状又は格子状になるように配置されている)の高さ(Y座標)を周期的に変化させることにより波のある水面を表現することができる。
【0016】
また第2のオブジェクトは、例えば海水(形状が変化する物体)の波打ち際を含む領域(第2の領域)の水面の画像を生成するためのオブジェクトであり、大きさは第1のオブジェクトの一端の幅と同じ程度の幅を有し寄せたり引いたりする波の変動する長さの最大長をカバーできる長さを有するオブジェクトであり形状は板状でもよいし、例えば第1のオブジェクトのように高さが変化するオブジェクトでもよい。
【0017】
第2のオブジェクトの位置を第1のオブジェクトの高さ変化の周期に同期して、周期的に変化させるとは、両者の変化の周期が同じ場合でもよいし、一方の周期が他方の周期の整数倍になっている場合でもよい。また周期の長さが同じ又は整数倍であるが、ずれいる場合でもよい。
【0018】
また第1のオブジェクトについては、波打ち際から離れた液体面の画像を生成するためのピクセル処理をおこない、第2のオブジェクトについては、波打ち際の液体面の画像を生成するためのピクセル処理を行う。
【0019】
例えば第1のオブジェクトについては、波打ち際から離れた液体面の模様のテクスチャをマッピングするようにしてもよいし、第2のオブジェクトについては、波打ち際の液体面の模様のテクスチャをマッピングするようにしてもよい。
【0020】
本発明によれば、第2のオブジェクトの位置が第1のオブジェクトの各構成点の高さの変化の周期に同期して周期的に変化するので、波の高さの変化と波打ち際で波が寄せては返す様子ちぐはぐとならず一体感のあるリアルな画像を生成することができる。
【0021】
(2)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記第2のオブジェクト設定処理部は、
第1のオブジェクトの所定のエリアの形状に基づいて、第2のオブジェクトの形状を決定することを特徴とする。
【0022】
例えば所与のフレームにおいて得られた第1のオブジェクトの所定のエリアの形状に基づいて、当該フレームの第2のオブジェクトの形状を決定するようにしてもよい。
【0023】
また異なるフレームにおいて得られた第1のオブジェクトの所定のエリアの形状に基づいて、第2のオブジェクトの形状を決定するようにしてもよい。
【0024】
このようにすると第2のオブジェクトの形状設定のための演算を負荷を軽減できるとともに、第1のオブジェクトと一体感の画像を生成することができる。
【0025】
(3)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記第2のオブジェクト設定処理部は、
第1のオブジェクトの構成点の高さ変化の周期に同期させて、第2のオブジェクトの透明度を周期的に変化させるための処理を行うことを特徴とする。
【0026】
例えば第1のオブジェクトの高さ変化の周期に同期させて、第2のオブジェクトにマッピングする第2のテクスチャの透明度(α値)を周期的に変化させるようにしてもよい。またテクスチャのマッピングを行わずにピクセル処理で各ピクセルの色を生成する場合には、ピクセル処理におけるα値を周期的に変化させるようにしてもよい。
【0027】
例えば第2のオブジェクトを加算半透明で描画する場合には、透明度が低い(α値が1に近い)と波打ち際の白波が濃い画像を生成することができ、透明度が高い(α値が0に近い)と波打ち際の白波が薄い画像を生成することができる。
【0028】
例えば第2のオブジェクトの位置が第1のオブジェクトから遠ざかっているとき(波打ち際に白波が寄せてきているとき。白波が長く伸びているとき)は透明度を低くして(濃い白波の画像を生成)、第2のオブジェクトの位置が第1のオブジェクトに近づいているとき(波打ち際から白波が引いているとき。白波が短くなっているとき)は透明度を高くする(薄い白波の画像を生成)ようにしてもよい。
【0029】
(4)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
第1のオブジェクトの構成点の高さ変化の周期または第2のオブジェクトの移動周期に同期させて、またはこれらのいずれかに所定時間遅延させて同期させて、第3のオブジェクトの前記第1のオブジェクトに対する位置を周期的に変化させるための処理を行う第3のオブジェクト設定処理部を含み、
前記描画部は、
第1のオブジェクトと第2のオブジェクトとともに第3のオブジェクトが設定されたオブジェクト空間を仮想カメラから見た画像を生成することを特徴とする。
【0030】
第3のオブジェクトは例えば形状が変化する物体の第2の領域に対応した第2のオブジェクト(波打ち際の寄せてはかえす白波)の下にあり、第2のオブジェクトの移動による影響を受けた画像(例えば濡れた地面の画像)を生成するためのオブジェクトである。
【0031】
本実施の形態では、第1のオブジェクトの構成点の高さ変化の周期または第2のオブジェクトの移動周期に同期させて、またはこれらのいずれかに所定時間遅延させて同期させて、第3のオブジェクトの前記第1のオブジェクトに対する位置を周期的に変化させることができるので、波打ち際の白波の移動に伴って濡れた地面が見えて白波の移動に遅れて濡れた地面が移動する画像を生成することができる。
【0032】
(5)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記第3のオブジェクト設定処理部は、
第1のオブジェクトの構成点の高さ変化の周期または第2のオブジェクトの移動周期に同期させて、またはこれらのいずれかに所定時間遅延させて同期させて、第3のオブジェクトの透明度を周期的に変化させるための処理を行うことを特徴とする。
【0033】
例えば第1のオブジェクトの高さ変化の周期または第2のオブジェクトの移動周期に同期させて、第3のオブジェクトにマッピングする第3のテクスチャの透明度(α値)を周期的に変化させるようにしてもよい。またテクスチャのマッピングを行わずにピクセル処理で各ピクセルの色を生成する場合には、ピクセル処理におけるα値を周期的に変化させるようにしてもよい。
【0034】
例えば第3のオブジェクトを加算半透明で描画する場合には、透明度が低い(α値が1に近い)と地形が濡れた画像を生成することができ、透明度が高い(α値が0に近い)と地形が乾いた画像を生成することができる。
【0035】
例えば第2のオブジェクトの位置が第1のオブジェクトから最も離れたところに位置する場合に(波打ち際に白波が寄せてきているとき。白波が長く伸びているとき)、第3のオブジェクトの透明度を低くして(濡れた地形の画像を生成)、第2のオブジェクトの位置が第1のオブジェクトに近づいているとき(波打ち際から白波が引いているとき。白波が短くなっているとき)は透明度を高くする(乾いた地形の画像を生成)ようにしてもよい。
【0036】
上記の場合は時間の変化とともにすべての場所の透明度を一律に変化させるようにしてもよい。
【0037】
また例えば第3のオブジェクトの場所に応じて透明度の変化をことならせるようにしてもよい。例えば第1のオブジェクトから近い場所から順に透明度がたかくなるように変化させてもよい。
【0038】
本発明によれば、波打ち際で白波が引いていった後に濡れた砂が徐徐に乾いていく画像を生成することができる。
【0039】
(6)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記第1のオブジェクト設定処理部は、
前記各構成点に対して与えられた高さ調整パラメータまたは深度情報に基づき各構成点の高さの調整を行うことを特徴とする。
【0040】
例えば第1のオブジェクトの構成点に高さ調整パラメータまたは深度情報が関連づけて設定しておくようにしても良い。例えば構成点毎に高さ調整パラメータまたは深度情報が設定されている場合でもよいし、第1のオブジェクトを複数の領域に分割し、領域単位に高さ調整パラメータまたは深度情報を設定するようにしてもよい。そして各構成点がどの領域に属するかによって高さ調整パラメータまたは深度情報を決定してもよい。
【0041】
高さ調整パラメータまたは深度情報に基づき各構成点の高さの調整を行うとは、高さ調整パラメータまたは深度情報に基づき、各構成点の高さを演算する際に使用する周期関数の振幅パラメータを変更する場合でもよいし、周期関数は同じものを利用して周期関数で得られた高さの値に対して高さ調整パラメータまたは深度情報に基づき補正をかける場合でもよい。
【0042】
高さ調整パラメータまたは深度情報に基づき各構成点の高さの調整を行う際には、海底からの距離が遠い場合(深度が大きい)は海底からの距離が近い場合(深度が小さい)に比べて高さの変化が小さくなるように各フレームにおける各構成点の高さを演算するようにしてもよい。
【0043】
(7)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記第1のオブジェクト設定処理部は、
仮想カメラと所定の位置関係を有するエリアを演算領域として設定し、第1のオブジェクトの各構成点が演算領域に属するか否か判断し、属さないと判断した場合には、各構成点の高さを求める処理を省略することを特徴とする。
【0044】
海は広いため、通常の高さの波の遠方の点のy座標の違いは、透視変換した時に2D画面座標としてはほとんど変わらず誤差として許容できる範囲である。
【0045】
従って仮想カメラと所定の位置関係を有するエリアを演算領域として設定し、第1のオブジェクトの各構成点が演算領域に属するか否か判断し、属さないと判断した場合には、各構成点の高さを求める処理を省略するようにしてもよい。
【0046】
ここでは演算領域を仮想カメラからの距離に応じて設定してもよいし、仮想カメラのビューボリューム又はビューボリュームのXZ平面への投影領域に基づき設定してもよい。
【0047】
本発明によれば、遠方の部分は高さの演算を省略することができるので、演算負荷を軽減することができる。
【0048】
(8)また本発明は、
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
波のある水面を画像を生成するための水面オブジェクトの構成点の高さを周期的に変化させるための処理を行う水面オブジェクト設定処理部と、
水面オブジェクトが設定されたオブジェクト空間を仮想カメラから見た画像を生成する描画部と、してコンピュータを機能させ、
前記水面オブジェクト設定処理部は、
仮想カメラと所定の位置関係を有するエリアを演算領域として設定し、第1のオブジェクトの各構成点が演算領域に属するか否か判断し、属さないと判断した場合には、各構成点の高さを求める処理を省略することを特徴とする画像生成システムに関係する。
【0049】
また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【発明を実施するための最良の形態】
【0050】
以下、本実施形態について説明する。
【0051】
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0052】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の例を示す。なお、本実施形態の画像生成システムは、図1の構成要素(各部)の一部を省略した構成としてもよい。
【0053】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【0054】
記憶部170は、描画バッファ172やZバッファ174やテクスチャ記憶部176を含み、処理部100や通信部196などのワーク領域となるもので、その機能はRAMなどにより実現できる。
【0055】
テクスチャ記憶部176は、沖合の海の水面を表すテクスチャや、波打ち際の白波を表すテクスチャを記憶するようにしてもよい。
【0056】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶(記録、格納)される。
【0057】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0058】
携帯型情報記憶装置194は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリカードや携帯型ゲーム装置などがある。
【0059】
通信部196は、外部(例えばホスト装置や他の画像生成システム)との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0060】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバー)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(記憶部170)に配信するようにしてもよい。このようなホスト装置(サーバー)の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0061】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。また処理部100は記憶部170をワーク領域として各種処理を行う。処理部100の機能は、各種プロセッサ(CPU、DSP等)やASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0062】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部114、第1のオブジェクト設定処理部116、第2のオブジェクト設定処理部117、第3のオブジェクト設定処理部118、描画部120、音生成部130を含む。なおこれらの一部を省略してもよい。
【0063】
オブジェクト空間設定部110は、キャラクタ、樹木、車、柱、壁、建物、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0064】
移動・動作処理部112は、オブジェクト(車、飛行機、又はキャラクタ等)の移動・動作演算(移動・動作シミュレーション)を行う。即ち、操作部160によりプレーヤが入力した操作データ、プログラム(移動・動作アルゴリズム)、或いは各種データ(モーションデータ)などに基づいて、オブジェクト(移動オブジェクト)をオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させる処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(各パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。ここでフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0065】
仮想カメラ制御部114は、オブジェクト空間内の所与(任意)の視点での画像を生成するための仮想カメラを制御する処理を行う。即ち、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置や視線方向を制御する処理)を行う。
【0066】
例えば仮想カメラによりオブジェクトを後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部112で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた移動経路で移動させながら予め決められた回転角度で回転させるようにしてもよい。この場合には、仮想カメラの位置(移動経路)や回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0067】
第1のオブジェクト設定処理部116は、形状が変化する物体の第1の領域に対応した第1のオブジェクトについて、当該第1のオブジェクトの構成点の高さを周期的に変化させるための処理を行う。
【0068】
第1のオブジェクト設定処理部116は、前記各構成点に対して与えられた高さ調整パラメータまたは深度情報に基づき各構成点の高さの調整を行うようにしてもよい。
【0069】
前記第1のオブジェクト設定処理部116は、仮想カメラと所定の位置関係を有するエリアを演算領域として設定し、第1のオブジェクトの各構成点が演算領域に属するか否か判断し、属さないと判断した場合には、各構成点の高さを求める処理を省略するようにしてもよい。
【0070】
第2のオブジェクト設定処理部117は、前記第1のオブジェクトの高さ変化の周期に同期させて、形状が変化する物体の第2の領域に対応した第2のオブジェクトの前記第1のオブジェクトに対する位置を周期的に変化させるための処理を行う。
【0071】
第2のオブジェクト設定処理部117は、第1のオブジェクトの所定のエリアの形状に基づいて、第2のオブジェクトの形状を決定するようにしてもよい。
【0072】
前記第2のオブジェクト設定処理部117は、
第1のオブジェクトの構成点の高さ変化の周期に同期させて、第2のオブジェクトの透明度を周期的に変化させるための処理を行うようにしてもよい。
【0073】
第3のオブジェクト設定処理部118は、第1のオブジェクトの構成点の高さ変化の周期または第2のオブジェクトの移動周期に同期させて、またはこれらのいずれかに所定時間遅延させて同期させて、第3のオブジェクトの前記第1のオブジェクトに対する位置を周期的に変化させるための処理を行う。
【0074】
第3のオブジェクト設定処理部118は、第1のオブジェクトの高さ変化の周期または第2のオブジェクトの移動周期に同期させて、またはこれらのいずれかに所定時間遅延させて同期させて、第3のオブジェクトの透明度を周期的に変化させるための処理を行う。
【0075】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。
【0076】
描画部120は、第1のオブジェクト、第2のオブジェクト、第3のオブジェクトが設定されたオブジェクト空間を仮想カメラから見た画像を描画する描画部として機能する。
【0077】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。頂点処理では、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、あるいは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(フラグメント処理)が行われる。ピクセル処理では、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内に設定された仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0078】
なお描画部120が行う頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現されてもよい。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、ハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0079】
そして描画部120は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0080】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、主記憶部172に保存される。
【0081】
テクスチャマッピングは、記憶部170のテクスチャ記憶部178に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部178からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0082】
特に本実施形態では、第2のオブジェクトを描画する際に、所与のテクスチャをマッピングする処理を行うようにしてもよい。この場合には、第2のオブジェクトに対してマッピングされるテクスチャの色分布(テクセルパターン)を動的に変化させることができる。この場合において、色分布が異なるテクスチャを動的に生成してもよいし、複数の色分布が異なるテクスチャを予め用意しておき、使用するテクスチャを動的に切り替えるようにしてもよい。またオブジェクト単位でテクスチャの色分布を変化させてもよいし、オブジェクト単位でテクスチャの色分布を変化させるようにしてもよい。
【0083】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに格納されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
【0084】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。例えば、通常αブレンディングでは、α値を合成の強さとして線形補間を行うことにより2つの色を合成した色を求める処理を行う。
【0085】
RQ=(1−α)×R1+α×R2 (1)
GQ=(1−α)×G1+α×G2 (2)
BQ=(1−α)×B1+α×B2 (3)
また合成処理が加算αブレンディングである場合を例にとれば、色合成部126は下式に従ったα合成処理を行う。
【0086】
RQ=R1+α×R2 (4)
GQ=G1+α×G2 (5)
BQ=B1+α×B2 (6)
また合成処理がα乗算である場合を例にとれば、色合成部126は下式に従ったα合成処理を行う。
【0087】
RQ=α×R1 (7)
GQ=α×G1 (8)
BQ=α×B1 (9)
また合成処理がα乗加算である場合を例にとれば、色合成部126は下式に従ったα合成処理を行う。
【0088】
RQ=α×R1+R2 (7)
GQ=α×G1+G2 (8)
BQ=α×B1+B2 (9)
ここで、R1、G1、B1は、描画バッファ172に既に描画されている画像(背景画像)の色(輝度)のR、G、B成分であり、R2、G2、B2は、描画バッファ172に描画するオブジェクト(プリミティブ)の色のR、G、B成分である。また、RQ、GQ、BQは、αブレンディングにより得られる画像の色のR、G、B成分である。なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0089】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えばRGBの各色成分の輝度を表す色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0090】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0091】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0092】
2.波の画像生成
図2は本実施の形態の海面の画像の一例である。10は沖合の海面(第1の領域)であり、20は波打ち際の海面(第2の領域)である。沖合の海面(第1の領域)10では波により水面が上下し、波打ち際の海面(第2の領域)20では、砂浜30に対して白い泡のたった白波が寄せたり引いたりしている。
【0093】
本実施の形態では、沖合の海面(第1の領域)10に対応して第1のオブジェクトを設定し、波打ち際の海面(第2の領域)20に対応して第2のオブジェクトを設定する。
【0094】
図3(A)は、波打ち際に波が寄せてきた時の画像の一例である。同図に示すように波が寄せてきた時には、白波20が砂浜のほうに長く伸びてくる画像が生成される。
【0095】
図3(B)は、波打ち際から波が引いていく時の画像の一例である。同図に示すように波が引いていく時には、白波20の長さが短くなって沖のほうに遠ざかっていく画像が生成される。
【0096】
図4は本実施の形態の第1のオブジェクトについて説明するための図である。
【0097】
本実施の形態では、第1のオブジェクトの構成点の平面座標と時間を引数とする周期関数に基づいて、周期的に変化する各構成点の高さを演算して各フレームにおける第1のオブジェクトの形状を決定する。以下本実施の形態において第1のオブジェクトの波の形状を決定する具体例について説明する。
【0098】
平面波を生成するための波メッシュ(例えば格子点でもよい)の構成点(i,j)の時刻tにおける高さをyとすると、以下の式で表すことができる。
【0099】
周期関数はk=1〜Kmaxで特定される複数の周期関数(たとえば三角関数)の合成関数として特定される。振幅パラメータAkは波成分の波高を表し、波長パラメータnkはi方向の波数(整数)及びi方向成分に対する進行方向を表し、波長パラメータmkはj方向の波数(整数)及びj方向成分に対する進行方向を表す。
【0100】
周期関数によって生成されるデカルト座標系(直交座標系)における波の形状について説明する。
【0101】
例えば周期関数がk=0の周期関数W0(210)、k=1の周期関数W1(220)、k=2の周期関数W2(230)の3つの周期関数の合成関数として構成されているとする。
【0102】
k=0の周期関数W0(210)は、波長パラメータnk=0、波長パラメータmk=1の周期関数であり、212に示すようなj方向成分のみをもつ波を表す。
【0103】
k=1の周期関数W1(220)は、波長パラメータnk=2、波長パラメータmk=0の周期関数であり、222に示すようなi方向成分のみをもつ波を表す。
【0104】
k=2の周期関数W2(230)は、波長パラメータnk=1、波長パラメータmk=2の周期関数であり、232に示すようなi方向成分とi方向成分をもつ波を表す。
【0105】
240は周期関数がk=0の周期関数W0(210)、k=1の周期関数W1(220)、k=2の周期関数W2(230)の3つの周期関数の合成関数によって特定される波の形状を示している。
【0106】
250はデカルト座標系(直交座標系)における構成点(i、j)を表している。各構成点(i、j)のy座標は上記数式(1)によって求められ、240に示すような波オブジェクトの形状が特定される。
【0107】
図5は構成点と周期関数によって生成される第1のオブジェクトの様子を示した図である。
【0108】
図6は第1のオブジェクトと第2のオブジェクトの関係を模式的に示した図である。
【0109】
本実施の形態では、第2の領域に対応した第2のオブジェクト20の第1のオブジェクト10に対する位置を第1のオブジェクト10の構成点(例えば頂点)の高さ変化の周期に同期させて周期的に変化させる。
【0110】
図7は第1のオブジェクトの構成点の高さの変化の周期と、第2のオブジェクトの移動の周期について説明するための図である。
【0111】
10−1〜10−4は、所与の構成点(ここでは第1のオブジェクトの端の点(xi、yj))の高さyの時間的な変化を示す周期関数(ここでは花地を簡単にするためにZ方向のみの変化を表している)である。12−1〜12−4は、所与の構成点(ここでは第1のオブジェクトの端の点(xi、yj))の高さyの時間的な変化を示している。
【0112】
20−2〜20−4は、第2のオブジェクトの配置の時間的な変化を示しており、22−1〜22−4は、第2のオブジェクトの代表点の位置の時間的な変化を示している。
【0113】
第1のオブジェクトの端の点(xi、yj)(波打ち際に近いほうのはし、又は第2のオブジェクトに近いほうの端)の高さは周期関数10に従って変化する。周期関数10によって所定の振幅及び周期を有し左方向に進行する波(40参照)が生成される。
【0114】
12−1は第1のオブジェクトの端点(xi、yj)の高さが平均点にある場合であり、その後端点(xi、yj)の高さは周期関数10の波形に従って徐徐に高くなり12−2で最高点に達し、その後端点(xi、yj)の高さは周期関数10の波形に従って徐徐に低くなり12−3で平均点にもどり、12−4で最低点に達する。
【0115】
すなわち12−1〜12−4が、所与の1周期における端点(xi、yj)の高さの変化を表している。
【0116】
12−1は第1のオブジェクトの端点(xi、yj)が12−1の場合の第2のオブジェクトの様子を表しており、22−1はこのときの第2のオブジェクトの代表点の位置である。
【0117】
12−2は第1のオブジェクトの端点(xi、yj)が12−2の場合の第2のオブジェクトの様子を表しており、22−2はこのときの第2のオブジェクトの代表点の位置である。
【0118】
12−3は第1のオブジェクトの端点(xi、yj)が12−3の場合の第2のオブジェクトの様子を表しており、22−3はこのときの第2のオブジェクトの代表点の位置である。
【0119】
12−4は第1のオブジェクトの端点(xi、yj)が12−4の場合の第2のオブジェクトの様子を表しており、22−4はこのときの第2のオブジェクトの代表点の位置である。
【0120】
第2のオブジェクトは、例えば第1のオブジェクトの端点(xi、yj)の高さが平均点にある場合(12−1)に基準位置に配置され(20−1参照)、その後第1のオブジェクトの端点(xi、yj)の高さが徐徐に高くなるにしたがって、第1のオブジェクトから離れる方向(50参照)に移動し、第1のオブジェクトの端点(xi、yj)の高さが最高点に達した場合(12−2)に第1のオブジェクトから最も離れた所に配置され(20−2参照)、その後第1のオブジェクトの端点(xi、yj)の高さが徐徐に低くなるに従って第1のオブジェクトに近づく方向(52、54参照)に移動し、第1のオブジェクトの端点(xi、yj)の高さが最低点に達した場合(12−4)に第1のオブジェクトに最も近い所に配置されるようにしてもよい(20−4参照)。
【0121】
すなわち第2のオブジェクトの位置は、第1のオブジェクトの構成点の高さの周期に同期して、22−1〜22−4の間を行ったり来たり移動する。
【0122】
なお第1のオブジェクトの端点の高さと第2のオブジェクトの位置関係は、端点の高さが高いときが第2のオブジェクトが離れている場合に限られない。
【0123】
第1のオブジェクトの幅が波の波長の整数倍の場合と、それ足す0.5(例えば1.5倍)の場合等、第1のオブジェクトの幅と波の波長に応じて適宜設定することができる。例えば端点の高さが低いときが第2のオブジェクトが離れている場合でもよい。
【0124】
図2に示すように、海面を第1の領域と第2の領域にわけて、第1の領域を第1のオブジェクトとして構成し、第2の領域を第2のオブジェクトとして構成し、第1のオブオブジェクトの構成点の高さの変化の周期と第2オブジェクトの移動周期を動機させることにより、沖合から進行してきた波が波打ち際で寄せたり引いたりする動作を少ない演算負荷でリアルに表現することができる。
【0125】
図8は第1のオブジェクトの端点の高さの調整について説明するための図である。第1のオブジェクトの構成点の高さは所定の周期関数に従って最高点と最低点の間で周期的に変化する。ここで第1のオブジェクトの第2のオブジェクト側の端のラインに位置する構成点(端点)の高さについてもかかる周期関数で求めることもできる。しかし端点付近は第1のオブジェクトと第2のオブジェクトの境目にあたる部分なので高さを所定の値(例えば平均点)に固定しておくようにしてもよい。このようにすることによりつなぎ目の高さが上下することによる不具合を防止することができる。
【0126】
具体的には端点が12−2の時に0の位置(12’−1)に来るように補正し、高さの変化がスムーズに移行するように所定区間14の波形を補正する。
【0127】
また端点が12−4の時に0の位置(12’−4)に来るように補正し、高さの変化がスムーズに移行するように所定区間15の波形を補正する。
【0128】
またこれ以外でも端点の高さが0以外の場合には0の位置に来るように補正し、高さの変化がスムーズに移行するように対応する所定区間の波形を補正する。
【0129】
次に第2のオブジェクトの形状の決定手法について説明する。
【0130】
第2のオブジェクトの形状は例えば板状のオブジェクトでもよいし、所与の時刻の第1のオブジェクトの所定のエリアの形状に基づいて、所与の時刻の第2のオブジェクトの形状を決定するようにしてもよい。
【0131】
例えば図6において、第1のオブジェクト10の第2のオブジェクトと重なるほうの端のライン62を含む所定のエリア60の形状に基づき第2のオブジェクトの形状を決定してもよい。例えば第2のオブジェクトとして所定のエリア60の形状を採用してもよい。
【0132】
図9は、本実施の形態の第2のオブジェクトの形状の決定手法について説明するための図である。
【0133】
本実施の形態では第1のオブジェクトの形状は周期関数に基づいて時間的に変化する。例えば310−1はゲーム時刻t1における所与のYZ断面(x=aの地点)の形状(高さの変化)を表している。このとき第2のオブジェクトの所与のYZ断面(x=aの地点)の形状(高さの変化)320−1は、所与の区間300の第1のオブジェクトの形状310−1と同じとなる。
【0134】
また例えば310−2はゲーム時刻t2における所与のYZ断面(x=aの地点)の形状(高さの変化)を表している。ここで310−2は端点の値を0に補正した時の波形である。このとき第2のオブジェクトの所与のYZ断面(x=aの地点)の形状(高さの変化)320−2は、所与の区間300の第1のオブジェクトの形状310−2と同じとなる。
【0135】
また例えば310−3はゲーム時刻t3における所与のYZ断面(x=aの地点)の形状(高さの変化)を表している。このとき第2のオブジェクトの所与のYZ断面(x=aの地点)の形状(高さの変化)320−3は、所与の区間300の第1のオブジェクトの形状310−3と同じとなる。
【0136】
また例えば310−4はゲーム時刻t4における所与のYZ断面(x=aの地点)の形状(高さの変化)を表している。ここで310−4は端点の値を0に補正した時の波形である。このとき第2のオブジェクトの所与のYZ断面(x=aの地点)の形状(高さの変化)320−4は、所与の区間300の第1のオブジェクトの形状310−4と同じとなる。
【0137】
図10(A)(B)は、本実施の形態の第1のテクスチャ及び第2のテクスチャの一例である。
【0138】
図10(A)は、第1のオブジェクトにマッピングされる第1のテクスチャであり、沖を含む波打ち際以外の海水面(波打ち際から離れた液体面)の模様である。
【0139】
図10(B)は、第2のオブジェクトにマッピングされる第2のテクスチャであり、波打ち際の海水面(波打ち際の泡だった白波)の模様である。
【0140】
なお予めテクスチャ画像を用意しておかなくても各ピクセル毎にリアルタイムに色情報を生成した図10(A)(B)に示すような画像を生成するようにしてもよい。
【0141】
図11は第1のオブジェクトの構成点の高さの変化の周期または第2のオブジェクトの移動の周期と第3のオブジェクトの移動の周期との関係について説明するための図である。
【0142】
第1のオブジェクトの構成点の高さの変化(10−1〜10−4)および第2のオブジェクトの移動(20−1〜20−4)につては、図7で説明した通りである。
【0143】
30−1〜30−4は、第3のオブジェクトの配置の時間的な変化を示しており、32−1〜32−4は、第2のオブジェクトの代表点の位置の時間的な変化を示している。
【0144】
12−1は第1のオブジェクトの端点(xi、yj)が12−1の場合の第2のオブジェクトの様子を表しており、22−1はこのときの第2のオブジェクトの代表点の位置であり、32−1はこのときの第3のオブジェクトの代表点の位置である。
【0145】
12−2は第1のオブジェクトの端点(xi、yj)が12−2の場合の第2のオブジェクトの様子を表しており、22−2はこのときの第2のオブジェクトの代表点の位置であり、32−2はこのときの第3のオブジェクトの代表点の位置である。
【0146】
12−3は第1のオブジェクトの端点(xi、yj)が12−3の場合の第2のオブジェクトの様子を表しており、22−3はこのときの第2のオブジェクトの代表点の位置であり、32−3はこのときの第3のオブジェクトの代表点の位置である。
【0147】
12−4は第1のオブジェクトの端点(xi、yj)が12−4の場合の第2のオブジェクトの様子を表しており、22−4はこのときの第2のオブジェクトの代表点の位置である、32−4はこのときの第3のオブジェクトの代表点の位置である。
【0148】
第3のオブジェクトは、例えば第1のオブジェクトの端点(xi、yj)の高さが平均点にある場合(12−1)基準位置に配置され(32−1参照)、その後第1のオブジェクトの端点(xi、yj)の高さが徐徐に高くなるにしたがって、第1のオブジェクトから離れる方向(50参照)に移動し、第1のオブジェクトの端点(xi、yj)の高さが最高点に達した場合(12−2)に第1のオブジェクトから最も離れた所に配置され(30−2参照)、その後第1のオブジェクトの端点(xi、yj)の高さが徐徐に低くなるに従って第1のオブジェクトに近づく方向(52、54参照)に移動し、第1のオブジェクトの端点(xi、yj)の高さが最低点に達した場合(12−4)に第1のオブジェクトに最も近い所に配置されるようにしてもよい(30−4参照)。
【0149】
第3のオブジェクトの位置は、第1のオブジェクトの構成点の高さの周期に同期して、32−1〜32−4の間を行ったり来たり移動する。
【0150】
また第3のオブジェクトの位置は、第1のオブジェクトの構成点の高さの周期に所定時間遅延して同期させて、32−1〜32−4の間を行ったり来たり移動させるようにしてもよい。
【0151】
また第3のオブジェクトの位置は、第2のオブジェクトの位置の移動周期に同期して、32−1〜32−4の間を行ったり来たり移動させるようにしてもよい。
【0152】
また第3のオブジェクトの位置は、第2のオブジェクトの位置の移動周期に所定時間遅延して同期させて、32−1〜32−4の間を行ったり来たり移動させるようにしてもよい。
【0153】
なお第1のオブジェクトの端点の高さと第3のオブジェクトの位置関係は、端点の高さが高いときが第3のオブジェクトが離れている場合に限られない。
【0154】
第1のオブジェクトの幅が波の波長の整数倍の場合と、それ足す0.5(例えば1.5倍)の場合等、第1のオブジェクトの幅と波の波長に応じて適宜設定することができる。例えば端点の高さが低いときが第3のオブジェクトが離れている場合でもよい。
【0155】
このように本実施の形態では、第1のオブジェクトの高さ変化の周期または第2のオブジェクトの移動周期に同期させて、またはこれらのいずれかに所定時間遅延して同期させて、各フレームにおける波のある液体面の第2の領域の地形に対応した第3のオブジェクトの位置を決定するようにしてもよい。
【0156】
第3のオブジェクトとして砂浜のぬれた様子を表すテクスチャを張ったオブジェクト(例えば板状のオブジェクトでもよい)を用意することで、第2のオブジェクトと同期して、又は少し遅延して同期して、白波がひくのにあわせて、又は少し遅れてぬれた砂がうごく様子の画像を生成することができる。
【0157】
図12(A)〜(C)は、第3のオブジェクトを使用した画像の一例を表した図である。
【0158】
図12(A)は、波打ち際に波が寄せてきた時の画像の一例である。同図に示すように波が寄せてきた時には、白波が砂浜のほうに長く伸びてくる画像が生成される。
【0159】
図12(B)は、波打ち際から波が引いていく時の画像の一例である。同図に示すように波が引いていく時には、白波520の長さが短くなって沖のほうに遠ざかっていくとともに、白波520の引いたあとに、白波520によってぬれた砂530の画像が生成される。これは例えば第3のオブジェクトとして、砂浜のぬれた様子を表すテクスチャをマッピングしたオブジェクト(例えば板状のオブジェクトでもよい)を用意することで実現することができる。
【0160】
図12(C)は、白波520の引いたあとに、白波520によってぬれた砂530が乾いていくの画像が生成される(540参照)。
【0161】
ここで例えば砂浜のぬれた様子を表すテクスチャをマッピングした第3のオブジェクトの透明度(α値)を、第1のオブジェクトの高さ変化の周期または第2のオブジェクトの移動周期に同期させて、またはこれらのいずれかに所定時間遅延して同期させて第3のテクスチャの透明度を周期的に変化させることで実現することができる。
【0162】
例えばα値に基づき加算半透明で描画する場合には、α値を1に近づけることで透明度が低くなり、色が濃くなるので砂がぬれている様子を表すことができる。逆にα値を0に近づけることで透明度が高くなり、色が薄くなるので砂が乾いている様子を表すことができる。
【0163】
従って第3のテクスチャの透明度を第1のオブジェクトの高さ変化の周期または第2のオブジェクトの移動周期に同期させて周期的に変化させることで、白波の寄せたり引いたりするのに合わせて、又はそれにすこし遅れて白波の引いた後の砂がぬれて時間がたつにつれて乾いていくの様子が繰り替えされるのを表現することができる。
【0164】
図13は、オブジェクトの構成点の高さの調整について説明するための図である。
【0165】
本実施の形態では第1のオブジェクトの構成点に高さ調整パラメータまたは深度情報が関連づけて設定されている。例えば各構成点毎に高さ調整パラメータまたは深度情報が設定されている場合でもよいし、第1のオブジェクトを複数の領域に分割し、領域単位に高さ調整パラメータまたは深度情報を設定してもよい。そして各構成点がどの領域に属するかによって高さ調整パラメータまたは深度情報を決定してもよい。
【0166】
高さ調整パラメータまたは深度情報に基づき、各構成点の高さを演算する際に使用する周期関数の振幅パラメータを変更するようにしてもよいし、周期関数は同じものを利用して周期関数で得られた高さの値に対して高さ調整パラメータまたは深度情報に基づき補正をかけるようにしてもよい。
【0167】
高さ調整パラメータまたは深度情報に基づき各構成点の高さの調整を行う際には、海底からの距離が遠い場合(深度が大きい)は海底からの距離が近い場合(深度が小さい)に比べて高さの変化が小さくなるように各フレームにおける各構成点の高さを演算するようにしてもよい。
【0168】
例えばP1は沖合に位置する構成点であり、高さ調整パラメータまたは深度情報として当該地点の海底までの距離L1が設定されているとする。またP2は波打ち際に近い所に位置する構成点であり、高さ調整パラメータまたは深度情報として当該地点の海底までの距離L2が設定されているとする。この場合波打ち際は沖に比べて海底までの距離が短いので(L1>L2なので)、P1のほうがP2に比べて高さの変化が小さくなる。
【0169】
図14は、オブジェクトの構成点の高さの演算の省略について説明するための図である。
【0170】
海は広いため仮想カメラ610から所定の距離r以上離れた所では、通常の高さの波の遠方の点のy座標の違いは、透視変換した時に2D画面座標としてはほとんど変わらず誤差として許容できる範囲である。
【0171】
従って仮想カメラと所定の位置関係(ここでは仮想カメラから半径rの範囲内)を有するエリアを演算領域620として設定し、第1のオブジェクトの各構成点が演算領域に属するか否か判断し、属さないと判断した場合には、各構成点の高さを求める処理を省略するようにしてもよい。
【0172】
従って演算領域620に属する海面の部分630の構成点については高さが演算されるが、演算領域620に属しない海面の部分640の構成点については高さの演算が省略される。
【0173】
ここでは演算領域を仮想カメラからの距離に応じて設定したが、例えばビューボリューム又はビューボリュームのXZ平面への投影領域に基づき演算領域を設定するようにしてもよい。このようにすると仮想カメラからの距離が近くても描画範囲内にない部分の構成点については高さの演算を省略することができる。
【0174】
また第1のオブジェクトと第2のオブジェクトを用いて海の画像を生成する場合に限られず、例えば第1のオブジェクトのみで海の画像を生成する場合でもよい。
【0175】
本実施の形態によれば、遠方の部分については高さの演算を省略するので演算負荷を軽減することができる。
【0176】
3.本実施の形態の処理
本実施の形態では、各フレーム毎に以下の処理を行っている。
【0177】
図15は、本実施の形態の海面の画像生成処理の流れについて説明するためのフローチャート図である。
【0178】
次に形状が変化する物体の第1の領域に対応した第1のオブジェクトについて、当該第1のオブジェクトの構成点の高さを周期的に変化させるための処理を行う(ステップS10)。
【0179】
第1のオブジェクトの端の構成点については、図8で説明したように高さを基準点に補正するようにしてもよい。
【0180】
次に当該フレームの第1のオブジェクトの所定のエリアの形状に基づいて、当該フレームの第2のオブジェクトの形状を決定する(ステップS20)。
【0181】
次に第1のオブジェクトの高さ変化の周期に同期させて、形状が変化する物体の第2の領域に対応した第2のオブジェクトの前記第1のオブジェクトに対する位置を周期的に変化させるための処理を行う(ステップS30)
次に第1のオブジェクトの構成点の高さ変化の周期に同期させて、第2のオブジェクトの透明度を周期的に変化させるための処理を行う(ステップS40)。
【0182】
次に第1のオブジェクトの構成点の高さ変化の周期または第2のオブジェクトの移動周期に同期させて、またはこれらのいずれかに所定時間遅延させて同期させて、第3のオブジェクトの前記第1のオブジェクトに対する位置を周期的に変化させるための処理を行う(ステップS50)。
【0183】
次に第1のオブジェクトの高さ変化の周期または第2のオブジェクトの移動周期に同期させて、またはこれらのいずれかに所定時間遅延させて同期させて、第3のオブジェクトの透明度を周期的に変化させるための処理を行う(ステップS60)。
【0184】
そして第1のオブジェクト、第2のオブジェクト、第3のオブジェクトが設定されたオブジェクト空間を仮想カメラから見た画像を生成する(ステップS70)。
【0185】
4.ハードウェア構成
図16に本実施形態を実現できるハードウェア構成の例を示す。メインプロセッサ900は、CD982(情報記憶媒体)に格納されたプログラム、通信インターフェース990を介してダウンロードされたプログラム、或いはROM950に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、マトリクス演算(ベクトル演算)を高速に実行する。例えばオブジェクトを移動させたり動作(モーション)させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
【0186】
ジオメトリプロセッサ904は、メインプロセッサ900上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ906は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ900のデコード処理をアクセレートする。これにより、オープニング画面やゲーム画面において、MPEG方式等で圧縮された動画像を表示できる。
【0187】
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画(レンダリング)処理を実行する。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970を利用して、描画データを描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると描画プロセッサ910は、描画データやテクスチャに基づいて、Zバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ922に描画する。また描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行う。1フレーム分の画像がフレームバッファ922に書き込まれるとその画像はディスプレイ912に表示される。
【0188】
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などのゲーム音を生成し、スピーカ932を介して出力する。ゲームコントローラ942やメモリカード944からのデータはシリアルインターフェース940を介して入力される。
【0189】
ROM950にはシステムプログラムなどが格納される。業務用ゲームシステムの場合にはROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納される。なおROM950の代わりにハードディスクを利用してもよい。RAM960は各種プロセッサの作業領域となる。DMAコントローラ970は、プロセッサ、メモリ間でのDMA転送を制御する。CDドライブ980は、プログラム、画像データ、或いは音データなどが格納されるCD982にアクセスする。通信インターフェース990はネットワーク(通信回線、高速シリアルバス)を介して外部との間でデータ転送を行う。
【0190】
なお本実施形態の各部(各手段)の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【0191】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ902、904、906、910、930に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ902、904、906、910、930は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0192】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【0193】
例えば、明細書又は図面中の記載において広義や同義な用語(テクセル値、テクセル値パターン、プリミティブ面等)として引用された用語(α値・輝度、グラディエーションパターン、ポリゴン等)は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0194】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0195】
またテクスチャのマッピング処理も、本実施形態で説明したものに限定されず、これらと均等な変換処理も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯端末等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【0196】
【図1】本実施形態の画像生成システムの機能ブロック図。
【図2】本実施の形態の海面の画像の一例である。10は沖合の海面(第1の領
【図3】図3(A)は、波打ち際に波が寄せてきた時の画像の一例であり、図3(B)は、波打ち際から波が引いていく時の画像の一例である。
【図4】本実施の形態の第1のオブジェクトについて説明するための図である。
【図5】構成点と周期関数によって生成される第1のオブジェクトの様子を示した図である。
【図6】は第1のオブジェクトと第2のオブジェクトの関係を模式的に示した図である。
【図7】図7は第1のオブジェクトの構成点の高さの変化の周期と、第2のオブジェクトの移動の周期について説明するための図である。
【図8】第1のオブジェクトの端点の高さの調整について説明するための図である。
【図9】本実施の形態の第2のオブジェクトの形状の決定手法について説明するための図である。
【図10】図10(A)(B)は、本実施の形態の第1のテクスチャ及び第2のテクスチャの一例である。
【図11】第1のオブジェクトの構成点の高さの変化の周期または第2のオブジェクトの移動の周期と第3のオブジェクトの移動の周期との関係について説明するための図である。
【図12】図12(A)〜(C)は、第3のオブジェクトを使用した画像の一例を表した図である。
【図13】オブジェクトの構成点の高さの調整について説明するための図である。
【図14】オブジェクトの構成点の高さの演算の省略について説明するための図である。
【図15】本実施の形態の海面の画像生成処理の流れについて説明するためのフローチャート図である。
【図16】ハードウェア構成例である。
【符号の説明】
【0197】
100 処理部、110 オブジェクト空間設定部、112 移動・動作処理部、114 仮想カメラ制御部、116 第1のオブジェクト設定処理部、117 第2のオブジェクト設定処理部、118 第3のオブジェクト設定処理部、120 描画部、122 隠面消去部、124 テクスチャマッピング部、126 α合成部、130 音生成部、160 操作部、170 記憶部、172 描画バッファ、174 Zバッファ、176 テクスチャ記憶部、180 情報記憶媒体、190 表示部、192 音出力部、194 携帯型情報記憶装置、196 通信部

【特許請求の範囲】
【請求項1】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
形状が変化する物体の第1の領域に対応した第1のオブジェクトについて、当該第1のオブジェクトの構成点の高さを周期的に変化させるための処理を行う第1のオブジェクト設定処理部と、
前記第1のオブジェクトの高さ変化の周期に同期させて、形状が変化する物体の第2の領域に対応した第2のオブジェクトの前記第1のオブジェクトに対する位置を周期的に変化させるための処理を行う第2のオブジェクト設定処理部と、
第1のオブジェクトと第2のオブジェクトが設定されたオブジェクト空間を仮想カメラから見た画像を生成する描画部と、
してコンピュータを機能させることを特徴とするプログラム。
【請求項2】
請求項1において、
前記第2のオブジェクト設定処理部は、
第1のオブジェクトの所定のエリアの形状に基づいて、第2のオブジェクトの形状を決定することを特徴とするプログラム。
【請求項3】
請求項1乃至2のいずれかにおいて、
前記第2のオブジェクト設定処理部は、
第1のオブジェクトの構成点の高さ変化の周期に同期させて、第2のオブジェクトの透明度を周期的に変化させるための処理を行うことを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
第1のオブジェクトの構成点の高さ変化の周期または第2のオブジェクトの移動周期に同期させて、またはこれらのいずれかに所定時間遅延させて同期させて、第3のオブジェクトの前記第1のオブジェクトに対する位置を周期的に変化させるための処理を行う第3のオブジェクト設定処理部を含み、
前記描画部は、
第1のオブジェクトと第2のオブジェクトとともに第3のオブジェクトが設定されたオブジェクト空間を仮想カメラから見た画像を生成することを特徴とするプログラム。
【請求項5】
請求項1乃至4のいずれかにおいて、
前記第3のオブジェクト設定処理部は、
第1のオブジェクトの構成点の高さ変化の周期または第2のオブジェクトの移動周期に同期させて、またはこれらのいずれかに所定時間遅延させて同期させて、第3のオブジェクトの透明度を周期的に変化させるための処理を行うことを特徴とするプログラム。
【請求項6】
請求項1乃至5のいずれかにおいて、
前記第1のオブジェクト設定処理部は、
前記各構成点に対して与えられた高さ調整パラメータまたは深度情報に基づき各構成点の高さの調整を行うことを特徴とするプログラム。
【請求項7】
請求項1乃至6のいずれかにおいて、
前記第1のオブジェクト設定処理部は、
仮想カメラと所定の位置関係を有するエリアを演算領域として設定し、第1のオブジェクトの各構成点が演算領域に属するか否か判断し、属さないと判断した場合には、各構成点の高さを求める処理を省略することを特徴とするプログラム。
【請求項8】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
波のある水面を画像を生成するための水面オブジェクトの構成点の高さを周期的に変化させるための処理を行う水面オブジェクト設定処理部と、
水面オブジェクトが設定されたオブジェクト空間を仮想カメラから見た画像を生成する描画部と、してコンピュータを機能させ、
前記水面オブジェクト設定処理部は、
仮想カメラと所定の位置関係を有するエリアを演算領域として設定し、第1のオブジェクトの各構成点が演算領域に属するか否か判断し、属さないと判断した場合には、各構成点の高さを求める処理を省略することを特徴とするプログラム。
【請求項9】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至8のいずれかのプログラムが記憶されていることを特徴とする情報記憶媒体。
【請求項10】
オブジェクト空間において仮想カメラから見える画像を生成する画像生成システムであって、
形状が変化する物体の第1の領域に対応した第1のオブジェクトについて、当該第1のオブジェクトの構成点の高さを周期的に変化させるための処理を行う第1のオブジェクト設定処理部と、
前記第1のオブジェクトの高さ変化の周期に同期させて、形状が変化する物体の第2の領域に対応した第2のオブジェクトの前記第1のオブジェクトに対する位置を周期的に変化させるための処理を行う第2のオブジェクト設定処理部と、
第1のオブジェクトと第2のオブジェクトが設定されたオブジェクト空間を仮想カメラから見た画像を生成する描画部と、
含むことを特徴とする画像生成システム。
【請求項11】
オブジェクト空間において仮想カメラから見える画像を生成する画像生成システムであって、
波のある水面を画像を生成するための水面オブジェクトの構成点の高さを周期的に変化させるための処理を行う水面オブジェクト設定処理部と、
水面オブジェクトが設定されたオブジェクト空間を仮想カメラから見た画像を生成する描画部と、を含み、
前記水面オブジェクト設定処理部は、
仮想カメラと所定の位置関係を有するエリアを演算領域として設定し、第1のオブジェクトの各構成点が演算領域に属するか否か判断し、属さないと判断した場合には、各構成点の高さを求める処理を省略することを特徴とする画像生成システム。

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


【公開番号】特開2007−164728(P2007−164728A)
【公開日】平成19年6月28日(2007.6.28)
【国際特許分類】
【出願番号】特願2005−363975(P2005−363975)
【出願日】平成17年12月16日(2005.12.16)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】