説明

情報記憶媒体、ゲームシステム及び画像生成方法

【課題】 炎などの表示物の色をリアルに表現できるゲームシステム及び情報記憶媒体を提供することにある。
【解決手段】 G成分値がR成分値の1/N(N≧2)よりも小さくなるように設定されたプリミティブを、半透明加算で描画領域に描画すると共に、半透明加算描画後の色成分値がリミット値を越えた場合に色成分値をリミット値にクランプして、炎の内炎の色と外炎の色を表現する。複数のプリミティブの集合で表される炎の第1の部分ではプリミティブの密度が高くなり第2の部分ではプリミティブの密度が低くなるようにプリミティブを発生する。各プリミティブの寿命、速度、加速度をランダムに変化させながらプリミティブを発生させる。各プリミティブがその発生後に徐々に透明になるように或いは各プリミティブのスケールがその発生後に徐々に小さくなるようにプリミティブを発生させる。発生させるプリミティブはパーティクルであることが望ましい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームシステム及び情報記憶媒体に関する。
【背景技術】
【0002】
従来より、仮想的な3次元空間であるオブジェクト空間内の所与の視点から見える画像を生成するゲームシステムが知られており、いわゆる仮想現実を体験できるものとして人気が高い。ロールプレイングゲームを楽しむことができるゲームシステムを例にとれば、プレーヤは、キャラクタ(オブジェクト)を操作してオブジェクト空間内のマップ上で移動させ、敵キャラクタと対戦したり、他のキャラクタと対話したり、様々な町を訪れたりすることでゲームを楽しむ。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平10−31410号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
さて、このようなゲームシステムでは、プレーヤの仮想現実感の向上のために、よりリアルな画像を生成することが重要な技術的課題になっている。従って、ゲーム中に発生する炎についても、リアルな画像で表現できることが望まれる。
【0005】
そして、このようなゲーム中に発生する炎を表現する手法としては、次のような手法が考えられる。
【0006】
即ち、この手法では、炎の絵のテクスチャがマッピングされた、形状の異なる複数の炎オブジェクトを予め用意しておく。そして、これらの炎オブジェクトをアニメーションのように切り替えて、炎がゆらゆらと揺れる様子を表現する。
【0007】
しかしながら、この手法では、炎をリアルに表現するためには、多数の炎オブジェクトが必要になってしまい、オブジェクトデータの使用記憶容量が増大化するという問題を招く。特に、あらゆる方向から見た場合にも矛盾の無い画像を生成するためには、見る方向に応じた異なる形状の炎オブジェクトを用意する必要があり、これは、オブジェクトデータの使用記憶容量の増大化の問題を、更に深刻なものにする。
【0008】
また、現実世界においては、炎の内炎(中心付近)は外炎(周縁部付近)に比べて温度が低いため、内炎の色と外炎の色は異なったものになる。そして、このような場所による炎の色の違いを表現するためには、炎オブジェクトにマッピングされるテクスチャの色を、炎の内炎と外炎とで異ならせる手法を採用すればよい。
【0009】
しかしながら、この手法によると、内炎と外炎の色の境界が画一的な形状になってしまい、今一つリアルな画像を生成できないという問題がある。そして、この問題を解決する手法として、例えば、炎を表すテクスチャをアニメーションさせて内炎と外炎の境界の形状を変化させる手法も考えることができる。しかしながら、このようなテクスチャアニメーションを行うと、テクスチャデータの使用記憶容量が増大化してしまい、ゲームシステムが高コスト化するという問題を招く。
【0010】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、炎などの表示物の色をリアルに表現できるゲームシステム及び情報記憶媒体を提供することにある。
【課題を解決するための手段】
【0011】
上記課題を解決するために、本発明は、画像生成を行うゲームシステムであって、第2の色成分値が第1の色成分値の1/N(N≧2)よりも小さな値になるようにその色が設定された複数のプリミティブを、半透明加算で描画領域に描画する手段と、描画領域の各ピクセルにおいて半透明加算描画後の色成分値がリミット値を越えた場合に、色成分値をリミット値にクランプする手段と、前記複数のプリミティブの集合で表される表示物の画像を含む画像を生成する手段とを含むことを特徴とする。また本発明に係る情報記憶媒体は、コンピュータにより使用可能な情報記憶媒体であって、上記手段を実行するためのプログラムを含むことを特徴とする。また本発明に係るプログラムは、コンピュータにより使用可能なプログラム(搬送波に具現化されるプログラムを含む)であって、上記手段を実行するための処理ルーチンを含むことを特徴とする。
【0012】
本発明によれば、第2の色成分値が第1の色成分値の1/Nよりも小さな値に設定された複数のプリミティブが、半透明加算で描画領域に描画されると共に、半透明加算描画後の色成分値がリミット値にクランプされる。従って、多数のプリミティブが描画されている場所においては、表示物の色は、第1、第2の色成分値が共にクランプされた時の色になり、プリミティブがあまり描画されていない場所においては、表示物の色は、第1の色成分値のみがクランプされた時の色になる。従って、本発明によれば、例えば炎の内炎と外炎の色の違いなどを表現できるようになり、これまでにないリアルな画像を生成できる。
【0013】
なお、第2の色成分値CV2は第1の色成分値CV1よりも十分に小さな値であることが望ましい。例えば、プリミティブを同時に発生する発生源の数がM個であった場合に、N≧Mとなるような値に第2の色成分値CV2<CV1/Nを設定することができる。また、第1の色成分値CV1は、リミット値をLMとした場合に、例えば、LM/2≦CV1≦LMとなるような値に設定することができる。
【0014】
また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、複数のプリミティブの集合で表される表示物の第1の部分ではプリミティブの密度が高くなり、第2の部分ではプリミティブの密度が低くなるように、複数のプリミティブを発生する手段(或いは該手段を実行するためのプログラム又は処理ルーチン)を含むことを特徴とする。
【0015】
このようにすれば、プリミティブの密度が高い第1の部分での表示物の色は、第1、第2の色成分値が共にクランプされた時の色になり、プリミティブの密度が低い第2の部分での表示物の色は、第1の色成分値のみがクランプされた時の色になる。従って、表示物の色を第1の部分と第2の部分とで異ならせることが可能になる。
【0016】
また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、各プリミティブの寿命をランダムに変化させながら、複数の発生源からプリミティブを発生する手段(或いは該手段を実行するためのプログラム又は処理ルーチン)を含むことを特徴とする。
【0017】
このようにすれば、プリミティブが、まだ消滅しておらず多数存在している場所では、第1、第2の色成分値が共にクランプされた時の色になり、多くのプリミティブが寿命で消滅してしまった場所では、第1の色成分値のみがクランプされた時の色になる。
【0018】
また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、各プリミティブの速度又は加速度をランダムに変化させながら、複数の発生源からプリミティブを発生する手段(或いは該手段を実行するためのプログラム又は処理ルーチン)を含むことを特徴とする。
【0019】
このようにすれば、各発生源から発生するプリミティブの位置がそれほどずれておらず、プリミティブの密度が高くなっている場所では、第1、第2の色成分値が共にクランプされた時の色になり、各発生源から発生するプリミティブの位置がずれており、プリミティブの密度が低くなっている場所では、第1の色成分値のみがクランプされた時の色になる。
【0020】
また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、各プリミティブがその発生後に徐々に透明になるように、複数の発生源からプリミティブを発生する手段(或いは該手段を実行するためのプログラム又は処理ルーチン)を含むことを特徴とする。
【0021】
このようにすれば、プリミティブが透明になっていない場所では、第1、第2の色成分値が共にクランプされた時の色になり、プリミティブが透明に近づいている場所では、第1の色成分値のみがクランプされた時の色になる。
【0022】
また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、各プリミティブのスケールがその発生後に徐々に小さくなるように、複数の発生源からプリミティブを発生する手段(或いは該手段を実行するためのプログラム又は処理ルーチン)を含むことを特徴とする。
【0023】
このようにすれば、プリミティブのスケールが大きい場所では、第1、第2の色成分値が共にクランプされた時の色になり、プリミティブのスケールが十分に小さい場所では、第1の色成分値のみがクランプされた時の色になる。
【0024】
また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記プリミティブが、時間経過に伴い順次発生、移動、消滅するパーティクルであることを特徴とする。
【0025】
このように、プリミティブとしてパーティクルを用いれば、表示物の外形を不定形に変化させることが可能になり、更にリアルな画像を生成できるようになる。
【図面の簡単な説明】
【0026】
【図1】本実施形態のゲームシステムのブロック図の例である。
【図2】図2(A)、(B)は、本実施形態により生成されるゲーム画像の例である。
【図3】図3(A)、(B)も、本実施形態により生成されるゲーム画像の例である。
【図4】本実施形態の手法について説明するための図である。
【図5】寿命をランダムに変化させながらプリミティブを発生させる手法について説明するための図である。
【図6】速度又は加速度をランダムに変化させながらプリミティブを発生させる手法について説明するための図である。
【図7】その発生後に徐々に透明になるようにプリミティブを発生させる手法について説明するための図である。
【図8】その発生後にそのスケールが徐々に小さくなるようにプリミティブを発生させる手法について説明するための図である。
【図9】パーティクルを3Dスプライトで表現する手法について説明するための図である。
【図10】図10(A)、(B)は、炎パーティクルの制御手法について説明するための図である。
【図11】図11(A)、(B)も、炎パーティクルの制御手法について説明するための図である。
【図12】図12(A)、(B)も、炎パーティクルの制御手法について説明するための図である。
【図13】本実施形態の詳細な処理例について示すフローチャートである。
【図14】本実施形態の詳細な処理例について示すフローチャートである。
【図15】本実施形態を実現できるハードウェアの構成の一例を示す図である。
【図16】図16(A)、(B)、(C)は、本実施形態が適用される種々の形態のシステムの例を示す図である。
【発明を実施するための形態】
【0027】
以下、本発明の好適な実施形態について図面を用いて説明する。
【0028】
1.構成
図1に、本実施形態のゲームシステム(画像生成システム)のブロック図の一例を示す。なお同図において本実施形態は、少なくとも処理部100を含めばよく(或いは処理部100と記憶部170を含めばよく)、それ以外のブロックについては任意の構成要素とすることができる。
【0029】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、マイク、或いは筺体などのハードウェアにより実現できる。
【0030】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAMなどのハードウェアにより実現できる。
【0031】
情報記憶媒体180(コンピュータにより使用可能な記憶媒体)は、プログラムやデータなどの情報を格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などのハードウェアにより実現できる。処理部100は、この情報記憶媒体180に格納される情報に基づいて本発明(本実施形態)の種々の処理を行う。即ち情報記憶媒体180には、本発明(本実施形態)の手段(特に処理部100に含まれるブロック)を実行するための情報(プログラム或いはデータ)が格納される。
【0032】
なお、情報記憶媒体180に格納される情報の一部又は全部は、システムへの電源投入時等に記憶部170に転送されることになる。また情報記憶媒体180には、本発明の処理を行うためのプログラム、画像データ、音データ、表示物の形状データ、本発明の処理を指示するための情報、或いはその指示に従って処理を行うための情報などを含ませることができる。
【0033】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、或いはHMD(ヘッドマウントディスプレイ)などのハードウェアにより実現できる。
【0034】
音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカなどのハードウェアにより実現できる。
【0035】
携帯型情報記憶装置194は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリカードや携帯型ゲーム装置などを考えることができる。
【0036】
通信部196は、外部(例えばホスト装置や他のゲームシステム)との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ、或いは通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0037】
なお本発明(本実施形態)の手段を実行するためのプログラム或いはデータは、ホスト装置(サーバー)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180に配信するようにしてもよい。このようなホスト装置(サーバー)の情報記憶媒体の使用も本発明の範囲内に含まれる。
【0038】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの各種の処理を行う。この処理部100の機能は、各種プロセッサ(CPU、DSP等)又はASIC(ゲートアレイ等)などのハードウェアや、所与のプログラム(ゲームプログラム)により実現できる。
【0039】
ここで、処理部100が行うゲーム処理としては、コイン(代価)の受け付け処理、各種モードの設定処理、ゲームの進行処理、選択画面の設定処理、オブジェクト(1又は複数のプリミティブ面)の位置や回転角度(X、Y又はZ軸回り回転角度)を求める処理、オブジェクトを動作させる処理(モーション処理)、視点の位置(仮想カメラの位置)や視線角度(仮想カメラの回転角度)を求める処理、マップオブジェクトなどのオブジェクトをオブジェクト空間へ配置する処理、ヒットチェック処理、ゲーム結果(成果、成績)を演算する処理、複数のプレーヤが共通のゲーム空間でプレイするための処理、或いはゲームオーバー処理などを考えることができる。
【0040】
また、処理部100は、上記のゲーム処理結果に基づいて例えばオブジェクト空間内において所与の視点(仮想カメラ)から見える画像を生成し、表示部190に出力する。
【0041】
更に、処理部100は、上記のゲーム処理結果に基づいて各種の音処理を行い、BGM、効果音、又は音声などの音を生成し、音出力部192に出力する。
【0042】
なお、処理部100の機能は、その全てをハードウェアにより実現してもよいし、その全てをプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【0043】
処理部100は、プリミティブ発生部102、半透明演算モード設定部104、ジオメトリ処理部106、描画部108を含む。
【0044】
ここで、プリミティブ発生部102は、炎などの表示物を表すための複数のプリミティブ(1又は複数の面、線、点)を発生する。
【0045】
より具体的には、本実施形態では、第2の色成分値が第1の色成分値の1/N(Nは2以上の整数)よりも小さな値になるようにその色が設定された複数のプリミティブを発生させる。
【0046】
また、複数のプリミティブの集合で表される表示物の第1の部分ではプリミティブの密度が高くなり、第2の部分ではプリミティブの密度が低くなるように、プリミティブを発生させている。これは、例えば、各プリミティブの寿命をランダムに変化させたり、各プリミティブの速度又は加速度をランダムに変化させながら、プリミティブを発生させることで実現できる。或いは、各プリミティブがその発生後に徐々に透明になるように各プリミティブのα値(透明度)を変化させたり、各プリミティブのスケールがその発生後に徐々に小さくなるように各プリミティブのスケールを変化させることで実現できる。
【0047】
半透明演算モード設定部104は、半透明演算モードについての設定処理を行う。例えば、半透明演算モードとしては、半透明ブレンディングモード、半透明加算モードなどがある。そして、半透明演算モード設定部104は、炎などの表示物を表すためのプリミティブを描画領域174(フレームバッファ等)に描画する際には、半透明加算で描画されるように、半透明演算モードを設定する。
【0048】
また、半透明演算モード設定部104が含むクランプモード設定部105は、描画領域174の各ピクセルにおいて半透明加算描画後の色成分値がリミット値を越えた場合に、色成分値をリミット値にクランプするクランプモードの設定処理を行う。
【0049】
なお、半透明演算モードの設定やクランプモードの設定は、モード設定のために用意されたレジスタに所与の値を書き込むことで実現される。
【0050】
また、色成分値がクランプされるリミット値としては、色成分値の最大値(例えば255)などを設定できる。そして、最大値255がリミット値として設定された場合には、例えば、半透明加算描画により色成分値が255を越えても、色成分値は255にクランプされることになる。なお、リミット値は、第1の色成分値に対してのみ設定してもよいし、第1、第2、第3の色成分値の全てに設定してもよい。
【0051】
ジオメトリ処理部106は、座標変換、クリッピング処理、透視変換、或いは光源計算などの種々のジオメトリ処理(3次元演算)を行う。そして、ジオメトリ処理後(透視変換後)の描画データ(プリミティブの定義点の位置座標、テクスチャ座標、色(輝度)データ、或いはα値等)は、主記憶部172に保存される。
【0052】
描画部108(レンダリング部)は、ジオメトリ処理により得られ、主記憶部172に保存された描画データに基づいて、テクスチャマッピングや色(輝度)の補間処理や陰面消去などを行いながら、プリミティブをフレームバッファ174に描画する処理を行う。これにより、オブジェクト空間内の所与の視点(仮想カメラ)での画像が生成されるようになる。
【0053】
そして、描画部108は、炎などを表現するプリミティブを描画領域174に描画する際には、半透明演算モード設定部104でのモード設定にしたがって、半透明加算の描画処理を行う。また、色成分値がリミット値を越えた場合には、色成分値がリミット値にクランプされるように半透明加算の描画処理を行う。
【0054】
なお、本実施形態のゲームシステムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【0055】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末を用いて生成してもよい。
【0056】
2.本実施形態の特徴
2.1 炎の内炎と外炎の表現
図2(A)、(B)、図3(A)、(B)に本実施形態により生成されるゲーム画像の例を示す。
【0057】
図2(A)では、ロウソク18に炎20が灯っている。この炎20は、ロウソク18の先端から発生する複数のプリミティブ(炎パーティクル)により表現されている。そして、炎20の周囲の小熊22、机24、絨毯26などのオブジェクトは、この炎20からの光(具体的には、プリミティブの代表位置に設定された代表光源からの光)により、陰影づけされる。また、この光により小熊22の影30なども生成される。
【0058】
図2(B)では、ロウソク18が倒れて、炎20が机(布)24に燃え移っており、炎20の全体形状が図2(A)から変化している。また、炎20の内炎(中心付近)の色は黄色になっている一方で、外炎(周縁部付近)の色は赤になっており、リアルな炎が表現されている。
【0059】
そして図3(A)、(B)では、机24に燃え移った炎20が更に燃え広がっており、炎20の全体形状の大きさも図2(B)に比べて更に大きくなっている。また、炎20の外形の形状が現実世界の炎のようにゆらゆらとリアルタイムに変化すると共に、炎20の内炎と外炎の境界の形状も、ゆらゆらとリアルタイムに変化している。
【0060】
このように本実施形態では、内炎の色は黄色くなる一方で外炎の色は赤くなると共に、内炎と外炎の境界がゆらゆらと変化する様子をリアルに表現している。そして、このような炎の色のリアルな表現を実現するために、本実施形態では、以下に説明するような手法を採用している。
【0061】
即ち、本実施形態では図4に示すように、炎20を、複数のプリミティブPR(狭義には炎パーティクル)の集合により表している。
【0062】
そして、図4のC1、C2に示すように、各プリミティブPRの色の例えばR成分値(広義には第1の成分値)に比べて、G成分値(広義には第2の成分値)を十分に小さな値に設定する。より具体的には、G成分値がR成分値の1/N(N≧2)よりも小さな値になるように、プリミティブPRの色を設定する。
【0063】
例えば、図4のC1、C2では、R成分値は、色成分値の最大値である255に設定され、G成分値は、R成分値の1/N=1/10程度である25に設定されている。なお、Nの値は、プリミティブの発生源の数などに基づいて決めることができ、例えば、プリミティブを同時に発生する発生源の数をMとした場合に、N≧MとなるようにNを設定してもよい。
【0064】
そして、本実施形態では、図4のC3に示すように、半透明演算モードの中から半透明加算モードを選択し、これらの複数のプリミティブPRを、半透明加算で描画領域(フレームバッファ)に描画する。
【0065】
更に、図4のC4に示すように、描画領域の各ピクセルにおいて、半透明加算描画後の色成分値がリミット値を越えた場合には、色成分値がリミット値にクランプされるようにモード設定を行う。
【0066】
このようにすれば、プリミティブPRの密度が高い部分(第1の部分)では、多数のプリミティブの色が半透明加算されるため、R成分値、G成分値が共に最大値255にクランプされる。従って、プリミティブPRの密度が高い部分の色は黄色になり、炎20の内炎の色を表現できる。
【0067】
一方、プリミティブPRの密度が低い部分(第2の部分)では、その色が半透明加算されるプリミティブPRの数が少ないため、R成分値のみが最大値255になり、G成分値は小さい値のままとなる。従って、プリミティブPRの密度が低い部分の色は赤になり、炎20の外炎の色を表現できる。
【0068】
このように本実施形態では、G成分値を十分に小さな値にすると共に半透明演算モードとクランプモードの選択を上手く行うことで、炎の内炎と外炎の色の表現に成功している。
【0069】
しかも、本実施形態の手法によれば、プリミティブPRの密度の違いで色が決まるため、プリミティブPRの密度がランダムに変化すると、内炎と外炎の境界の形状もランダムに変化するようになる。従って、テクスチャアニメーションなどを行うことなく、その外形や内炎と外炎の境界がリアルに変化する炎を表現できる。
【0070】
さて、図4に示すようにプリミティブPRの密度が高い部分と低い部分とを作り出すために、本実施形態では以下のような手法を採用している。
【0071】
即ち、まず、図5に示すように、プリミティブPRの寿命をランダムに変化させながら、複数の発生源からプリミティブPRを発生させる。
【0072】
このようにすれば、図5のD1に示す部分では、各発生源から発生するプリミティブのほとんどが、まだ消滅していないため、プリミティブの密度が高くなる。従って、D1に示す部分の炎の色は黄色になる。
【0073】
一方、図5のD2、D3に示す部分では、多くのプリミティブが寿命で消滅してしまうため、プリミティブの密度が低くなる。従って、このD2やD3に示す部分の炎の色は橙色や赤になる。
【0074】
更に、本実施形態では、図6に示すように、プリミティブPRの速度又は加速度をランダムに変化させながら、複数の発生源からプリミティブPRを発生させている。
【0075】
このようにすれば、図6のE1に示す部分では、各発生源から発生するプリミティブの位置がそれほどずれないため、プリミティブの密度が高くなる。従って、E1に示す部分の炎の色は黄色になる。
【0076】
一方、図6のE2、E3に示す部分では、各プリミティブの速度差、加速度差が要因となって、各発生源から発生するプリミティブの位置がずれるようになり、プリミティブの密度が低くなる。従って、このE2やE3に示す部分の炎の色は橙色や赤になる。
【0077】
また、本実施形態では、図7に示すように、プリミティブPRがその発生後に徐々に透明になるように、複数の発生源からプリミティブPRを発生させている。
【0078】
このようにすれば、図7のF1に示す部分では、半透明加算におけるプリミティブのα値が大きいため、G成分値が直ぐにリミット値(255)に達してしまう。従って、F1に示す部分の炎の色は黄色になる。
【0079】
一方、図7のF2、F3に示す部分では、半透明加算におけるプリミティブのα値が小さいため、G成分値がリミット値(255)に達しない。従って、プリミティブの密度が低い場合と実質的に等価になり、このF2やF3に示す部分の炎の色は橙色や赤になる。
【0080】
また、本実施形態では、図8に示すように、プリミティブPRのスケールがその発生後に徐々に小さくなるように、複数の発生源からプリミティブPRを発生させている。
【0081】
このようにすれば、図8のG1に示す部分では、プリミティブのスケールが大きいため、プリミティブの密度が高い場合と実質的に等価になる。従って、G1に示す部分の炎の色は黄色になる。
【0082】
一方、図8のG2、G3に示す部分では、プリミティブのスケールが小さくなるため、プリミティブの密度が低い場合と実質的に等価になる。従って、このG2やG3に示す部分の炎の色は橙色や赤になる。
【0083】
以上のように本実施形態では、プリミティブの寿命、速度、又は加速度をランダムに変化させながらプリミティブを発生させたり、プリミティブの透明度(α値)やスケールを発生後に変化させることで、プリミティブの密度が高い部分と低い部分とを作り出し、これらの部分での色を互いに異ならせることに成功している。
【0084】
さて、炎を表現するための複数のプリミティブは、時間経過に伴い順次発生、移動、消滅する炎パーティクルであることが望ましい。そして、これらの炎パーティクルを、その発生量、発生位置、速度、加速度又は寿命がランダムに変化するように制御する。
【0085】
ここで、炎パーティクルは、球のような立体形状の物であってもよいし、平面形状の物であってもよい。或いは、線や点であってもよい。
【0086】
そして、平面形状の炎パーティクルを採用する場合には、図9に示すように、視点VPと炎パーティクルFPとを結ぶ線(或いは視線ベクトル)に対して、炎パーティクルFPの主面が略垂直になるように、FPを配置することが望ましい。このように、いわゆる3Dスプライトにより炎パーティクルを表現すれば、視点VPと炎パーティクルFPとの相対的な位置関係が変化した場合にも、視点VPから見て炎パーティクルFPが常に最大の大きさで表示されるようになる。従って、炎パーティクルFPの数をそれほど増やすことなく、炎などの不定形な表示物を効率よく表現できるようになる。
【0087】
なお、図9の3Dスプライトにおいて、炎の絵が描かれている領域のα値は、0以外の値(0<α≦1)に設定されており、その他の領域のα値は、0(透明)に設定されている。このようにすることで、四角形のポリゴンを用いながらも、しずく形の形をした炎パーティクルを表現できる。また、このようにα値を設定しておくことで、図4で説明したような半透明加算が可能になる。
【0088】
次に、炎パーティクルの具体的な制御手法について説明する。
【0089】
例えば図10(A)において、ロウソク18に灯る炎20は、発生位置40から順次発生する炎パーティクルにより表現されている。これらの各炎パーティクルは、発生位置40で発生した後に、上方向(Y方向)に移動し、寿命が尽きると消滅する。このような炎パーティクルを発生位置40から次々と発生することで、図10(A)に示すような炎20を表現できる。
【0090】
そして、この場合に本実施形態では、炎パーティクルの速度、加速度又は寿命がランダムに変化する。従って、複数の炎パーティクルを同時タイミングで発生しても、これらの複数の炎パーティクルが占める範囲は、ある程度の広がり(面積)を持つようになり、ロウソク18の炎20をリアルに表現できるようになる。
【0091】
図10(B)では、ロウソク18が倒れて、炎が机(布)24に燃え移っている。この場合には、図10(B)のB1に示すように、机24の上に一定範囲の発生源領域が設定され、この発生源領域内においてランダムに選択された発生源の位置から、炎パーティクルが順次発生する。また、炎パーティクルの発生量もランダムに変化する。
【0092】
図11(A)、(B)では、B2、B3に示すように、発生源領域の範囲が更に広がっており、机24上の色々な位置の発生源から炎パーティクルが発生している。これにより、机24の上で炎が燃え広がって行く様子をリアルに表現できる。
【0093】
そして、図12(A)、(B)では、机24の全体に発生源領域の範囲が広がっており、机24の全体が炎で燃えている様子が表現される(図3(A)、(B)参照)。そして、この場合に本実施形態では、炎パーティクルの発生量、発生位置、移動状態、寿命がランダムに変化し、各炎パーティクルの位置もリアルタイムに変化する。従って、図12(A)、(B)に示すように、炎の全体形状が、あたかも現実世界の炎のようにゆらゆらと変化するようになり、非常にリアルな炎の画像を生成できるようになる。
【0094】
3.本実施形態の処理
次に、本実施形態の処理の詳細例について、図13、図14のフローチャートを用いて説明する。
【0095】
図13は、炎パーティクルの発生及び更新処理に関するフローチャートである。
【0096】
まず、炎パーティクル(プリミティブ)の発生量を、乱数に基づき決定する(ステップS11)。そして、図10(B)、図11(A)、(B)のB1、B2、B3で説明したように、炎パーティクルの発生源の位置を、発生源領域からランダムに発生量分だけ選択する(ステップS12)。そして、この選択された発生源の位置が、各炎パーティクルの初期位置Pになる。なお、発生源領域の範囲は、炎の燃え広がり具合に応じて変化することになる。
【0097】
次に、各炎パーティクルの炎の強さIFを、IF=CONST(X)となるように、発生源の種類Xに基づき決定する(ステップS13)。例えば、炎の発生源がロウソクである場合には、強さIFは比較的小さな値になり、炎の発生源が布や机の場合には、強さIFは比較的大きな値になる。
【0098】
次に、決定された炎の強さIFに基づき、発生した各炎パーティクルの速度V、加速度A、寿命LIFE、光の強度Iの初期値を設定する(ステップS14)。
【0099】
例えば、速度V(ベクトル)の初期値は下式のようになる。
【0100】
V(VX,VY,VZ)=(0,K0×IF2,0) …(1)
即ち、速度VのX、Z成分であるVX、VZは0となり、Y成分(上方向)であるVYは炎の強さIFの2乗に比例する。従って、炎の強さIFが大きい炎パーティクルほど、大きな初速度で上方向に発射されることになる。
【0101】
また、加速度A(ベクトル)の初期値は下式のようになる。
【0102】
A(AX,AY,AZ)
=(0,K1+K2×IF×RANDOM(0,1),0) …(2)
即ち、加速度AのX、Z成分であるAX、AZは0となり、Y成分(上方向)であるAYは、その炎パーティクルの炎の強さIFが大きいほど大きくなる。但し、0以上で1以下の乱数値RANDOM(0,1)により、各炎パーティクルのY方向の初期加速度AYはランダムに変化する。これにより、図6で説明したように、炎パーティクルの移動状態もランダムに変化するようになる。
【0103】
また、寿命LIFEの初期値は下式のようになる。
【0104】
LIFE=K3×IF−K4×RANDOM(0,1) …(3)
即ち、寿命LIFEは、その炎パーティクルの炎の強さIFが大きいほど長くなる。また、乱数値RANDOM(0,1)により、図5で説明したように、各炎パーティクルの寿命LIFEもランダムに変化するようになる。
【0105】
また、光の強度Iは下式のようになる。
【0106】
I=K5×IF …(4)
即ち、光の強度Iは、その炎パーティクルの炎の強さIFが大きいほど強くなる。
【0107】
次に、全ての炎パーティクル(今回のフレームで発生した炎パーティクル及び過去のフレームで発生した炎パーティクル)について、下式にしたがって速度V、加速度A、位置P(位置ベクトル)を更新する(ステップS15)。
【0108】
V(VX,VY,VZ)
=V(VX,VY,VZ)+A(AX,AY,AZ)
A(AX,AY,AZ)
=(0,K6+K7×I×RANDOM(0,1),0)
P(X,Y,Z)
=P(X,Y,Z)+V(VX,VY,VZ) …(5)
即ち、Y方向の加速度AYは、光の強度Iが大きいほど大きくなると共にランダムに変化する。
【0109】
次に、全ての炎のパーティクルについて寿命LIFEから1を引いて、LIFE=0になった炎パーティクルを消滅させる(ステップS16)。
【0110】
以上のようにして、炎パーティクルの発生・更新処理が終了する。
【0111】
図14は、炎パーティクルの描画処理に関するフローチャートである。
【0112】
まず、描画領域の全てのピクセルのR、G、B、α値を0にクリアする(ステップS21)。
【0113】
次に、図4のC3で説明したように半透明演算モード(半透明加算、半透明ブレンディング)を設定する(ステップS22)。ここでは、描画領域の色データに、図9で説明した3Dスプライトの色データが、3Dスプライトのα値(αY)を用いて半透明加算(α加算)されるように半透明演算モードを設定する。また、演算後のピクセルデータには、3Dスプライトのα値(αY)が書き込まれるように設定する。更に、図4のC4で説明したように、演算後の各色成分値が255よりも大きくなった場合には、255にクランプするように設定する。
【0114】
以上のような設定は、描画部(描画プロセッサ)に命令を指示するためのレジスタに所与の値を書き込むことなどにより実現される。
【0115】
次に、図13のステップS15で求められた炎パーティクルの位置Pに、図9の3Dスプライトを描画する(ステップS23)。
【0116】
この場合、図8で説明したように、3Dスプライトのスケールが、炎パーティクルの光の強度I、寿命LIFEが小さくなるほど小さくなるように設定する。
【0117】
また、図4のC1、C2で説明したように、3DスプライトのR成分値、G成分値、B成分値には、各々、255、25、0の値を設定する。このような値にR、G、B成分値を設定すると共に、ステップS22で説明したように各色成分値を255にクランプすることで、炎パーティクルの数が多い内炎(中心付近)では黄色になり、炎パーティクルの数が少ない外炎(周縁部付近)では赤になる炎を表現できる。
【0118】
また、図7で説明したように、3Dスプライトのα値(αY)を、炎パーティクルの発生時に最大値となり(但しLIFE<K10)、寿命LIFE=0になると0になるように設定する。
【0119】
以上のようにして、炎パーティクルの描画処理が終了し、内炎が黄色になり外炎が赤になる炎の画像が生成され、表示されることになる。
【0120】
4.ハードウェア構成
次に、本実施形態を実現できるハードウェアの構成の一例について図15を用いて説明する。
【0121】
メインプロセッサ900は、CD982(情報記憶媒体)に格納されたプログラム、通信インターフェース990を介して転送されたプログラム、或いはROM950(情報記憶媒体の1つ)に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などの種々の処理を実行する。
【0122】
コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算(ベクトル演算)を高速に実行する。例えば、オブジェクトを移動させたり動作(モーション)させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
【0123】
ジオメトリプロセッサ904は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算(ベクトル演算)を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ900で動作するプログラムが、その処理をジオメトリプロセッサ904に指示する。
【0124】
データ伸張プロセッサ906は、圧縮された画像データや音データを伸張するデコード処理を行ったり、メインプロセッサ900のデコード処理をアクセレートする処理を行う。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、所与の画像圧縮方式で圧縮された動画像を表示できるようになる。なお、デコード処理の対象となる画像データや音データは、ROM950、CD982に格納されたり、或いは通信インターフェース990を介して外部から転送される。
【0125】
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画(レンダリング)処理を高速に実行するものである。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970の機能を利用して、オブジェクトデータを描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると、描画プロセッサ910は、これらのオブジェクトデータやテクスチャに基づいて、Zバッファなどを利用した陰面消去を行いながら、オブジェクトをフレームバッファ922に高速に描画する。また、描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行うことができる。そして、1フレーム分の画像がフレームバッファ922に書き込まれると、その画像はディスプレイ912に表示される。
【0126】
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などの高品位のゲーム音を生成する。生成されたゲーム音は、スピーカ932から出力される。
【0127】
ゲームコントローラ942からの操作データや、メモリカード944からのセーブデータ、個人データは、シリアルインターフェース940を介してデータ転送される。
【0128】
ROM950にはシステムプログラムなどが格納される。なお、業務用ゲームシステムの場合には、ROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納されることになる。なお、ROM950の代わりにハードディスクを利用するようにしてもよい。
【0129】
RAM960は、各種プロセッサの作業領域として用いられる。
【0130】
DMAコントローラ970は、プロセッサ、メモリ(RAM、VRAM、ROM等)間でのDMA転送を制御するものである。
【0131】
CDドライブ980は、プログラム、画像データ、或いは音データなどが格納されるCD982(情報記憶媒体)を駆動し、これらのプログラム、データへのアクセスを可能にする。
【0132】
通信インターフェース990は、ネットワークを介して外部との間でデータ転送を行うためのインターフェースである。この場合に、通信インターフェース990に接続されるネットワークとしては、通信回線(アナログ電話回線、ISDN)、高速シリアルバスなどを考えることができる。そして、通信回線を利用することでインターネットを介したデータ転送が可能になる。また、高速シリアルバスを利用することで、他のゲームシステムとの間でのデータ転送が可能になる。
【0133】
なお、本発明の各手段は、その全てを、ハードウェアのみにより実行してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実行してもよい。或いは、ハードウェアとプログラムの両方により実行してもよい。
【0134】
そして、本発明の各手段をハードウェアとプログラムの両方により実行する場合には、情報記憶媒体には、本発明の各手段をハードウェアを利用して実行するためのプログラムが格納されることになる。より具体的には、上記プログラムが、ハードウェアである各プロセッサ902、904、906、910、930等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ902、904、906、910、930等は、その指示と渡されたデータとに基づいて、本発明の各手段を実行することになる。
【0135】
図16(A)に、本実施形態を業務用ゲームシステムに適用した場合の例を示す。プレーヤは、ディスプレイ1100上に映し出されたゲーム画像を見ながら、レバー1102、ボタン1104等を操作してゲームを楽しむ。内蔵されるシステムボード(サーキットボード)1106には、各種プロセッサ、各種メモリなどが実装される。そして、本発明の各手段を実行するための情報(プログラム或いはデータ)は、システムボード1106上の情報記憶媒体であるメモリ1108に格納される。以下、この情報を格納情報と呼ぶ。
【0136】
図16(B)に、本実施形態を家庭用のゲームシステムに適用した場合の例を示す。プレーヤはディスプレイ1200に映し出されたゲーム画像を見ながら、ゲームコントローラ1202、1204を操作してゲームを楽しむ。この場合、上記格納情報は、本体システムに着脱自在な情報記憶媒体であるCD1206、或いはメモリカード1208、1209等に格納されている。
【0137】
図16(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に伝送し端末において出力することになる。
【0138】
なお、図16(C)の構成の場合に、本発明の各手段を、ホスト装置(サーバー)と端末とで分散して実行するようにしてもよい。また、本発明の各手段を実行するための上記格納情報を、ホスト装置(サーバー)の情報記憶媒体と端末の情報記憶媒体に分散して格納するようにしてもよい。
【0139】
またネットワークに接続する端末は、家庭用ゲームシステムであってもよいし業務用ゲームシステムであってもよい。そして、業務用ゲームシステムをネットワークに接続する場合には、業務用ゲームシステムとの間で情報のやり取りが可能であると共に家庭用ゲームシステムとの間でも情報のやり取りが可能な携帯型情報記憶装置(メモリカード、携帯型ゲーム装置)を用いることが望ましい。
【0140】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【0141】
例えば、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0142】
また、本実施形態では、第1の色成分値がR成分値であり第2の色成分値がG成分値である場合について説明したが、本発明はこれに限定されない。例えば、第1の色成分値をG、B成分値にしたり、第2の色成分値をR、B成分値にすることもできる。また、RGB方式とは異なる方式(例えばYUV方式)で色成分値を表してもよい。更に、設定される色成分の値も図4などで説明した値に限定されない。
【0143】
また、表示物の第1の部分ではプリミティブの密度が高くなり、第2の部分ではプリミティブの密度が低くなるように、プリミティブを発生させる手法も、図5〜図8で説明した手法が特に望ましいが、これに限定されるものではない。
【0144】
また、炎のなどの表示物を表すプリミティブはパーティクルであることが特に望ましいが、本発明のプリミティブはパーティクルに限定されない。
【0145】
また、プリミティブの描画により生成される表示物は炎に限定されず、例えば、花火、爆発、稲光等、リアルタイムに形が変形する種々の表示物を表現できる。
【0146】
また、パーティクルは、図9に示すような3Dスプライトで表現することが望ましいが、立体オブジェクト、線、点で表現してもよい。
【0147】
また、パーティクルの制御手法も、図10(A)〜図12(B)、図13で説明した手法に限定されず、種々の変形実施が可能である。
【0148】
また本発明は種々のゲーム(格闘ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、競争ゲーム、ロールプレイングゲーム、音楽演奏ゲーム、ダンスゲーム等)に適用できる。
【0149】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々のゲームシステム(画像生成システム)に適用できる。
【符号の説明】
【0150】
PR プリミティブ
20 炎
100 処理部
102 プリミティブ発生部
104 半透明演算モード設定部
105 クランプモード設定部
106 ジオメトリ処理部
108 描画部
110 半透明加算部
160 操作部
170 記憶部
172 主記憶部
174 描画領域
180 情報記憶媒体
190 表示部
192 音出力部
194 携帯型情報記憶装置
196 通信部

【特許請求の範囲】
【請求項1】
画像生成を行うゲームシステムであって、
第2の色成分値が第1の色成分値の1/N(N≧2)よりも小さな値になるようにその色が設定された複数のプリミティブを、半透明加算で描画領域に描画する手段と、
描画領域の各ピクセルにおいて半透明加算描画後の色成分値がリミット値を越えた場合に、色成分値をリミット値にクランプする手段と、
前記複数のプリミティブの集合で表される表示物の画像を含む画像を生成する手段と、
を含むことを特徴とするゲームシステム。
【請求項2】
請求項1において、
複数のプリミティブの集合で表される表示物の第1の部分ではプリミティブの密度が高くなり、第2の部分ではプリミティブの密度が低くなるように、複数のプリミティブを発生する手段を含むことを特徴とするゲームシステム。
【請求項3】
請求項1又は2において、
各プリミティブの寿命をランダムに変化させながら、複数の発生源からプリミティブを発生する手段を含むことを特徴とするゲームシステム。
【請求項4】
請求項1乃至3のいずれかにおいて、
各プリミティブの速度又は加速度をランダムに変化させながら、複数の発生源からプリミティブを発生する手段を含むことを特徴とするゲームシステム。
【請求項5】
請求項1乃至4のいずれかにおいて、
各プリミティブがその発生後に徐々に透明になるように、複数の発生源からプリミティブを発生する手段を含むことを特徴とするゲームシステム。
【請求項6】
請求項1乃至5のいずれかにおいて、
各プリミティブのスケールがその発生後に徐々に小さくなるように、複数の発生源からプリミティブを発生する手段を含むことを特徴とするゲームシステム。
【請求項7】
請求項1乃至6のいずれかにおいて、
前記プリミティブが、時間経過に伴い順次発生、移動、消滅するパーティクルであることを特徴とするゲームシステム。
【請求項8】
コンピュータが使用可能な情報記憶媒体であって、
第2の色成分値が第1の色成分値の1/N(N≧2)よりも小さな値になるようにその色が設定された複数のプリミティブを、半透明加算で描画領域に描画する手段と、
描画領域の各ピクセルにおいて半透明加算描画後の色成分値がリミット値を越えた場合に、色成分値をリミット値にクランプする手段と、
前記複数のプリミティブの集合で表される表示物の画像を含む画像を生成する手段と、
を実行するためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項9】
請求項8において、
複数のプリミティブの集合で表される表示物の第1の部分ではプリミティブの密度が高くなり、第2の部分ではプリミティブの密度が低くなるように、複数のプリミティブを発生する手段を実行するためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項10】
請求項8又は9において、
各プリミティブの寿命をランダムに変化させながら、複数の発生源からプリミティブを発生する手段を実行するためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項11】
請求項8乃至10のいずれかにおいて、
各プリミティブの速度又は加速度をランダムに変化させながら、複数の発生源からプリミティブを発生する手段を実行するためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項12】
請求項8乃至11のいずれかにおいて、
各プリミティブがその発生後に徐々に透明になるように、複数の発生源からプリミティブを発生する手段を実行するためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項13】
請求項8乃至12のいずれかにおいて、
各プリミティブのスケールがその発生後に徐々に小さくなるように、複数の発生源からプリミティブを発生する手段を実行するためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項14】
請求項8乃至13のいずれかにおいて、
前記プリミティブが、時間経過に伴い順次発生、移動、消滅するパーティクルであることを特徴とする情報記憶媒体。

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


【公開番号】特開2009−285477(P2009−285477A)
【公開日】平成21年12月10日(2009.12.10)
【国際特許分類】
【出願番号】特願2009−205623(P2009−205623)
【出願日】平成21年9月7日(2009.9.7)
【分割の表示】特願2000−59132(P2000−59132)の分割
【原出願日】平成12年3月3日(2000.3.3)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】