(57)【特許請求の範囲】
【請求項１】
画像生成を行う画像生成システムであって、
第１〜第Ｍのパーティクル・エリアの各パーティクル・エリアにおいて、所与の寿命で消滅する複数のパーティクル・プリミティブを発生させる処理を行うパーティクル処理手段と、
前記第１〜第Ｍのパーティクル・エリアについての描画順序を決定する描画順序決定手段と、
描画順序の優先度の高いパーティクル・エリアから順に、該パーティクル・エリアで発生したパーティクル・プリミティブを描画する手段とを含み、
前記描画順序決定手段が、
前記第１〜第Ｍのパーティクル・エリアを区分けする第１〜第Ｎのプリミティブ面の中の少なくとも１つのプリミティブ面と仮想カメラの向きとの相対的な方向関係に応じて、前記第１〜第Ｍのパーティクル・エリアについての描画順序、或いは前記第１〜第Ｍのパーティクル・エリア及び前記第１〜第Ｎのプリミティブ面についての描画順序を決定することを特徴とする画像生成システム。
【請求項２】
請求項１において、
前記パーティクル処理手段が、
前記第１〜第Ｍのパーティクル・エリアの中の第Ｌ（１≦Ｌ≦Ｍ）のパーティクル・エリアで発生したパーティクル・プリミティブが、該第Ｌのパーティクル・エリア内で移動するように、その移動を制限することを特徴とする画像生成システム。
【請求項３】
請求項２において、
前記パーティクル処理手段が、
パーティクル・プリミティブの初期速度及び寿命の少なくとも一方の制御により、パーティクル・プリミティブの移動を制限することを特徴とする画像生成システム。
【請求項４】
第１〜第Ｍのパーティクル・エリアの各パーティクル・エリアにおいて、所与の寿命で消滅する複数のパーティクル・プリミティブを発生させる処理を行うパーティクル処理手段と、
前記第１〜第Ｍのパーティクル・エリアについての描画順序を決定する描画順序決定手段と、
描画順序の優先度の高いパーティクル・エリアから順に、該パーティクル・エリアで発生したパーティクル・プリミティブを描画する手段としてコンピュータを機能させ、
前記描画順序決定手段が、
前記第１〜第Ｍのパーティクル・エリアを区分けする第１〜第Ｎのプリミティブ面の中の少なくとも１つのプリミティブ面と仮想カメラの向きとの相対的な方向関係に応じて、前記第１〜第Ｍのパーティクル・エリアについての描画順序、或いは前記第１〜第Ｍのパーティクル・エリア及び前記第１〜第Ｎのプリミティブ面についての描画順序を決定することを特徴とするプログラム。
【請求項５】
請求項４において、
前記パーティクル処理手段が、
前記第１〜第Ｍのパーティクル・エリアの中の第Ｌ（１≦Ｌ≦Ｍ）のパーティクル・エリアで発生したパーティクル・プリミティブが、該第Ｌのパーティクル・エリア内で移動するように、その移動を制限することを特徴とするプログラム。
【請求項６】
請求項５において、
前記パーティクル処理手段が、
パーティクル・プリミティブの初期速度及び寿命の少なくとも一方の制御により、パーティクル・プリミティブの移動を制限することを特徴とするプログラム。
【請求項７】
コンピュータにより読み取り可能な情報記憶媒体であって、請求項４乃至６のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像生成システム、プログラム及び情報記憶媒体に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
従来より、仮想的な３次元空間であるオブジェクト空間内において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。ロールプレイングゲーム（ＲＰＧ）を楽しむことができる画像生成システムを例にとれば、プレーヤは、自身の分身であるキャラクタ（オブジェクト）を操作してオブジェクト空間内のマップ上で移動させ、敵キャラクタと対戦したり、他のキャラクタと対話したり、様々な町を訪れたりすることでゲームを楽しむ。
【０００３】
さて、このような画像生成システムでは、プレーヤの仮想現実感の向上のために、よりリアルな画像を生成することが重要な課題になっている。従って、ゲーム中に発生する炎や煙などの不定形な表示物についても、リアルな画像で表現できることが望まれる。
【０００４】
そして、このような炎などの不定形な表示物を表現する手法としては、以下に述べるような手法が考えられる。
【０００５】
第１の手法では、炎の絵のテクスチャがマッピングされた炎ポリゴンを用いて、炎を表現する。
【０００６】
しかしながら、この第１の手法では、種々の方向から炎ポリゴンを見た場合に、炎ポリゴンの形状が平面的であることがプレーヤに知られてしまい、プレーヤの仮想現実感を減退させてしまう。
【０００７】
第２の手法では、いわゆるパーティクルシステムを用いる。即ち、位置や色などの属性情報を持ち所与の規則に従って発生、移動、消滅する炎パーティクルの集合により、不定形な形の炎を表現する。
【０００８】
しかしながら、このようなパーティクルシステムには、画像生成システムの処理負荷が非常に重くなるという欠点がある。
【０００９】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、表示物のリアルな画像を少ない処理負荷で生成できる画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【００１０】
【課題を解決するための手段】
上記課題を解決するために、本発明は、画像生成を行う画像生成システムであって、第１〜第Ｎのプリミティブ面を含むオブジェクトを、オブジェクト空間に設定する手段と、前記オブジェクトが含む前記第１〜第Ｎのプリミティブ面の中の少なくとも１つのプリミティブ面と仮想カメラの向きとの相対的な方向関係に応じて、前記第１〜第Ｎのプリミティブ面についての描画順序を決定する手段と、決定された描画順序で前記第１〜第Ｎのプリミティブ面を描画する手段とを含むことを特徴とする。また本発明に係るプログラムは、コンピュータにより使用可能なプログラム（情報記憶媒体又は搬送波に具現化されるプログラム）であって、上記手段をコンピュータに実現させる（上記手段としてコンピュータを機能させる）ことを特徴とする。また本発明に係る情報記憶媒体は、コンピュータにより読み取り可能（使用可能）な情報記憶媒体であって、上記手段をコンピュータに実現させる（上記手段としてコンピュータを機能させる）ためのプログラムを含むことを特徴とする。
【００１１】
本発明によれば、第１〜第Ｎのプリミティブ面を含むオブジェクトがオブジェクト空間に設定（配置）され、このオブジェクト空間において仮想カメラから見える画像が生成される。
【００１２】
そして本発明によれば、オブジェクトのプリミティブ面と仮想カメラの向きとの相対的な方向関係（角度又は内積値等）に応じて、第１〜第Ｎのプリミティブ面についての描画順序（ソート順序）が決定され、決定された描画順序で第１〜第Ｎのプリミティブ面が描画される。
【００１３】
このように本発明では、プリミティブ面と仮想カメラの向きとの相対的な方向関係を判断するだけで、プリミティブ面の描画順序を決定できる。従って、奥行き値等に基づいて描画順序を決定する手法に比べて、格段に少ない処理負荷でプリミティブ面の描画順序を決定できるようになる。
【００１４】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、前記第１〜第Ｎのプリミティブ面がα合成されながら前記描画順序で描画されることを特徴とする。
【００１５】
このようにすれば、プリミティブ面の矛盾の無いα合成処理を実現できる。
【００１６】
なお、プリミティブ面に設定するα値についても、プリミティブ面と仮想カメラの向きとの相対的な方向関係に応じて決定してもよい。
【００１７】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、前記オブジェクトが、前記第１〜第Ｎのプリミティブ面に交差する第Ｊのプリミティブ面を含み、前記第Ｊのプリミティブ面が先に描画された後に、前記第１〜第Ｎのプリミティブ面が描画されることを特徴とする。
【００１８】
このようにすれば、第Ｊのプリミティブ面については描画順序を決定する処理が不要になり、処理負荷を軽減できる。
【００１９】
なお、この場合に、複数の第１〜第Ｎのプリミティブ面が基準線から放射状に配置される構成のオブジェクトを採用してもよい。また、第Ｊのプリミティブ面は、第１〜第Ｎのプリミティブ面の端辺に接するように交差してもよいし、第１〜第Ｎのプリミティブ面の上端辺と下端辺の中間で交差するようにしてもよい。
【００２０】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、前記第１〜第Ｎのプリミティブ面が基準線から放射状に配置され、前記第１〜第Ｎのプリミティブ面により区分けされる第１〜第Ｍのパーティクル・エリアにおいて、所与の寿命で消滅する複数のパーティクル・プリミティブを発生させることを特徴とする。
【００２１】
このようにすれば、単にプリミティブ面だけでオブジェクトを構成する場合に比べて、よりボリューム感があり、立体的に見える表示物を表現できるようになる。
【００２２】
また本発明は、画像生成を行う画像生成システムであって、第１〜第Ｍのパーティクル・エリアの各パーティクル・エリアにおいて、所与の寿命で消滅する複数のパーティクル・プリミティブを発生させる処理を行う手段と、前記第１〜第Ｍのパーティクル・エリアについての描画順序を決定する手段と、描画順序の優先度の高いパーティクル・エリアから順に、該パーティクル・エリアで発生したパーティクル・プリミティブを描画する手段とを含むことを特徴とする。また本発明に係るプログラムは、コンピュータにより使用可能なプログラム（情報記憶媒体又は搬送波に具現化されるプログラム）であって、上記手段をコンピュータに実現させる（上記手段としてコンピュータを機能させる）ことを特徴とする。
また本発明に係る情報記憶媒体は、コンピュータにより読み取り可能（使用可能）な情報記憶媒体であって、上記手段をコンピュータに実現させる（上記手段としてコンピュータを機能させる）ためのプログラムを含むことを特徴とする。
【００２３】
本発明によれば、例えば第Ｉのパーティクル・エリアの描画順序の優先度が最も高い場合には、まず、第Ｉのパーティクル・エリアで発生したパーティクル・プリミティブについての描画が行われる。そして、その後に、次に描画順序の優先度が高いパーティクル・エリアで発生したパーティクル・プリミティブについての描画が行われるようになる。
【００２４】
このようにすれば、全てのパーティクル・プリミティブを一度にソートして描画する手法に比べて、描画順序の決定処理の負荷を格段に軽減できる。
【００２５】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、前記第１〜第Ｍのパーティクル・エリアを区分けする第１〜第Ｎのプリミティブ面の中の少なくとも１つのプリミティブ面と仮想カメラの向きとの相対的な方向関係に応じて、前記第１〜第Ｍのパーティクル・エリアについての描画順序、或いは前記第１〜第Ｍのパーティクル・エリア及び前記第１〜第Ｎのプリミティブ面についての描画順序が決定されることを特徴とする。
【００２６】
このようにすれば、プリミティブ面と仮想カメラの向きとの相対的な方向関係を判断するだけで、パーティクル・エリアやプリミティブ面についての描画順序を決定できる。従って、奥行き値等に基づいて描画順序を決定する手法に比べて、格段に少ない処理負荷でパーティクル・エリアやプリミティブ面の描画順序を決定できるようになる。
【００２７】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、前記第１〜第Ｍのパーティクル・エリアの中の第Ｌ（１≦Ｌ≦Ｍ）のパーティクル・エリアで発生したパーティクル・プリミティブが、該第Ｌのパーティクル・エリア内で移動するように、その移動が制限されることを特徴とする。
【００２８】
このようにすれば、第Ｌのパーティクル・エリアで発生したパーティクル・プリミティブが、他のパーティクル・エリアに進入してしまう事態を防止でき、誤った描画順序でパーティクル・プリミティブが描画されてしまう不具合を防止できる。
【００２９】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、パーティクル・プリミティブの初期速度及び寿命の少なくとも一方の制御により、パーティクル・プリミティブの移動を制限することを特徴とする。
【００３０】
このようにすれば、初期速度や寿命を制限するだけという負荷の少ない処理で、パーティクル・プリミティブの移動を制限できるようになる。
【００３１】
なお本発明では、第１〜第Ｎのプリミティブ面を含むオブジェクトを、オブジェクト空間に設定し、前記オブジェクトが含む前記第１〜第Ｎのプリミティブ面の中の少なくとも１つのプリミティブ面と仮想カメラの向きとの相対的な方向関係に応じて、前記第１〜第Ｎのプリミティブ面の描画順序を決定し、決定された描画順序で前記第１〜第Ｎのプリミティブ面を描画するようにしてもよい。
【００３２】
【発明の実施の形態】
以下、本実施形態について図面を用いて説明する。
【００３３】
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を何ら限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００３４】
１．構成
図１に、本実施形態の画像生成システム（ゲームシステム）の機能ブロック図の一例を示す。なお同図において本実施形態は、少なくとも処理部１００を含めばよく（或いは処理部１００と記憶部１７０を含めばよく）、それ以外のブロックについては任意の構成要素とすることができる。
【００３５】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、マイク、或いは筺体などのハードウェアにより実現できる。
【００３６】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭなどのハードウェアにより実現できる。
【００３７】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などのハードウェアにより実現できる。処理部１００は、この情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本発明（本実施形態）の種々の処理を行う。即ち情報記憶媒体１８０には、本発明（本実施形態）の手段（特に処理部１００に含まれるブロック）をコンピュータに実現（実行、機能）させるためのプログラムが格納され、このプログラムは、例えば１又は複数のモジュール（オブジェクト指向におけるオブジェクトも含む）を含む。
【００３８】
なお、情報記憶媒体１８０に格納される情報の一部又は全部は、システムへの電源投入時等に記憶部１７０に転送されることになる。また情報記憶媒体１８０には、本発明の処理を行うためのプログラム、画像データ、音データ、表示物の形状データ、本発明の処理を指示するための情報、或いはその指示に従って処理を行うための情報などを含ませることができる。
【００３９】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、或いはＨＭＤ（ヘッドマウントディスプレイ）などのハードウェアにより実現できる。
【００４０】
音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカなどのハードウェアにより実現できる。
【００４１】
携帯型情報記憶装置１９４は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置１９４としては、メモリカードや携帯型ゲーム装置などを考えることができる。
【００４２】
通信部１９６は、外部（例えばホスト装置や他の画像生成システム）との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ、或いは通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００４３】
なお本発明（本実施形態）の各手段を実現（実行、機能）するためのプログラム（データ）は、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０に配信するようにしてもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含まれる。
【００４４】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの各種の処理を行う。この場合、処理部１００は、記憶部１７０内の主記憶部１７２をワーク領域として使用して、各種の処理を行う。
【００４５】
ここで、処理部１００が行う処理としては、コイン（代価）の受け付け処理、各種モードの設定処理、ゲームの進行処理、選択画面の設定処理、オブジェクト（１又は複数のプリミティブ）の位置や回転角度（Ｘ、Ｙ又はＺ軸回り回転角度）を求める処理、オブジェクトを動作させる処理（モーション処理）、視点の位置（仮想カメラの位置）や視線角度（仮想カメラの回転角度）を求める処理、マップオブジェクトなどのオブジェクトをオブジェクト空間へ配置する処理、ヒットチェック処理、ゲーム結果（成果、成績）を演算する処理、複数のプレーヤが共通のゲーム空間でプレイするための処理、或いはゲームオーバー処理などを考えることができる。
【００４６】
処理部１００は、オブジェクト空間設定部１１０、α値設定部１１２、パーティクル処理部１１４、描画順序決定部１１６（ソート部）、描画部１２０を含む。なお、処理部１００に、これらの全ての機能ブロック１１０〜１２０を含ませる必要はなく、一部の機能ブロックを省略する構成にしてもよい。
【００４７】
ここでオブジェクト空間設定部１１０は、マップなどの各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間内に設定（配置）するための処理を行う。より具体的には、ワールド座標系でのオブジェクトの位置や回転角度（方向）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転）でオブジェクトを配置する。
【００４８】
そして本実施形態のオブジェクト空間設定部１１０は、基準線から放射状に配置された複数のプリミティブ面（ポリゴン、自由曲面又はサブディビジョンサーフェス等）を含むオブジェクト（交差する複数のプリミティブ面で構成されるオブジェクト）をオブジェクト空間に設定配置している。本実施形態では、このような形状のオブジェクトを用いて、例えば炎、煙などの不定形な表示物のリアルな表現に成功している。
【００４９】
なお、このオブジェクトに、放射状に配置された複数のプリミティブ面に交差するプリミティブ面（ベース・プリミティブ面。広義には第Ｊのプリミティブ面。以下の説明でも同様）を含ませてもよい。このようなプリミティブ面を設けることで、オブジェクトを上方向から見た場合にも、一定の面積を占める画像が表示されるようになり、生成される画像のリアル度を増すことができる。
【００５０】
α値設定部１１２は、オブジェクトが含む１又は複数のプリミティブ面と仮想カメラの向き（例えば視線方向）との相対的な方向関係（プリミティブ面の向きと仮想カメラの向きの相対的な関係であり、これらの向きのなす角度や、これらの向きにより得られる内積値や、これらの角度、内積値と数学的に均等なパラメータ等により判断される関係）に応じて、プリミティブ面のα値を設定する。
【００５１】
より具体的には、例えば、仮想カメラの向きを表すベクトル（向きを表す３次元ベクトルでもよいし、この３次元ベクトルを所与の平面に投影した２次元ベクトルでもよい）と、プリミティブ面の向きを表すベクトル（プリミティブ面に沿った方向のベクトルでもよいし、プリミティブ面に直交するベクトルでもよい。また３次元ベクトルでもよいし、２次元ベクトルでもよい）とのなす角度（これらのベクトルの内積値）に基づいてα値を求め、このα値を、代表α値としてプリミティブ面自体に与えたり、或いは頂点α値としてプリミティブ面の頂点に与える。
【００５２】
この場合に本実施形態では、オブジェクトのプリミティブ面（プリミティブ面に平行なベクトル）と仮想カメラの向き（視線方向）とが平行になるにつれて、そのプリミティブ面がより透明になるようなα値を、そのプリミティブ面に設定する。別の言い方をすれば、オブジェクトのプリミティブ面と仮想カメラの向きとが直交するにつれて、そのプリミティブ面がより不透明になるようなα値を、そのプリミティブ面に設定する。
【００５３】
なお、α値（Ａ値）は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度（透明度、不透明度と等価）、バンプ情報などとして使用できる。
【００５４】
パーティクル処理部１１４は、その形状が変形する不定形な表示物（例えば炎、煙、水、爆発）を表現するためのパーティクル・プリミティブ（例えば炎パーティクルや煙パーティクルのプリミティブ）を、時間経過に伴い順次発生させたり、移動させたり、消滅させたりする処理を行う。より具体的には、パーティクル・プリミティブの発生量、発生位置、移動状態（速度、加速度等）又は寿命等をランダムに変化させる処理を行う。これにより、炎などの不定形な表示物もリアルに表現できる。
【００５５】
そして本実施形態のパーティクル処理部１１４は、複数のパーティクル・エリア（パーティクル存在エリア）の各パーティクル・エリアにおいて、所与の寿命に消滅する複数のパーティクル・プリミティブを発生させる処理を行う。また、これらのパーティクル・プリミティブが、発生したパーティクル・エリアの外に出ないように、その移動を制限するための処理も行う。
【００５６】
なお、基準線から放射状に配置された複数のプリミティブ面でオブジェクトが構成される場合には、これらのプリミティブ面を用いて、パーティクル・エリアを区分けすることができる。
【００５７】
また、パーティクル・プリミティブは、炎や煙などの絵のテクスチャがマッピングされたプリミティブ面（スプライトポリゴン）で表現してもよいし、プリミティブ点やプリミティブ線などで表現してもよい。
【００５８】
描画順序決定部１１６は、オブジェクトが含む１又は複数のプリミティブ面と仮想カメラの向きとの相対的な方向関係に応じて、オブジェクトのプリミティブ面についての描画順序を決定する。そして、決定された描画順序でプリミティブ面をソートする。また描画順序決定部１１６は、上述のパーティクル・エリアについての描画順序も決定する。
【００５９】
この場合に、プリミティブ面と仮想カメラの向きとの相対的な方向関係（内積値）がα値設定部１１２により求められていている場合には、この求められた相対的な方向関係（内積値）に基づいて、プリミティブ面やパーティクル・エリアについての描画順序を決定することが望ましい。このようにすることで、処理負荷を軽減できる。
【００６０】
また、基準線から放射状に配置された複数のプリミティブ面を含むオブジェクトが複数ある場合には、これらの複数のオブジェクトの描画順序についても描画順序決定部１１６が決定する。より具体的には、例えばＺソート法（奥行き値によるソート）により、これらのオブジェクトをソートする。
【００６１】
描画部１２０は、処理部１００で行われる種々の処理の結果に基づいて画像の描画処理を行う。例えば、いわゆる３次元画像を生成する場合には、まず、座標変換、クリッピング処理、透視変換、或いは光源計算等のジオメトリ処理が行われ、その処理結果に基づいて、プリミティブ面データ（プリミティブ面の頂点（構成点）の位置座標、テクスチャ座標、色（輝度）データ、法線ベクトル或いはα値等）が作成される。そして、このプリミティブ面データ（ポリゴン、自由曲面又はサブディビジョンサーフェス等のプリミティブ面のデータ。描画データ）に基づいて、ジオメトリ処理後のオブジェクト（１又は複数のプリミティブ面）の画像が、描画バッファ１７４（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画される。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成されるようになる。
【００６２】
そして本実施形態の描画部１２０は、描画順序決定部１１６で決定された描画順序で、オブジェクトが含むプリミティブ面（プリミティブ面データ）を描画する。
【００６３】
なお、描画部１２０での描画処理の際には、奥行き情報（例えばＺ値）が格納される奥行きバッファ（例えばＺバッファ、ステンシルバッファ）を用いて、奥行き比較法（例えばＺバッファ法）によりピクセル単位での陰面消去を行うことが望ましい。
【００６４】
描画部１２０は、テクスチャマッピング部１２２、α合成部１２４を含む。
【００６５】
テクスチャマッピング部１２２は、テクスチャ記憶部１７６に記憶されるテクスチャをオブジェクトにマッピングするための処理を行う。
【００６６】
ここで本実施形態では、テクスチャ記憶部１７６が、一連の第１〜第Ｎの圧縮テクスチャ（第１〜第Ｎの圧縮フレーム画像）を含む圧縮ムービーテクスチャ（圧縮ムービー）のデータを記憶する。
【００６７】
そして、図示しない伸張部が、この圧縮ムービーテクスチャのデータに基づいて伸張処理を行い、テクスチャマッピング部１２２が、一連の第１〜第Ｎの圧縮テクスチャを伸張することで得られる一連の第１〜第Ｎの伸張テクスチャ（第１〜第Ｎの伸張フレーム画像）をオブジェクトに順次マッピングするための処理を行う。
【００６８】
また本実施形態では、基準線から放射状に配置された複数のプリミティブ面でオブジェクトが構成される場合に、これらの複数のプリミティブ面に対して共通のテクスチャを使用するようにしている。例えば、テクスチャ記憶部１７６に、一連のムービーテクスチャ（例えば炎の絵を表すムービーテクスチャ）のデータが記憶されていた場合には、オブジェクトが含む全てのプリミティブ面に対して、この一連のムービーテクスチャをマッピングするようにする。
【００６９】
なお、テクスチャをマッピングする単位は、１枚のプリミティブ面であってもよいし、複数のプリミティブ面であってもよい。或いは、１枚のプリミティブ面を更に分割したプリミティブ面であってもよい。
【００７０】
α合成部１２４は、α値（Ａ値）に基づくα合成処理（αブレンディング、α加算又はα減算等）を行う。例えばα合成がαブレンディングである場合には下式のような合成処理が行われる。
【００７１】
ＲQ＝（１−α）×Ｒ1＋α×Ｒ2    （１）
ＧQ＝（１−α）×Ｇ1＋α×Ｇ2    （２）
ＢQ＝（１−α）×Ｂ1＋α×Ｂ2    （３）
ここで、Ｒ1、Ｇ1、Ｂ1は、描画バッファ１７４に既に描画されている画像（背景画像）の色（輝度）のＲ、Ｇ、Ｂ成分であり、Ｒ2、Ｇ2、Ｂ2は、描画バッファに描画するオブジェクト（プリミティブ）の色のＲ、Ｇ、Ｂ成分である。また、ＲQ、ＧQ、ＢQは、αブレンディングにより得られる画像の色のＲ、Ｇ、Ｂ成分である。
【００７２】
そして本実施形態では、α合成部１２４が、α値設定部１１２によりプリミティブ面に設定されたα値に基づいてα合成処理を行う。
【００７３】
より具体的には、α値設定部１１２が、プリミティブ面に対して、そのプリミティブ面の代表α値を設定する。そして、この代表α値に基づいて、オブジェクト（プリミティブ面）の頂点（構成点）のα値が求められる。そして、この頂点のα値に基づく補間処理により、オブジェクト（透視変換後のオブジェクト）の各ピクセル（ドット）のα値が求められ、この求められた各ピクセルのα値に基づいてα合成処理が行われる。
【００７４】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【００７５】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて生成してもよい。
【００７６】
２．本実施形態の特徴
次に本実施形態の特徴について図面を用いて説明する。
【００７７】
なお、以下では、炎の表現に本実施形態を適用した場合を主に例にとり説明するが、本実施形態は、炎以外の他の画像表現にも適用できる。また、本実施形態では、プリミティブ面がポリゴンである場合について主に例にとり説明するが、本実施形態のプリミティブ面はポリゴンに限定されない。
【００７８】
２．１  オブジェクトの構成
本実施形態では、炎などの不定形表示物を表現するために、図２に示すような構成のオブジェクトＯＢを用いている。
【００７９】
このオブジェクトＯＢは、基準線ＲＬ（中心線）から放射状に配置されたポリゴンＰＬ１、ＰＬ２、ＰＬ３、ＰＬ４（広義には第１〜第Ｎのプリミティブ面。以下の説明でも同様）を含む。また、これらのポリゴンＰＬ１〜４の端辺（下端辺）に接するように交差するポリゴンＰＬ０（ＰＬ０-1〜ＰＬ０-4。広義には第Ｊのポリゴン。以下の説明でも同様）を含む。
【００８０】
図３（Ａ）〜（Ｃ）に、このオブジェクトＯＢのテクスチャマッピングに使用されるテクスチャ（ムービーテクスチャ）の例を示す。これらのテクスチャは炎を表現するテクスチャであり、これらの一連のテクスチャを連続してムービー再生することで、炎がゆらゆらと揺れながら燃えている様子をリアルに表現できる。
【００８１】
本実施形態ではポリゴンＰＬ０（ＰＬ０-1〜ＰＬ０-4）、ＰＬ１、ＰＬ２、ＰＬ３、ＰＬ４に対するテクスチャマッピングの際に、図３（Ａ）〜（Ｃ）に示す共通のテクスチャを使用している。具体的には、図３（Ａ）〜（Ｃ）の一連のテクスチャをポリゴンＰＬ１、ＰＬ３のペアに対してマッピングする。同様に、これらの一連のテクスチャを、ポリゴンＰＬ２、ＰＬ４のペア、ＰＬ０-1、ＰＬ０-2のペア、ＰＬ０-3、ＰＬ０-4のペアに対して、各々、マッピングしている。
【００８２】
また、図３（Ａ）〜（Ｃ）のＢ１に示す矢印の方向が、図２のＢ２〜Ｂ９に示す矢印の方向と一致するような方向で、図３（Ａ）〜（Ｃ）のテクスチャをマッピングしている。
【００８３】
このようにすれば、図２のＣ１〜Ｃ８に示すような種々の位置・方向の仮想カメラＶＣからオブジェクトＯＢを見た場合にも、図３（Ａ）〜（Ｃ）のような炎の画像が常に見えるようになる。
【００８４】
例えばＣ１の位置の仮想カメラＶＣからオブジェクトＯＢを見た場合には、ポリゴンＰＬ２、ＰＬ４に図３（Ａ）〜（Ｃ）のテクスチャがマッピングされた画像が見えるようになる。またＣ３の位置の仮想カメラＶＣからオブジェクトＯＢを見た場合には、ポリゴンＰＬ１、ＰＬ３に図３（Ａ）〜（Ｃ）のテクスチャがマッピングされた画像が見えるようになる。またＣ５の位置（真上）の仮想カメラＶＣからオブジェクトＯＢを見た場合には、ポリゴンＰＬ０-1、ＰＬ０-2やＰＬ０-3、ＰＬ０-4に図３（Ａ）〜（Ｃ）のテクスチャがマッピングされた画像が見えるようになる。
【００８５】
このようにすれば、いわゆる書き割り形状（十字形状）であるのにもかかわらず、あたかもボリュームを持つ立体形状であるかのようにオブジェクトＯＢを見せることが可能になる。従って、少ないポリゴン数で、炎のような不定形な表示物をリアルに表現できるようになり、少ない処理負荷でリアルな画像を生成できる。
【００８６】
なお、オブジェクトＯＢの形状は図２に示す形状に限定されない。
【００８７】
例えば図４（Ａ）、（Ｂ）（オブジェクトＯＢを上方から見た図）に示すように基準線ＲＬから放射状にポリゴンＰＬ１〜８やＰＬ１〜３を配置してもよい。即ち、放射状に配置するポリゴンの個数や配置の仕方は任意である。
【００８８】
また、放射状に配置するポリゴン以外のポリゴンをオブジェクトに設けてもよい。例えば図２では、このようなポリゴンとしてＰＬ０が設けられている。そして、この場合に、図２や図４（Ｃ）（側面図）では、ポリゴンＰＬ１〜４の端辺に接するように交差するポリゴンＰＬ０を設けているが、図４（Ｄ）（側面図）に示すように、ポリゴンＰＬ１〜４の上端辺と下端辺の間で交差するポリゴンＰＬ０’を設けてもよい。
【００８９】
２．２  α値の設定
さて、図２に示すようなオブジェクトＯＢを用いて炎の画像を生成した場合に、次のような課題があることが判明した。
【００９０】
例えば仮想カメラＶＣが図５（Ａ）に示すような位置にあった場合には、図５（Ｂ）に示すような画像が生成されてしまう。即ち、ポリゴンＰＬ２とＰＬ４の画像の間に、ポリゴンＰＬ１の色で描かれた線上の画像が表示されてしまう。
【００９１】
また仮想カメラＶＣが図５（Ｃ）に示すような位置にあった場合には、図５（Ｄ）に示すような画像が生成されてしまう。即ち、ポリゴンＰＬ１とＰＬ２、及びポリゴンＰＬ３とＰＬ４とが同一のα値で半透明合成された画像が生成されてしまう。従って、ポリゴンＰＬ２の領域と、ポリゴンＰＬ１及びＰＬ２が重なっている領域との間、並びに、ポリゴンＰＬ４の領域と、ポリゴンＰＬ３及びＰＬ４が重なっている領域との間で、色の濃さの違いが目立ってしまう。
【００９２】
この結果、図２に示すような形状のオブジェクトＯＢを用いて、何も工夫せずに画像を生成すると、仮想カメラＶＣがオブジェクトＯＢの周囲で移動するにつれて、ポリゴンの線が見えてしまったり、色の濃い部分と薄い部分の差が目立ってしまうなどの問題が生じる。このため、オブジェクトＯＢが、実際にはボリュームを有する立体形状のオブジェクトではなく、図２に示すような書き割り形状のオブジェクトであることがプレーヤに知られてしまい、プレーヤの仮想現実感を減退させてしまう。
【００９３】
そこで本実施形態では、このような課題を解決するために次のような手法を採用している。
【００９４】
即ち本実施形態では図６（Ａ）に示すように、オブジェクトＯＢのポリゴンＰＬ１（ＰＬ２〜４）と仮想カメラＶＣとのなす角度θ（或いはｃｏｓθ。広義には相対的な方向関係。以下の説明でも同様）に応じて、ポリゴンＰＬ１〜４のα値を設定している。
【００９５】
例えば図６（Ｂ）では、仮想カメラＶＣの向きはポリゴンＰＬ１（ＰＬ３）と平行（ＰＬ２、４と直交）になっており、θは０度になっている。この場合には、ポリゴンＰＬ１（ＰＬ３）のα値はαＭＩＮ（最小値。例えば０．０）に設定され、ＰＬ１は、より透明に見えるようになる。一方、ポリゴンＰＬ２、４のα値はαＭＡＸ（最大値。例えば１．０）に設定され、ＰＬ２、４は、より不透明に見えるようになる。このようにすることで、図５（Ｂ）では目立っていたポリゴンＰＬ１の色の線が、目立たなくなり、より自然な画像を生成できる。
【００９６】
また図６（Ｃ）では、仮想カメラＶＣの向きはポリゴンＰＬ１とＰＬ４の間の向きになっており、θは例えば４５度になっている。この場合には、ポリゴンＰＬ１（ＰＬ３）のα値及びＰＬ４（ＰＬ２）のα値は共にαＭＩＮとαＭＡＸの例えば平均値に設定される。従って、図５（Ｄ）では目立っていた色の濃い部分と薄い部分の差が、目立たなくなる。この結果、オブジェクトＯＢが書き割り形状であることがプレーヤに知られてしまう不具合を防止でき、より自然でリアルな画像を生成できる。
【００９７】
また図６（Ｄ）では、仮想カメラＶＣの向きはポリゴンＰＬ４（ＰＬ２）と平行（ＰＬ１、３と直交）になっており、θは９０度になっている。この場合には、ポリゴンＰＬ４（ＰＬ２）のα値はαＭＩＮに設定され、ＰＬ４は、より透明に見えるようになる。一方、ポリゴンＰＬ１、３のα値はαＭＡＸに設定され、ＰＬ１、３は、より不透明に見えるようになる。これにより、ポリゴンＰＬ４の色の線が目立って見えてしまう不具合を解消できる。
【００９８】
次に、α値の具体的な設定手法について図７のフローチャートを用いて更に詳しく説明する。
【００９９】
まず、ベクトルＦＬ、ＦＸ、ＦＹ、ＦＺを求める（ステップＳ１）。
【０１００】
ここでベクトルＦＬは、図８に示すように、オブジェクトＯＢの中心点ＣＰ（代表点。基準線ＲＬとポリゴンＰＬ０の交点）を始点とし、仮想カメラＶＣの方向を向く単位ベクトルである。
【０１０１】
また、ベクトルＦＸは、中心点ＣＰを始点とし、ポリゴンＰＬ２、ＰＬ４に直交する単位ベクトル（ＰＬ１、３の面に沿った方向を向く単位ベクトル）である。
【０１０２】
また、ベクトルＦＹは、中心点ＣＰを始点とし、ポリゴンＰＬ０に直交する単位ベクトルである。
【０１０３】
また、ベクトルＦＺは、中心点ＣＰを始点とし、ポリゴンＰＬ１、ＰＬ３に直交する単位ベクトル（ＰＬ２、４の面に沿った方向を向く単位ベクトル）である。
【０１０４】
言い換えれば、これらのベクトルＦＸ、ＦＹ、ＦＺは、中心点ＣＰ（代表点）を原点とするオブジェクトＯＢのローカル座標系でのＸ、Ｙ、Ｚ軸方向の単位ベクトルである。
【０１０５】
次に、これらのベクトルＦＸ、ＦＹ、ＦＺとＦＬとの内積値を下式のように求める（ステップＳ２）。
【０１０６】
ＩＮＲ０＝ＦＹ・ＦＬ        （４）
ＩＮＲ１＝ＦＸ・ＦＬ        （５）
ＩＮＲ２＝ＦＺ・ＦＬ        （６）
これらの内積値ＩＮＲ０〜３は、２つのベクトルが直交している時には０になり、平行の時には１又は−１になる。
【０１０７】
次に、求められた内積値ＩＮＲ０〜２に基づいて、ポリゴンの代表α値を求める（ステップＳ３）。より具体的には、まず、下式のような変換を行う。
【０１０８】
ＩＮＲα０＝１−ＡＢＳ（ＩＮＲ０）    （７）
ＩＮＲα１＝１−ＡＢＳ（ＩＮＲ１）    （８）
ＩＮＲα２＝１−ＡＢＳ（ＩＮＲ２）    （９）
ここで、ＡＢＳ（Ｘ）は、引数Ｘに対してその絶対値を返値として返す関数である。上式（７）、（８）、（９）のような変換を行うことで、ＩＮＲα０、ＩＮＲα１、ＩＮＲα２は、２つのベクトルが直交している時には１になり、平行の時には０になる値となる。
【０１０９】
ポリゴンＰ０〜Ｐ４の代表α値αＰ０〜αＰ４は、これらのＩＮＲα０〜ＩＮＲα２を用いて下式のように求められる。
【０１１０】
αＰ０＝（１−ＩＮＲα０）×Ａ０＋Ａ１        （１０）
αＰ１＝ＩＮＲα１×ＩＮＲα０×Ａ０＋Ａ１    （１１）
αＰ２＝ＩＮＲα２×ＩＮＲα０×Ａ０＋Ａ１    （１２）
αＰ３＝ＩＮＲα１×ＩＮＲα０×Ａ０＋Ａ１    （１３）
αＰ４＝ＩＮＲα２×ＩＮＲα０×Ａ０＋Ａ１    （１４）
ここで、Ａ０＝αＭＡＸ−αＭＩＮ、Ａ１＝αＭＩＮである。
【０１１１】
例えば、図８のベクトルＦＬがＦＹと平行な場合（ＦＬがＦＸ、ＦＺと直交する場合）には、上式（４）〜（６）からＩＮＲ０＝１、ＩＮＲ１＝０、ＩＮＲ２＝０になり、上式（７）〜（９）からＩＮＲα０＝０、ＩＮＲα１＝１、ＩＮＲα２＝１になる。従って、上式（１０）〜（１４）から、
αＰ０＝Ａ０＋Ａ１＝αＭＡＸ
αＰ１＝αＰ２＝αＰ３＝αＰ４＝Ａ１＝αＭＩＮ
となる。
【０１１２】
即ち、ポリゴンＰＬ１〜ＰＬ４のα値であるαＰ１〜αＰ４が小さくなるため（αＭＩＮ）、上方の仮想カメラＶＣから見て、ＰＬ１〜ＰＬ４がより透明に見えるようになり、ＰＬ１〜ＰＬ４の線が目立たなくなる。一方、ポリゴンＰＬ０のα値であるαＰ０が大きくなるため（αＭＡＸ）、仮想カメラＶＣには、ＰＬ０にマッピングされた炎のテクスチャの画像が見えるようになる。
【０１１３】
また、ベクトルＦＬがＦＸと平行な場合（ＦＬがＦＹ、ＦＺと直交する場合）には、上式（４）〜（６）からＩＮＲ０＝０、ＩＮＲ１＝１、ＩＮＲ２＝０になり、上式（７）〜（９）からＩＮＲα０＝１、ＩＮＲα１＝０、ＩＮＲα２＝１になる。従って、上式（１０）〜（１４）から、
αＰ０＝αＰ１＝αＰ３＝Ａ１＝αＭＩＮ
αＰ２＝αＰ４＝Ａ０＋Ａ１＝αＭＡＸ
となる。
【０１１４】
即ち、ポリゴンＰＬ０、１、３のα値であるαＰ０、１、３が小さくなるため、ベクトルＦＸの方向にある仮想カメラＶＣから見て、ＰＬ０、１、３がより透明に見えるようになり、ＰＬ０、１、３の線が目立たなくなる。一方、ポリゴンＰＬ２、４のα値であるαＰ２、４が大きくなるため、仮想カメラＶＣには、ＰＬ２、４にマッピングされた炎のテクスチャの画像が見えるようになる。
【０１１５】
また、ベクトルＦＬがＦＺと平行な場合（ＦＬがＦＸ、ＦＹと直交する場合）には、上式（４）〜（６）からＩＮＲ０＝０、ＩＮＲ１＝０、ＩＮＲ２＝１になり、上式（７）〜（９）からＩＮＲα０＝１、ＩＮＲα１＝１、ＩＮＲα２＝０になる。従って、上式（１０）〜（１４）から、
αＰ０＝αＰ２＝αＰ４＝Ａ１＝αＭＩＮ
αＰ１＝αＰ３＝Ａ０＋Ａ１＝αＭＡＸ
となる。
【０１１６】
即ち、ポリゴンＰＬ０、２、４のα値であるαＰ０、２、４が小さくなるため、ベクトルＦＺの方向にある仮想カメラＶＣから見て、ＰＬ０、２、４がより透明に見えるようになり、ＰＬ０、２、４の線が目立たなくなる。一方、ポリゴンＰＬ１、３のα値であるαＰ１、３が大きくなるため、仮想カメラＶＣには、ＰＬ１、３にマッピングされた炎のテクスチャの画像が見えるようになる。
【０１１７】
次に図７のステップＳ４に示すように、求められたポリゴンＰＬ０〜４の代表α値αＰ０〜４に基づいて、オブジェクトＯＢ（ポリゴン）の頂点α値を求める。より具体的には、オブジェクトＯＢの頂点が属する１又は複数のポリゴンに設定された代表α値に基づいて所与の演算処理（例えば平均化処理）を行い、オブジェクトＯＢの頂点のα値が求める。
【０１１８】
例えば図９（Ａ）において、頂点ＶＸ１、２、３、４の頂点α値αＶ１、αＶ２、αＶ３、αＶ４については下式のように求めることができる。
【０１１９】
αＶ１＝αＰ４                                            （１５）
αＶ２＝（αＰ１＋αＰ２＋αＰ３＋αＰ４）／４            （１６）
αＶ３＝（αＰ０＋αＰ１＋αＰ２＋αＰ３＋αＰ４）／５    （１７）
αＶ４＝（αＰ０＋αＰ４）／２                            （１８）
即ち、図９（Ａ）に示すように頂点ＶＸ１はポリゴンＰＬ４にしか属していない。このため、頂点ＶＸ１のα値αＶ１は、ＰＬ４の代表α値であるαＰ４になる（式（１５））。
【０１２０】
また、頂点ＶＸ２はポリゴンＰＬ１、２、３、４に属している。このため、頂点ＶＸ２のα値αＶ２は、ＰＬ１〜４の代表α値であるαＰ１〜４の平均値になる（式（１６））。
【０１２１】
また、頂点ＶＸ３はポリゴンＰＬ０、１、２、３、４に属している。このため、頂点ＶＸ３のα値αＶ３は、ＰＬ０〜４の代表α値であるαＰ０〜４の平均値になる（式（１７））。
【０１２２】
また、頂点ＶＸ４はポリゴンＰＬ０、４に属している。このため、頂点ＶＸ４のα値αＶ４は、ＰＬ０、４の代表α値であるαＰ０、４の平均値になる（式（１８））。
【０１２３】
以上のようにして頂点α値を求めれば、ポリゴンの境界においてα値が滑らかに変化するようになる。従って、例えば仮想カメラがオブジェクトＯＢの周囲を移動した場合にも、仮想カメラから見てポリゴンの境界が目立たなくなり、より自然な画像を生成できるようになる。
【０１２４】
なお、図９（Ｂ）に示すように、オブジェクト（透視変換後のオブジェクト、ポリゴン）の各ピクセル（ドット）のα値αＰＩＸは、頂点α値αＶ１〜４を補間（例えば線形補間）することで求めることができる。そして、この求められたα値αＰＩＸに基づいて、ピクセル単位でのα合成処理を実現できる。この場合、各ピクセルのα値を求める処理は、描画プロセッサの機能（グーローシェーディング機能等）により実現できる。
【０１２５】
２．３  描画順序の決定
さて、本実施形態では以下に説明するような手法でポリゴンの描画順序を決定し、決定された描画順序にしたがってポリゴンを描画バッファに描画している。この場合に本実施形態では、前述の手法で得られたα値に基づいてα合成処理（半透明処理）を行いながら、ポリゴンを描画バッファに描画する。
【０１２６】
例えば図１０（Ａ）に示すように、図２の形状のオブジェクトＯＢ１〜４がオブジェクト空間に配置されている場合を考える。
【０１２７】
この場合に本実施形態では、まず、仮想カメラＶＣの視点座標系での奥行き値（Ｚ値）に基づいて、図１０（Ｂ）のＤ１に示すように、オブジェクトＯＢ１〜４についての描画順序を決定する。即ち、オブジェクトＯＢ１〜ＯＢ４のＺソートを行う。例えば、図１０（Ａ）の場合の描画順序は、ＯＢ４、ＯＢ１、ＯＢ３、ＯＢ２の順となる。
【０１２８】
また本実施形態では図１０（Ｂ）のＤ２〜Ｄ５に示すように、これらの各オブジェクトＯＢ１〜ＯＢ４が含むポリゴンの描画順序を決定し、これらのポリゴンをソートする。
【０１２９】
そして図１０（Ａ）の場合には、まず、最も奥側のオブジェクトＯＢ４が含むポリゴンを、描画優先順位の高いものから順に描画する。次に、ＯＢ１が含むポリゴンを描画優先順位の高いものから順に描画する。次に、ＯＢ３が含むポリゴンを描画優先順位の高いものから順に描画する。最後に、最も手前側のＯＢ２が含むポリゴンを描画優先順位の高いものから順に描画する。
【０１３０】
以上のような手法によりポリゴンを描画することで、矛盾の無いポリゴンのα合成処理を実現できる。また、オブジェクトＯＢ１〜４の全てのポリゴンを一度にソートする手法に比べて、ソート処理の負荷を格段に軽減できる。
【０１３１】
そして本実施形態では、オブジェクトが含むポリゴンの描画順序を次のような手法で決定している。
【０１３２】
即ち本実施形態では図１１（Ａ）に示すように、オブジェクトＯＢのポリゴンＰＬ１（ＰＬ２〜４）と仮想カメラＶＣとのなす角度θ（ｃｏｓθ。広義には相対的な方向関係。以下の説明でも同様）に応じて、ポリゴンＰＬ１〜４の描画順序を決定している。
【０１３３】
例えば図１１（Ａ）では、θが０〜９０度の間にあり、仮想カメラＶＣから見て、ポリゴンＰＬ１、ＰＬ４が前面に位置している。この場合には、まずポリゴンＰＬ０を描画し、次にポリゴンＰＬ２、ＰＬ３を描画し、最後にポリゴンＰＬ１、４を描画する。
【０１３４】
なお、底面のポリゴンＰＬ０については、炎のオブジェクトＯＢを下から見るような状況がない限り、一番最初に描画しても問題ない。即ち、一番最初にポリゴンＰＬ０を描画しても、矛盾の無いα合成処理を実現できる。従って、ポリゴンＰＬ０の描画優先順位は常に最も高い順位（最初に描画される順位）に設定されている。
【０１３５】
また図１１（Ａ）の仮想カメラＶＣの位置では、ポリゴンＰＬ１とＰＬ４や、ＰＬ２とＰＬ３は互いに重なることがなく、これらのポリゴン同士のソートは必要ない。従って、ポリゴンＰＬ１、ＰＬ４間の描画順序や、ＰＬ２、ＰＬ３間の描画順序は任意となる。
【０１３６】
また図１１（Ｂ）では、θが９０〜１８０度の間にあり、仮想カメラＶＣから見てポリゴンＰＬ３、ＰＬ４が前面に位置している。この場合には、まずポリゴンＰＬ０を描画し、次にポリゴンＰＬ１、ＰＬ２を描画し、最後にポリゴンＰＬ３、４を描画する。なお、ポリゴンＰＬ１、ＰＬ２間及びＰＬ３、ＰＬ４間の描画順序は任意である。
【０１３７】
また図１１（Ｃ）では、θが１８０〜２７０度の間にあり、仮想カメラＶＣから見てポリゴンＰＬ２、ＰＬ３が前面に位置している。この場合には、まずポリゴンＰＬ０を描画し、次にポリゴンＰＬ１、ＰＬ４を描画し、最後にポリゴンＰＬ２、３を描画する。なお、ポリゴンＰＬ１、ＰＬ４間及びＰＬ２、ＰＬ３間の描画順序は任意である。
【０１３８】
また図１１（Ｄ）では、θが２７０〜３６０度の間にあり、仮想カメラＶＣから見てポリゴンＰＬ１、ＰＬ２が前面に位置している。この場合には、まずポリゴンＰＬ０を描画し、次にポリゴンＰＬ３、ＰＬ４を描画し、最後にポリゴンＰＬ１、２を描画する。なお、ポリゴンＰＬ３、ＰＬ４間及びＰＬ１、ＰＬ２間の描画順序は任意である。
【０１３９】
このように本実施形態では、オブジェクトＯＢの形状が特定形状（基準線から放射状にポリゴンが配置される形状）に固定されていることに着目し、ポリゴンの面と仮想カメラの向きとのなす角度θ（内積値。相対的な方向関係）に応じて、ポリゴンの描画順序を一意的に決めている。従って、ポリゴンの奥行き値を判定することなくポリゴンをソートできるようになるため、ソート処理の負荷を格段に軽減できる。
【０１４０】
また本実施形態では、前述のように、ポリゴンの面と仮想カメラの向きとのなす角度θに応じて、ポリゴンのα値も設定している。従って、このα値を求めるために用いた角度θ（より具体的には内積値）を有効利用して、ポリゴンの描画順序も決定できるようになるため、処理負荷を更に軽減できる。
【０１４１】
２．４  パーティクル・エリア
さて、オブジェクトＯＢの画像を更にリアルなものにするためには、パーティクル・プリミティブ（点、線又は面で構成されたパーティクル）を用いたパーティクルシステムを採用することが望ましい。
【０１４２】
そこで本実施形態では図１２に示すように、複数のパーティクル・エリアＰＴＡ１、ＰＴＡ２、ＰＴＡ３、ＰＴＡ４（パーティクル存在エリア）を設定し、これらのＰＴＡ１〜４において、所与の寿命で消滅するパーティクル・プリミティブを発生させるようにしている。
【０１４３】
なお図１２では、これらのパーティクル・エリアＰＴＡ１〜４は、オブジェクトＯＢが含むポリゴンＰＬ１〜ＰＬ４により区分けされている。
【０１４４】
このように、各パーティクル・エリアＰＴＡ１〜４においてパーティクル・プリミティブを発生させるようにすれば、単にポリゴンＰＬ０〜４だけでオブジェクトＯＢを構成する場合に比べて、よりボリューム感があり、立体的に見える炎を表現できるようになる。これにより、プレーヤの仮想現実感を更に向上できる。
【０１４５】
なお、本実施形態では、パーティクル・プリミティブとして、パーティクルを表すテクスチャがマッピングされたスプライト・ポリゴン（ビルボード表示のポリゴン）を用いている。このようにすることで、プリミティブ点で表現される多数のパーティクルを発生して炎等を表現する場合に比べて、描画負荷を格段に軽減できる。即ち、少ない個数のプリミティブ数（ポリゴン数）で、より広い範囲を占める炎を表現できるようになる。
【０１４６】
但し、パーティクル・プリミティブとして、スプライト・ポリゴンではなく、プリミティブ点やプリミティブ線などを用いてもよい。
【０１４７】
なお、よりリアルなパーティクル表現を実現するためには、パーティクル・プリミティブに色やα値（半透明度）などの種々の属性を持たせると共に、パーティクル・プリミティブを所与の規則に従って発生、移動、消滅させて、不定形な炎を表現することが望ましい。即ち、パーティクル・プリミティブの初期速度（初期移動方向）をランダムに変化させたり、パーティクル・プリミティブの寿命をランダムに変化させる。このようにすることで、現実世界の炎のように見えるリアルな画像表現を実現できる。なお、パーティクル・プリミティブの消滅は、パーティクル・プリミティブのα値を制御して、パーティクル・プリミティブを時間経過に伴い徐々に透明にすることで実現できる。
【０１４８】
さて、このようにパーティクル・エリアを設け、パーティクル・プリミティブを発生させた場合に、パーティクル・エリアＰＴＡ１〜４（パーティクル・プリミティブ）についての描画順序をどのように決定するかが問題となる。
【０１４９】
本実施形態では、このパーティクル・エリアについての描画順序も、ポリゴンの面と仮想カメラの向きとの相対的な方向関係（角度θ。内積値）に応じて決定している。
【０１５０】
例えば図１３（Ａ）では、θが０〜９０度の間にあり、仮想カメラＶＣから見て、ポリゴンＰＬ１、ＰＬ４が前面に位置している。この場合には、まずポリゴンＰＬ０を描画し、次にパーティクル・エリアＰＴＡ３内のパーティクル・プリミティブを描画する。そして、ポリゴンＰＬ２、ＰＬ３を描画し、次に、パーティクル・エリアＰＴＡ２、４内のパーティクル・プリミティブを描画する。そして、ポリゴンＰＬ１、４を描画し、最後に、パーティクル・エリアＰＴＡ１内のパーティクル・プリミティブを描画する。
【０１５１】
なおＰＬ２、ＰＬ３間、ＰＴＡ２、ＰＴＡ４間及びＰＬ１、ＰＬ４間の描画順序は任意である。また、各パーティクル・エリア内においては、パーティクル・プリミティブをＺソートしながら描画することが望ましい。
【０１５２】
また図１３（Ｂ）では、θが９０〜１８０度の間にあり、仮想カメラＶＣから見て、ポリゴンＰＬ３、ＰＬ４が前面に位置している。この場合には、まずポリゴンＰＬ０を描画し、次にパーティクル・エリアＰＴＡ２内のパーティクル・プリミティブを描画する。そして、ポリゴンＰＬ１、ＰＬ２を描画し、次に、パーティクル・エリアＰＴＡ１、３内のパーティクル・プリミティブを描画する。そして、ポリゴンＰＬ３、４を描画し、最後に、パーティクル・エリアＰＴＡ４内のパーティクル・プリミティブを描画する。なおＰＬ１、ＰＬ２間、ＰＴＡ１、ＰＴＡ３間及びＰＬ３、ＰＬ４間の描画順序は任意である。
【０１５３】
また図１４（Ａ）では、θが１８０〜２７０度の間にあり、仮想カメラＶＣから見て、ポリゴンＰＬ２、ＰＬ３が前面に位置している。この場合には、まずポリゴンＰＬ０を描画し、次にパーティクル・エリアＰＴＡ１内のパーティクル・プリミティブを描画する。そして、ポリゴンＰＬ１、ＰＬ４を描画し、次に、パーティクル・エリアＰＴＡ２、４内のパーティクル・プリミティブを描画する。そして、ポリゴンＰＬ２、３を描画し、最後に、パーティクル・エリアＰＴＡ３内のパーティクル・プリミティブを描画する。なおＰＬ１、ＰＬ４間、ＰＴＡ２、ＰＴＡ４間及びＰＬ２、ＰＬ３間の描画順序は任意である。
【０１５４】
また図１４（Ｂ）では、θが２７０〜３６０度の間にあり、仮想カメラＶＣから見て、ポリゴンＰＬ１、ＰＬ２が前面に位置している。この場合には、まずポリゴンＰＬ０を描画し、次にパーティクル・エリアＰＴＡ４内のパーティクル・プリミティブを描画する。そして、ポリゴンＰＬ３、ＰＬ４を描画し、次に、パーティクル・エリアＰＴＡ１、３内のパーティクル・プリミティブを描画する。そして、ポリゴンＰＬ１、２を描画し、最後に、パーティクル・エリアＰＴＡ２内のパーティクル・プリミティブを描画する。なおＰＬ３、ＰＬ４間、ＰＴＡ１、ＰＴＡ３間及びＰＬ１、ＰＬ２間の描画順序は任意である。
【０１５５】
なお、ポリゴンの面と仮想カメラＶＣとの方向関係（角度θ）は、具体的には図１５に示す手法により判断する。
【０１５６】
例えば図１５において、ＦＬはオブジェクトＯＢの中心点ＣＰを始点としＶＣの方向を向く単位ベクトルであり、ＦＸは、ＣＰを始点としＰＬ２、ＰＬ４に直交する単位ベクトルであり、ＦＺは、ＣＰを始点としＰＬ１、ＰＬ３に直交する単位ベクトルである（図８参照）。
【０１５７】
本実施形態では、これらのベクトルを用いて下式の内積値ＩＮＲ１、２を求める。
【０１５８】
ＩＮＲ１＝ＦＸ・ＦＬ    （１９）
ＩＮＲ２＝ＦＺ・ＦＬ    （２０）
そして、ＩＮＲ１＞０、ＩＮＲ２＞０の場合には、仮想カメラＶＣはＰＬ１、ＰＬ４の前面に位置すると判断され、描画順序は図１３（Ａ）に示す順序になる。
【０１５９】
また、ＩＮＲ１≦０、ＩＮＲ２＞０の場合には、仮想カメラＶＣはＰＬ３、ＰＬ４の前面に位置すると判断され、描画順序は図１３（Ｂ）に示す順序になる。
【０１６０】
また、ＩＮＲ１≦０、ＩＮＲ２≦０の場合には、仮想カメラＶＣはＰＬ２、ＰＬ３の前面に位置すると判断され、描画順序は図１４（Ａ）に示す順序になる。
【０１６１】
また、ＩＮＲ１＞０、ＩＮＲ２≦０の場合には、仮想カメラＶＣはＰＬ１、ＰＬ２の前面に位置すると判断され、描画順序は図１４（Ｂ）に示す順序になる。
【０１６２】
この場合に本実施形態では、これらの内積値ＩＮＲ１、ＩＮＲ２（式（１９）、（２０））として、α値の設定の際に求めた内積値ＩＮＲ１、ＩＮＲ２（式（５）、（６））をそのまま利用できる。このようにすることで、α値の設定の際に求めた内積値ＩＮＲ１、２を有効利用できるようになり、処理負荷を軽減できる。
【０１６３】
２．５  パーティクルの発生
本実施形態では、図１６に示すように、各パーティクル・エリアＰＴＡ１〜４に対して、パーティクル・プリミティブのジェネレータＧ１〜４（発生場所）を設定している。そして、このジェネレータＧ１〜４から、所与の寿命が設定されたパーティクル・プリミティブを所与の初期速度で発生させている。
【０１６４】
例えばパーティクル・エリアＰＴＡ１の領域は、（Ｘ０、Ｚ０）、（Ｘ０＋ＸＳＺ、Ｚ０＋ＺＳＺ）と定義できる。この場合に、パーティクル・エリアＰＴＡ１の領域が、ＰＴＡ１を区分けしているポリゴンＰＬ１、ＰＬ４に重ならないようにＰＴＡ１を定義する。
【０１６５】
この時、ジェネレータＧ１〜４の位置ＧＰ１〜４は下式のように表すことができる。
【０１６６】
ＧＰ１
＝（Ｘ０＋ＸＳＺ×ＶＬＭＩＮ、Ｚ０＋ＺＳＺ×ＶＬＭＩＮ）  （２１）
ＧＰ２
＝（Ｘ０＋ＸＳＺ×ＶＬＭＡＸ、Ｚ０＋ＺＳＺ×ＶＬＭＩＮ）  （２２）
ＧＰ３
＝（Ｘ０＋ＸＳＺ×ＶＬＭＩＮ、Ｚ０＋ＺＳＺ×ＶＬＭＡＸ）  （２３）
ＧＰ４
＝（Ｘ０＋ＸＳＺ×ＶＬＭＡＸ、Ｚ０＋ＺＳＺ×ＶＬＭＡＸ）  （２４）
ここで、ＶＬＭＩＮ、ＶＬＭＡＸはジェネレータの位置を定義するためのパラメータであり、０＜ＶＬＭＩＮ＜ＶＬＭＡＸの関係が成り立つ。
【０１６７】
上式（２１）〜（２４）のようにその位置を決めることで、ジェネレータＧ１〜４はパーティクル・エリアの内側に位置するようになる。
【０１６８】
さて、パーティクル・プリミティブに対するパラメータの設定手法としては、種々の手法があるが、本実施形態では、処理負荷を軽くするために、以下のようなパラメータだけを各パーティクル・プリミティブの属性情報として持たせている。
（ＰＸ、ＰＹ、ＰＺ）、（ＶＣＸ、ＶＣＹ、ＶＣＺ）、ＬＩＦＥ
ここで、（ＰＸ、ＰＹ、ＰＺ）は、パーティクル・プリミティブの発生位置を表すパラメータである。即ち、上記のＧＰ１〜４のいずれかを表すパラメータである。
【０１６９】
また、（ＶＣＸ、ＶＣＹ、ＶＣＺ）はパーティクル・プリミティブの初期速度を表すパラメータであり、ＬＩＦＥはパーティクル・プリミティブの現在のライフ（年齢）を表すパラメータである。
【０１７０】
更に別のパラメータとして本実施形態ではＬＩＦＥＭＡＸを用意している。このＬＩＦＥＭＡＸはパーティクル・プリミティブの寿命を表すパラメータである。
【０１７１】
図１７に、本実施形態のパーティクル処理についてのフローチャートを示す。
【０１７２】
まず、フレーム更新（描画バッファの更新）か否かを判断する（ステップＳ２１）。これは、画像生成システムのハードウェアが垂直同期のタイミングで発生する割り込みに基づいて判断できる。
【０１７３】
フレーム更新であると判断された場合には、パーティクル番号ＮＵＭを０に設定する（ステップＳ２２）。そして、ＮＵＭ番目のパーティクル・プリミティブのＬＩＦＥを１だけインクリメントする（ステップＳ２３）。
【０１７４】
次に、ＬＩＦＥ＞ＬＩＦＥＭＡＸか否かを判断する（ステップＳ２４）。そして、ＬＩＦＥ＞ＬＩＦＥＭＡＸの場合には、ＬＩＦＥ＝０に戻すと共に発生位置ＰＸ、ＰＹ、ＰＺ、初期速度ＶＣＸ、ＶＣＹ、ＶＣＺを再設定する（ステップＳ２５）。即ち、寿命を越えたパーティクル・プリミティブの発生位置や初期速度を再設定する。この場合に、パーティクル・プリミティブを発生させるジェネレータ及びパーティクル・プリミティブの初期速度は乱数に基づいて決定する。
【０１７５】
次に、パーティクル・プリミティブの描画位置（Ｘ、Ｙ、Ｚ）を下式のように決定する（ステップＳ２６）。
【０１７６】
Ｘ＝ＰＸ＋ＶＣＸ×ＬＩＦＥ    （２５）
Ｙ＝ＰＹ＋ＶＣＹ×ＬＩＦＥ    （２６）
Ｚ＝ＰＺ＋ＶＣＺ×ＬＩＦＥ    （２７）
即ち、各パーティクル・プリミティブの位置は、その発生位置と初期速度とＬＩＦＥとにより特定されることになる。
【０１７７】
次に、パーティクル番号ＮＵＭを１だけインクリメントする（ステップＳ２７）。そして、ＮＵＭ＞ＮＵＭＭＡＸか否かを判断し（ステップＳ２８）、ＮＵＭ≦ＮＵＭＭＡＸの場合には、ステップＳ２３に戻り、次のパーティクル・プリミティブに対する処理を行う。
【０１７８】
一方、ＮＵＭ＞ＮＵＭＭＡＸの場合には、ＮＵＭ個のパーティクル・プリミティブをＺソートして、描画バッファに描画する（ステップＳ２９）。これにより、当該フレームにおけるパーティクル・プリミティブの描画が完了する。
【０１７９】
さて、以上のようにしてパーティクル・プリミティブを発生させた場合、次のような問題がある。即ち、１つのパーティクル・エリアで発生したパーティクル・プリミティブが、そのパーティクル・エリアの外に出てしまい、他のパーティクル・エリアに進入してしまうと、誤った描画順序でそのパーティクル・プリミティブが描画されてしまうおそれがある。
【０１８０】
そこで本実施形態では図１８（Ａ）に示すように、パーティクル・プリミティブが、そのパーティクル・プリミティブが発生したパーティクル・エリア内だけで移動するように、その移動を制限している。これにより、図１８（Ａ）に示すように、例えばパーティクル・エリアＰＴＡ１で発生したパーティクル・プリミティブはＰＴＡ１内だけで移動して消滅するようになる。また、パーティクル・エリアＰＴＡ３で発生したパーティクル・プリミティブはＰＴＡ３内だけで移動して消滅するようになる。
【０１８１】
そして本実施形態では、このような移動の制限を、パーティクル・プリミティブの初期速度や寿命の制御により実現している。
【０１８２】
例えば本実施形態では、パーティクル・プリミティブの初期条件の設定や、図１７のステップＳ２５での初期条件の再設定の際に、次のようにして初期速度を決定している。
【０１８３】
例えば、パーティクル・プリミティブが図１８（Ｂ）に示すようにジェネレータＧ１から発生する場合には、ＶＣＸ＞０、ＶＣＺ＞０となる条件の下で、パーティクル・プリミティブの初期速度（ＶＣＸ、ＶＣＹ、ＶＣＺ）を乱数で決定する。
【０１８４】
また、パーティクル・プリミティブが図１８（Ｃ）に示すようにジェネレータＧ２から発生する場合には、ＶＣＸ＜０、ＶＣＺ＞０となる条件の下で、パーティクル・プリミティブの初期速度（ＶＣＸ、ＶＣＹ、ＶＣＺ）を乱数で決定する。
【０１８５】
また、パーティクル・プリミティブが図１８（Ｄ）に示すようにジェネレータＧ３から発生する場合には、ＶＣＸ＞０、ＶＣＺ＜０となる条件の下で、パーティクル・プリミティブの初期速度（ＶＣＸ、ＶＣＹ、ＶＣＺ）を乱数で決定する。
【０１８６】
また、パーティクル・プリミティブが図１８（Ｅ）に示すようにジェネレータＧ４から発生する場合には、ＶＣＸ＜０、ＶＣＺ＜０となる条件の下で、パーティクル・プリミティブの初期速度（ＶＣＸ、ＶＣＹ、ＶＣＺ）を乱数で決定する。
【０１８７】
また、初期速度が大きすぎると、パーティクル・プリミティブがパーティクル・エリアの外に直ぐに出ていってしまうおそれがある。このため、例えばジェネレータＧ１から発生するパーティクル・プリミティブの初期速度（ＶＣＸ、ＶＣＹ、ＶＣＺ）に対しては、下式のような制限を加える。
０＜ＡＢＳ（ＶＣＸ）×ＬＩＦＥＭＡＸ＜ＸＳＺ×（１−ＶＬＭＩＮ）（２８）
０＜ＡＢＳ（ＶＣＺ）×ＬＩＦＥＭＡＸ＜ＺＳＺ×（１−ＶＬＭＩＮ）（２９）
ここで、ＡＢＳ（Ｘ）は、Ｘの絶対値を返値として返す関数である。また前述のように、ＬＩＦＥＭＡＸは寿命を表すパラメータであり、ＸＳＺ、ＺＳＺは、パーティクル・エリアを定義するためのパラメータであり、ＶＬＭＩＮはジェネレータの位置を定義するためのパラメータである。
【０１８８】
このように本実施形態では、パーティクル・プリミティブの初期条件の設定又は再設定だけで、パーティクル・プリミティブがパーティクル・エリアの外に出ないことを保証することに成功している。
【０１８９】
３．本実施形態の処理
次に、本実施形態の処理の詳細例について、図１９、図２０のフローチャートを用いて説明する。
【０１９０】
まず、炎オブジェクト（図２参照）を視点（カメラ）座標系でＺソートする（ステップＳ３１）。即ち図１０（Ａ）、（Ｂ）で説明したように、まず、炎オブジェクトＯＢ１〜４についてのＺソートを行う。
【０１９１】
次に、オブジェクト番号Ｉ＝０に設定する（ステップＳ３２）。そして、Ｉ番目の炎オブジェクトの中心点（代表点）の座標と仮想カメラの座標とに基づき、ベクトルＦＬ（図８参照）を求める（ステップＳ３３）。
【０１９２】
次に、Ｉ番目の炎オブジェクトのローカル座標系上におけるベクトルＦＸ、ＦＹ、ＦＺと、求められたＦＬとの内積値を求める（ステップＳ３４）。そして、求められた内積値に基づいて、炎ポリゴン（ＰＬ０〜ＰＬ４）及びパーティクル・エリア（ＰＴＡ１〜４）についてのα値及び描画順序を決定する（ステップＳ３５）。
【０１９３】
次に、炎オブジェクトのベース・ポリゴン（ＰＬ０）を描画する（ステップＳ３６）。そして、１番目の描画優先順位のパーティクル・エリア内のパーティクル・プリミティブを描画する（ステップＳ３７）。
【０１９４】
次に、１番目、２番目の描画優先順位の炎ポリゴンを描画する（ステップＳ３８）。そして、２番目、３番目の描画優先順位のパーティクル・エリア内のパーティクル・プリミティブを描画する（ステップＳ３９）。
【０１９５】
次に、３番目、４番目の描画優先順位の炎ポリゴンを描画する（ステップＳ４０）。そして、４番目の描画優先順位のパーティクル・エリア内のパーティクル・プリミティブを描画する（ステップＳ４１）。
【０１９６】
次に、オブジェクト番号Ｉを１だけインクリメントする（ステップＳ４２）。そして、Ｉ＞ＩＭＡＸか否かを判断し、Ｉ≦ＩＭＡＸの場合には図１９のステップＳ３３に戻る。一方、Ｉ＞ＩＭＡＸの場合には処理を終了する。
【０１９７】
４．ハードウェア構成
次に、本実施形態を実現できるハードウェアの構成の一例について図２１を用いて説明する。
【０１９８】
メインプロセッサ９００は、ＣＤ９８２（情報記憶媒体）に格納されたプログラム、通信インターフェース９９０を介して転送されたプログラム、或いはＲＯＭ９５０（情報記憶媒体の１つ）に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などの種々の処理を実行する。
【０１９９】
コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、オブジェクトを移動させたり動作（モーション）させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【０２００】
ジオメトリプロセッサ９０４は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ９００で動作するプログラムが、その処理をジオメトリプロセッサ９０４に指示する。
【０２０１】
データ伸張プロセッサ９０６は、圧縮された画像データや音データを伸張するデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセレートする処理を行う。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、ＭＰＥＧ方式等で圧縮された動画像を表示できるようになる。なお、デコード処理の対象となる画像データや音データは、ＲＯＭ９５０、ＣＤ９８２に格納されたり、或いは通信インターフェース９９０を介して外部から転送される。
【０２０２】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ（プリミティブ面）で構成されるオブジェクトの描画（レンダリング）処理を高速に実行するものである。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０の機能を利用して、オブジェクトデータを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると、描画プロセッサ９１０は、これらのオブジェクトデータやテクスチャに基づいて、Ｚバッファなどを利用した陰面消去を行いながら、オブジェクトをフレームバッファ９２２に高速に描画する。また、描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行うことができる。そして、１フレーム分の画像がフレームバッファ９２２に書き込まれると、その画像はディスプレイ９１２に表示される。
【０２０３】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などの高品位のゲーム音を生成する。生成されたゲーム音は、スピーカ９３２から出力される。
【０２０４】
ゲームコントローラ９４２（レバー、ボタン、筺体、パッド型コントローラ又はガン型コントローラ等）からの操作データや、メモリカード９４４からのセーブデータ、個人データは、シリアルインターフェース９４０を介してデータ転送される。
【０２０５】
ＲＯＭ９５０にはシステムプログラムなどが格納される。なお、業務用ゲームシステムの場合には、ＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納されることになる。なお、ＲＯＭ９５０の代わりにハードディスクを利用するようにしてもよい。
【０２０６】
ＲＡＭ９６０は、各種プロセッサの作業領域として用いられる。
【０２０７】
ＤＭＡコントローラ９７０は、プロセッサ、メモリ（ＲＡＭ、ＶＲＡＭ、ＲＯＭ等）間でのＤＭＡ転送を制御するものである。
【０２０８】
ＣＤドライブ９８０は、プログラム、画像データ、或いは音データなどが格納されるＣＤ９８２（情報記憶媒体）を駆動し、これらのプログラム、データへのアクセスを可能にする。
【０２０９】
通信インターフェース９９０は、ネットワークを介して外部との間でデータ転送を行うためのインターフェースである。この場合に、通信インターフェース９９０に接続されるネットワークとしては、通信回線（アナログ電話回線、ＩＳＤＮ）、高速シリアルバスなどを考えることができる。そして、通信回線を利用することでインターネットを介したデータ転送が可能になる。また、高速シリアルバスを利用することで、他の画像生成システムとの間でのデータ転送が可能になる。
【０２１０】
なお、本発明の各手段は、その全てを、ハードウェアのみにより実現（実行）してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【０２１１】
そして、本発明の各手段をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、本発明の各手段をハードウェアを利用して実現するためのプログラムが格納されることになる。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０等は、その指示と渡されたデータとに基づいて、本発明の各手段を実現することになる。
【０２１２】
図２２（Ａ）に、本実施形態を業務用ゲームシステム（画像生成システム）に適用した場合の例を示す。プレーヤは、ディスプレイ１１００、１１０１上に映し出されたゲーム画像を見ながら、ガン型コントローラ１１０２、１１０３などを操作してゲームを楽しむ。内蔵されるシステムボード（サーキットボード）１１０６には、各種プロセッサ、各種メモリなどが実装される。そして、本発明の各手段を実現するためのプログラム（データ）は、システムボード１１０６上の情報記憶媒体であるメモリ１１０８に格納される。以下、このプログラムを格納プログラム（格納情報）と呼ぶ。
【０２１３】
図２２（Ｂ）に、本実施形態を家庭用のゲームシステム（画像生成システム）に適用した場合の例を示す。プレーヤはディスプレイ１２００に映し出されたゲーム画像を見ながら、ガン型コントローラ１２０２、１２０４などを操作してゲームを楽しむ。この場合、上記格納プログラム（格納情報）は、本体システムに着脱自在な情報記憶媒体であるＣＤ１２０６、或いはメモリカード１２０８、１２０９などに格納されている。
【０２１４】
図２２（Ｃ）に、ホスト装置１３００と、このホスト装置１３００とネットワーク１３０２（ＬＡＮのような小規模ネットワークや、インターネットのような広域ネットワーク）を介して接続される端末１３０４-１〜１３０４-n（ゲーム機、携帯電話、テレビ）とを含むシステムに本実施形態を適用した場合の例を示す。この場合、上記格納プログラム（格納情報）は、例えばホスト装置１３００が制御可能な磁気ディスク装置、磁気テープ装置、メモリなどの情報記憶媒体１３０６に格納されている。端末１３０４-１〜１３０４-nが、スタンドアロンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置１３００からは、ゲーム画像、ゲーム音を生成するためのゲームプログラム等が端末１３０４-１〜１３０４-nに配送される。一方、スタンドアロンで生成できない場合には、ホスト装置１３００がゲーム画像、ゲーム音を生成し、これを端末１３０４-１〜１３０４-nに伝送し端末において出力することになる。
【０２１５】
なお、図２２（Ｃ）の構成の場合に、本発明の各手段を、ホスト装置（サーバー）と端末とで分散して実現するようにしてもよい。また、本発明の各手段を実現するための上記格納プログラム（格納情報）を、ホスト装置（サーバー）の情報記憶媒体と端末の情報記憶媒体に分散して格納するようにしてもよい。
【０２１６】
またネットワークに接続する端末は、家庭用ゲームシステムであってもよいし業務用ゲームシステムであってもよい。そして、業務用ゲームシステムをネットワークに接続する場合には、業務用ゲームシステムとの間で情報のやり取りが可能であると共に家庭用ゲームシステムとの間でも情報のやり取りが可能なセーブ用情報記憶装置（メモリカード、携帯型ゲーム装置）を用いることが望ましい。
【０２１７】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【０２１８】
例えば、本発明のオブジェクトの形状は図２、図４（Ａ）〜（Ｄ）で説明したものに限定されず、種々の形状を採用できる。
【０２１９】
また、α値の設定手法も、図６（Ａ）〜図９（Ｂ）で説明した手法に限定されず、これと均等な種々の変形実施が可能である。
【０２２０】
また、描画順序の決定手法も、図１０（Ａ）〜図１５で説明した手法に限定されるものではない。
【０２２１】
更に、パーティクル・プリミティブの処理手法も、図１６〜図１８（Ｅ）で説明した手法に限定されない。
【０２２２】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０２２３】
また、本発明は種々のゲーム（格闘ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、競争ゲーム、ロールプレイングゲーム、音楽演奏ゲーム、ダンスゲーム等）に適用できる。
【０２２４】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々の画像生成システム（ゲームシステム）に適用できる。
【図面の簡単な説明】
【図１】本実施形態の画像生成システムの機能ブロック図の例である。
【図２】本実施形態で用いられるオブジェクトの形状の例を示す図である。
【図３】図３（Ａ）、（Ｂ）、（Ｃ）は、オブジェクトにマッピングされるテクスチャ（ムービーテクスチャ）の例である。
【図４】図４（Ａ）〜（Ｄ）は、オブジェクトの形状の他の例について説明するための図である。
【図５】図５（Ａ）〜（Ｄ）は、図２の形状のオブジェクトを用いた場合の問題点について説明するための図である。
【図６】図６（Ａ）〜（Ｄ）は、α値の設定手法について説明するための図である。
【図７】α値の設定手法の具体例について説明するためのフローチャートである。
【図８】α値の設定手法の具体例について説明するための図である。
【図９】図９（Ａ）、（Ｂ）は、頂点のα値やピクセルのα値を求める手法について説明するための図である。
【図１０】図１０（Ａ）、（Ｂ）は、本実施形態のソート処理について説明するための図である。
【図１１】図１１（Ａ）〜（Ｄ）は、ポリゴンの面と仮想カメラの向きに応じてポリゴンの描画順序を決定する手法について説明するための図である。
【図１２】パーティクル・エリアの設定とパーティクル・プリミティブの発生について説明するための図である。
【図１３】図１３（Ａ）、（Ｂ）は、ポリゴンの面と仮想カメラの向きに応じてポリゴンやパーティクル・エリアの描画順序を決定する手法について説明するための図である。
【図１４】図１４（Ａ）、（Ｂ）も、ポリゴンの面と仮想カメラの向きに応じてポリゴンやパーティクル・エリアの描画順序を決定する手法について説明するための図である。
【図１５】ベクトルの内積値を利用してポリゴンの面と仮想カメラの向きの方向関係を決定する手法について説明するための図である。
【図１６】パーティクル・プリミティブのジェネレータについて説明するための図である。
【図１７】パーティクル処理について説明するためのフローチャートである。
【図１８】図１８（Ａ）〜（Ｅ）は、パーティクル・プリミティブの移動を制限する手法について説明するための図である。
【図１９】本実施形態の処理の詳細例について示すフローチャートである。
【図２０】本実施形態の処理の詳細例について示すフローチャートである。
【図２１】本実施形態を実現できるハードウェアの構成の一例を示す図である。
【図２２】図２２（Ａ）、（Ｂ）、（Ｃ）は、本実施形態が適用される種々の形態のシステムの例を示す図である。
【符号の説明】
ＶＣ    仮想カメラ
ＯＢ    オブジェクト
ＰＬ０〜ＰＬ４  ポリゴン
ＲＬ    基準線
ＦＸ、ＦＹ、ＦＺ  ベクトル
ＶＸ１〜ＶＸ４  頂点
ＰＴＡ１〜ＰＴＡ４  パーティクル・エリア
ＣＰ    中心点
１００  処理部
１１０  オブジェクト空間設定部
１１２  α値設定部
１１４  パーティクル処理部
１１６  描画順序決定部
１２０  描画部
１２２  テクスチャマッピング部
１２４  α合成部
１６０  操作部
１７０  記憶部
１７２  主記憶部
１７４  描画バッファ
１７６  テクスチャ記憶部
１８０  情報記憶媒体
１９０  表示部
１９２  音出力部
１９４  携帯型情報記憶装置
１９６  通信部
【図１】
0004592043.tif 000002
【図２】
0004592043.tif 000003
【図３】
0004592043.tif 000004
【図４】
0004592043.tif 000005
【図５】
0004592043.tif 000006
【図６】
0004592043.tif 000007
【図７】
0004592043.tif 000008
【図８】
0004592043.tif 000009
【図９】
0004592043.tif 000010
【図１０】
0004592043.tif 000011
【図１１】
0004592043.tif 000012
【図１２】
0004592043.tif 000013
【図１３】
0004592043.tif 000014
【図１４】
0004592043.tif 000015
【図１５】
0004592043.tif 000016
【図１６】
0004592043.tif 000017
【図１７】
0004592043.tif 000018
【図１８】
0004592043.tif 000019
【図１９】
0004592043.tif 000020
【図２０】
0004592043.tif 000021
【図２１】
0004592043.tif 000022
【図２２】
0004592043.tif 000023