(57)【要約】【課題】  炎のオブジェクトの生成処理に係る処理コストを軽減させること。【解決手段】  発生している各パーティクルについて、パーティクルの位置を移動させ（Ｓ１２０４）、移動した位置のデータを記録し（Ｓ１２０５）、前の位置と現在の位置との間に帯ポリゴンを配置する（Ｓ１２０７）。【選択図】  図１２
2005092754.tif 000002
【特許請求の範囲】
【請求項１】
３次元仮想空間に発生させる複数のパーティクルを用いて炎のオブジェクトを生成する画像処理装置であって、
前記３次元仮想空間におけるパーティクルの初期発生領域を設定する設定手段と、
前記初期発生領域内で発生するパーティクルの初期移動方向、及び初期移動速度を初期値データとして記録する初期値データ記録手段と、
所定の方向への加速度を示すデータ、及び前記初期値データを用いて、前記パーティクルを前記３次元仮想空間内で移動させる移動手段と、
前記移動手段によって移動する前記パーティクルの各位置を示すデータを順次記録する位置記録手段と、
前記位置記録手段が記録しているデータが示す各位置間にポリゴンを配置することで、前記パーティクルの移動経路を帯状のオブジェクトとして生成する帯状オブジェクト生成手段とを備え、
前記初期値データ記録手段、前記移動手段、前記位置記録手段、前記帯状オブジェクト生成手段による処理を、前記３次元仮想空間内に存在する複数のパーティクルの夫々について行うことで生成される複数の帯状のオブジェクトによって炎のオブジェクトを形成することを特徴とする画像処理装置。
【請求項２】
３次元仮想空間に発生させる複数のパーティクルを用いて揺らぎを有するオブジェクトを生成する画像処理装置であって、
前記３次元仮想空間におけるパーティクルの初期発生領域を設定する設定手段と、
前記初期発生領域内で発生するパーティクルの初期移動方向、及び初期移動速度を初期値データとして記録する初期値データ記録手段と、
所定の方向への加速度を示すデータ、及び前記初期値データを用いて、前記パーティクルを前記３次元仮想空間内で移動させる移動手段と、
前記移動手段によって移動する前記パーティクルの各位置を示すデータを順次記録する位置記録手段と、
前記位置記録手段が記録しているデータが示す各位置間にポリゴンを配置することで、前記パーティクルの移動経路を帯状のオブジェクトとして生成する帯状オブジェクト生成手段とを備え、
前記初期値データ記録手段、前記移動手段、前記位置記録手段、前記帯状オブジェクト生成手段による処理を、前記３次元仮想空間内に存在する複数のパーティクルの夫々について行うことで生成される複数の帯状のオブジェクトによって揺らぎを有するオブジェクトを形成することを特徴とする画像処理装置。
【請求項３】
３次元仮想空間に発生させる複数のパーティクルを用いて炎のオブジェクトを生成する画像処理装置が行う画像処理方法であって、
前記３次元仮想空間におけるパーティクルの初期発生領域を設定する設定工程と、
前記初期発生領域内で発生するパーティクルの初期移動方向、及び初期移動速度を初期値データとして前記画像処理装置が有するメモリに記録する初期値データ記録工程と、
所定の方向への加速度を示すデータ、及び前記初期値データを用いて、前記パーティクルを前記３次元仮想空間内で移動させる移動工程と、
前記移動工程で移動する前記パーティクルの各位置を示すデータを順次前記メモリに記録する位置記録工程と、
前記位置記録工程で記録したデータが示す各位置間にポリゴンを配置することで、前記パーティクルの移動経路を帯状のオブジェクトとして生成する帯状オブジェクト生成工程とを備え、
前記初期値データ記録工程、前記移動工程、前記位置記録工程、前記帯状オブジェクト生成工程による処理を、前記３次元仮想空間内に存在する複数のパーティクルの夫々について行うことで生成される複数の帯状のオブジェクトによって炎のオブジェクトを形成することを特徴とする画像処理方法。
【請求項４】
前記移動工程では、
前記初期値データ、及び前記加速度を示すデータに基づいて決まるパーティクルの移動方向を、前記３次元仮想空間内で所定の経路上を移動する１つ以上の仮想の点と前記パーティクルとの位置関係に基づいて変更し、変更後の移動方向に前記パーティクルを移動させることを特徴とする請求項３に記載の画像処理方法。
【請求項５】
前記初期値データ記録工程では、前記初期発生領域内で発生するパーティクルの生存時間を示すデータを前記初期値データに含めて前記メモリに記録することを特徴とする請求項３又は４に記載の画像処理方法。
【請求項６】
前記帯状オブジェクト生成工程では、前記生存時間内にパーティクルが移動した各位置を示すデータが前記位置記録工程で前記メモリに記録された後に、当該データが示す各位置間にポリゴンを配置することで、前記パーティクルの移動経路を帯状のオブジェクトとして生成することを特徴とする請求項３乃至５の何れか１項に記載の画像処理方法。
【請求項７】
前記帯状オブジェクト生成工程では、パーティクルが第１の位置から第２の位置に移動し、当該第２の位置を示すデータが前記位置記録工程で前記メモリに記録された後に、前記第１の位置と前記第２の位置との間にポリゴンを配置する処理を、前記パーティクルが前記生存時間内で移動する毎に行うことを特徴とする請求項３乃至５の何れか１項に記載の画像処理方法。
【請求項８】
前記帯状オブジェクト生成工程は更に、
前記３次元仮想空間中に設定された視点の視線方向ベクトルと、パーティクルが移動した位置間の移動方向へのベクトルとの外積を計算する第１の計算工程と、
前記第１の計算工程で計算した外積結果のベクトルと、前記移動方向へのベクトルとの外積を計算する第２の計算工程とを備え、
前記第２の計算工程で計算した外積結果のベクトルが示す方向を法線方向とし、且つ前記移動方向に、前記移動方向へのベクトルのサイズを有するポリゴンを、前記位置間に配置することを特徴とする請求項３乃至７の何れか１項に記載の画像処理方法。
【請求項９】
３次元仮想空間に発生させる複数のパーティクルを用いて揺らぎを有するオブジェクトを生成する画像処理装置が行う画像処理方法であって、
前記３次元仮想空間におけるパーティクルの初期発生領域を設定する設定工程と、
前記初期発生領域内で発生するパーティクルの初期移動方向、及び初期移動速度を初期値データとして前記画像処理装置が有するメモリに記録する初期値データ記録工程と、
所定の方向への加速度を示すデータ、及び前記初期値データを用いて、前記パーティクルを前記３次元仮想空間内で移動させる移動工程と、
前記移動工程で移動する前記パーティクルの各位置を示すデータを順次前記メモリに記録する位置記録工程と、
前記位置記録工程で記録したデータが示す各位置間にポリゴンを配置することで、前記パーティクルの移動経路を帯状のオブジェクトとして生成する帯状オブジェクト生成工程とを備え、
前記初期値データ記録工程、前記移動工程、前記位置記録工程、前記帯状オブジェクト生成工程による処理を、前記３次元仮想空間内に存在する複数のパーティクルの夫々について行うことで生成される複数の帯状のオブジェクトによって揺らぎを有するオブジェクトを形成することを特徴とする画像処理方法。
【請求項１０】
コンピュータに請求項３乃至９の何れか１項に記載の画像処理方法を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーティクルを用いて炎等、揺らぎを有するオブジェクトを生成する技術に関するものである。
【背景技術】
【０００２】
３次元仮想空間内で炎のオブジェクトを生成するための技術は従来から数多く提案されている。そのうちの代表的な手法として、パーティクルを用いるものがある。この手法では、炎を表現する領域中に複数のパーティクルを配置し、夫々のパーティクルに予め決められた式に従った挙動を与える。これによって各パーティクルは個々に不規則な移動を行う。そして各パーティクルの位置に、例えば中心部ほど明るい球体のオブジェクトを配置することで、全体として揺らぎを有する炎のオブジェクトを形成することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし上記従来技術では、各パーティクル間には何も存在しないので、パーティクルの数が少ないと、所々穴の空いた炎のオブジェクトとなり、その数によっては炎に見えないという問題がある。この問題に対処するためには当然パーティクルの数を増やせばよいのであるが、パーティクルの数を増やすと、各パーティクルの挙動を計算する計算コストや、各パーティクルの位置を管理するためのメモリ使用量といった処理コストが増大し、リアルタイムにゲーム画面のレンダリングが要求されるゲームに適用することは困難なものとなる。
【０００４】
本発明はこのような点を考慮して成されたものであり、炎のオブジェクトの生成処理に係る処理コストを軽減させることを目的とする。
【０００５】
また、本発明は、炎のオブジェクトに限らず、一般に煙や水など、揺らぎを有するオブジェクトの生成処理に係る処理コストについても軽減させることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の目的を達成するために、例えば本発明の画像処理装置は以下の構成を備える。
【０００７】
即ち、３次元仮想空間に発生させる複数のパーティクルを用いて炎のオブジェクトを生成する画像処理装置であって、
前記３次元仮想空間におけるパーティクルの初期発生領域を設定する設定手段と、
前記初期発生領域内で発生するパーティクルの初期移動方向、及び初期移動速度を初期値データとして記録する初期値データ記録手段と、
所定の方向への加速度を示すデータ、及び前記初期値データを用いて、前記パーティクルを前記３次元仮想空間内で移動させる移動手段と、
前記移動手段によって移動する前記パーティクルの各位置を示すデータを順次記録する位置記録手段と、
前記位置記録手段が記録しているデータが示す各位置間にポリゴンを配置することで、前記パーティクルの移動経路を帯状のオブジェクトとして生成する帯状オブジェクト生成手段とを備え、
前記初期値データ記録手段、前記移動手段、前記位置記録手段、前記帯状オブジェクト生成手段による処理を、前記３次元仮想空間内に存在する複数のパーティクルの夫々について行うことで生成される複数の帯状のオブジェクトによって炎のオブジェクトを形成することを特徴とする。
【０００８】
本発明の目的を達成するために、例えば本発明の画像処理装置は以下の構成を備える。
【０００９】
即ち、３次元仮想空間に発生させる複数のパーティクルを用いて揺らぎを有するオブジェクトを生成する画像処理装置であって、
前記３次元仮想空間におけるパーティクルの初期発生領域を設定する設定手段と、
前記初期発生領域内で発生するパーティクルの初期移動方向、及び初期移動速度を初期値データとして記録する初期値データ記録手段と、
所定の方向への加速度を示すデータ、及び前記初期値データを用いて、前記パーティクルを前記３次元仮想空間内で移動させる移動手段と、
前記移動手段によって移動する前記パーティクルの各位置を示すデータを順次記録する位置記録手段と、
前記位置記録手段が記録しているデータが示す各位置間にポリゴンを配置することで、前記パーティクルの移動経路を帯状のオブジェクトとして生成する帯状オブジェクト生成手段とを備え、
前記初期値データ記録手段、前記移動手段、前記位置記録手段、前記帯状オブジェクト生成手段による処理を、前記３次元仮想空間内に存在する複数のパーティクルの夫々について行うことで生成される複数の帯状のオブジェクトによって揺らぎを有するオブジェクトを形成することを特徴とする。
【００１０】
本発明の目的を達成するために、例えば本発明の画像処理方法は以下の構成を備える。
【００１１】
即ち、３次元仮想空間に発生させる複数のパーティクルを用いて炎のオブジェクトを生成する画像処理装置が行う画像処理方法であって、
前記３次元仮想空間におけるパーティクルの初期発生領域を設定する設定工程と、
前記初期発生領域内で発生するパーティクルの初期移動方向、及び初期移動速度を初期値データとして前記画像処理装置が有するメモリに記録する初期値データ記録工程と、
所定の方向への加速度を示すデータ、及び前記初期値データを用いて、前記パーティクルを前記３次元仮想空間内で移動させる移動工程と、
前記移動工程で移動する前記パーティクルの各位置を示すデータを順次前記メモリに記録する位置記録工程と、
前記位置記録工程で記録したデータが示す各位置間にポリゴンを配置することで、前記パーティクルの移動経路を帯状のオブジェクトとして生成する帯状オブジェクト生成工程とを備え、
前記初期値データ記録工程、前記移動工程、前記位置記録工程、前記帯状オブジェクト生成工程による処理を、前記３次元仮想空間内に存在する複数のパーティクルの夫々について行うことで生成される複数の帯状のオブジェクトによって炎のオブジェクトを形成することを特徴とする。
【００１２】
本発明の目的を達成するために、例えば本発明の画像処理方法は以下の構成を備える。
【００１３】
即ち、３次元仮想空間に発生させる複数のパーティクルを用いて揺らぎを有するオブジェクトを生成する画像処理装置が行う画像処理方法であって、
前記３次元仮想空間におけるパーティクルの初期発生領域を設定する設定工程と、
前記初期発生領域内で発生するパーティクルの初期移動方向、及び初期移動速度を初期値データとして前記画像処理装置が有するメモリに記録する初期値データ記録工程と、
所定の方向への加速度を示すデータ、及び前記初期値データを用いて、前記パーティクルを前記３次元仮想空間内で移動させる移動工程と、
前記移動工程で移動する前記パーティクルの各位置を示すデータを順次前記メモリに記録する位置記録工程と、
前記位置記録工程で記録したデータが示す各位置間にポリゴンを配置することで、前記パーティクルの移動経路を帯状のオブジェクトとして生成する帯状オブジェクト生成工程とを備え、
前記初期値データ記録工程、前記移動工程、前記位置記録工程、前記帯状オブジェクト生成工程による処理を、前記３次元仮想空間内に存在する複数のパーティクルの夫々について行うことで生成される複数の帯状のオブジェクトによって揺らぎを有するオブジェクトを形成することを特徴とする。
【発明の効果】
【００１４】
本発明の構成によって、炎のオブジェクトの生成処理に係る処理コストを軽減させることができる。また、炎のオブジェクトに限らず、一般に煙や水など、揺らぎを有するオブジェクトの生成処理に係る処理コストについても軽減させることができる。
【発明を実施するための最良の形態】
【００１５】
以下添付図面を参照して、本発明の好適な実施形態について詳細に説明する。
【００１６】
［第１の実施形態］
本実施形態では、「揺らぎ」を有するオブジェクトとして「炎を表現するオブジェクト（以下、炎のオブジェクト）」を生成する。以下、この「炎のオブジェクト」の生成処理についてより詳細に説明する。
【００１７】
図１は本実施形態に係る「炎のオブジェクト」の生成処理を実行する画像処理装置として機能するコンピュータの基本構成を示すブロック図である。
【００１８】
１０１はＣＰＵで、ＲＡＭ１０２やＲＯＭ１０３に記憶されているプログラムやデータを用いて本装置全体の制御を行うと共に、本実施形態に係る上記「炎のオブジェクト」の生成処理を実行する。
【００１９】
１０２はＲＡＭで、外部記憶装置１０７や記憶媒体ドライブ装置１０８からロードされたプログラムやデータを一時的に記憶するためのエリアを備えると共に、ＣＰＵ１０１が各種の処理を実行するために用いるワークエリアを備える。
【００２０】
１０３はＲＯＭで、ブートプログラムや本装置の設定に係るデータなどが格納されている。
【００２１】
１０４，１０５は夫々キーボード、マウスで、ＣＰＵ１０１に各種の指示を入力するために使用されるものである。なお、ＣＰＵ１０１に各種の指示を入力することができるデバイスとしてはこれ以外にも、例えばジョイスティックやゲームパッドなどの他のデバイスを用いることもできる。
【００２２】
１０６は表示部で、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１０１による処理結果を画像や文字などの情報により表示することができる。
【００２３】
１０７は外部記憶装置で、ハードディスクドライブ装置などの大容量情報記憶装置として機能するものであり、ここにＯＳ（オペレーティングシステム）や、ＣＰＵ１０１に後述する本実施形態に係る上記「炎のオブジェクト」の生成処理を実行させるためのプログラムやデータ、以下説明する３次元モデルのデータ（３次元モデルがポリゴンにより表現されるものである場合には、３次元モデルを構成する各ポリゴンの各頂点座標位置、各ポリゴンの法線ベクトルを示すデータ、そしてこの３次元モデルにテクスチャをマッピングする場合には、このテクスチャのデータ等）等が保存されており、これらはＣＰＵ１０１による制御により、必要に応じてＲＡＭ１０２に読み出される。
【００２４】
１０８は記憶媒体ドライブ装置で、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体に記録されているプログラムやデータを読み出し、ＲＡＭ１０２や外部記憶装置１０７に出力するものである。なおＣＰＵ１０１に後述する本実施形態に係る「炎のオブジェクト」の生成処理を実行させるためのプログラムやデータ、上記３次元モデルのデータをこの記憶媒体に記録させておいても良く、その場合には、これらプログラムやデータは、ＣＰＵ１０１による制御の下、記憶媒体ドライブ装置１０８によって記憶媒体から読み出され、ＲＡＭ１０２に出力される。また、記憶媒体がＣＤ−ＲやＤＶＤ−ＲＡＭなどの書き込み可能なものである場合には、記憶媒体ドライブ装置１０８はＣＰＵ１０１の制御により、この記憶媒体にプログラムやデータを書き込む処理を行う。
【００２５】
１０９は上記各部を繋ぐバスである。
【００２６】
次に、以上の構成を備えるコンピュータが行う、本実施形態に係る「炎のオブジェクト」の生成処理について説明する。
【００２７】
図２は、炎のオブジェクトを生成するために用いるパーティクルの初期発生領域を説明するための図である。同図において２０１は「ろうそく」の３次元モデル、２０２はこのろうそく上に炎のオブジェクトを生成、配置するために、パーティクルを発生させるための初期位置が取りうる許容領域を示す。
【００２８】
３次元モデル２０１は３次元仮想空間中に３次元形状を有するモデルであり、例えば、複数のポリゴンによりその形状が表現され、必要に応じてその表面上（ポリゴン上）にはテクスチャ画像がマッピングされている。このような３次元モデルの表現方法については周知の技術であるので、これ以上の説明は省略する。
【００２９】
２０２はパーティクルを発生させるための領域を示し、パーティクルはこの領域２０２内のランダムに決められた位置で発生する。この初期発生領域２０２の設定方法としては、例えばこの領域２０２の中心位置を３次元モデル２０１上に設定すると共に、この中心位置からの最大半径を設定する。この場合、パーティクルの発生方法は、この中心位置からランダムに方向、半径（０より大きく、且つ上記最大半径以下となるような半径）を決め、上記中心位置から決めた方向に決めた半径分だけ進んだ位置にパーティクルを発生させればよい。
【００３０】
なお、本実施形態ではろうそく上に炎が存在するという設定で、このパーティクルの初期発生領域をろうそくの３次元モデル上に設けたのであるが、この領域を３次元仮想空間中の何れの位置に設けても、本実施形態に係る炎のオブジェクトの生成処理が適用可能であるということは、以下の説明から明らかとなるであろう。
【００３１】
次に、この初期発生領域内に発生させたパーティクルに与える挙動について説明する。図３は、図２に示した初期発生領域２０１内で発生させたパーティクルに挙動を与えるために、パーティクルに対して設定する内容を説明する図である。尚同図において、図２と同じ部分には同じ番号を付けており、その説明は省略する。また、初期発生領域内には複数のパーティクルを発生させるのであるが、以下ではそのうちの１つを例に取り説明する。この説明はその他の複数のパーティクルについても同様に適用可能である。
【００３２】
同図において３０１はパーティクルを示す、パーティクル３０１を初期発生領域内で発生させると、このパーティクル３０１には、初期移動方向、初期移動速度を設定する。また、パーティクルを発生させるということは、このパーティクルの初期位置を与えることをも含む。
【００３３】
この初期移動方向、初期移動速度を、本実施形態では、速度ベクトル（同図ではＶ）でもって表現する。同図の通り、この速度ベクトルＶを構成する要素はｖｘ、ｖｙ、ｖｚの３つであり、これら３つの要素は３次元仮想空間中の座標系に従ったものである。よって、パーティクルの３次元仮想空間における移動方向は、この３つの要素によって表現することができる。
【００３４】
従って、現在のパーティクルの位置をＸ（Ｘ＝［ｘ  ｙ  ｚ］Ｔ）とすると、
Ｘ＝Ｘ＋Ｖ
即ち、
ｘ＝ｘ＋ｖｘ
ｙ＝ｙ＋ｖｙ
ｚ＝ｚ＋ｖｚ
を計算することで、このパーティクル３０１は設定した速度ベクトル方向に、このベクトルの大きさだけ移動することになる。
【００３５】
従って、初期発生領域内でパーティクルを発生させると、先ず発生させたパーティクルに対して、速度ベクトルを設定する。速度ベクトルの設定とは、速度ベクトルを構成する上記３つの要素を決定することであるが、この速度ベクトルの要素、ｖｘ、ｖｙ、ｖｚは夫々ある範囲内でランダムに決まった数値とする。しかし、この決定方法は特に限定されるものではない。
【００３６】
このようにパーティクルを発生させるたびに、このパーティクルについて速度ベクトルが設定されるのであるが、設定された速度ベクトルのデータは順次ＲＡＭ１０２に記録されていく。これによりＲＡＭ１０２には現在発生しているパーティクルの速度ベクトルのデータが記録されていることになり、現在発生しているパーティクルの速度ベクトルを管理することができる。
【００３７】
なお、パーティクルを発生させた場合には上記速度ベクトルと共に、生存寿命を示すデータも生成されるのであるが、これについて詳しくは後述する。
【００３８】
一方、３次元仮想空間中で炎の上がる方向、即ち、ろうそくに対して上向きの加速度を示すデータが予め作成されて外部記憶装置１０７もしくは記憶媒体に記録されており、外部記憶装置１０７から、もしくは記憶媒体ドライブ装置１０８によって記憶媒体からＲＡＭ１０２にロードされている。
【００３９】
即ち、上記の式であるＸ＝Ｘ＋Ｖに従った計算を繰り返すと、各パーティクルの各々の位置は初期発生領域から遠ざかる一方の動きとなってしまう。
【００４０】
そこで、このように、３次元仮想空間中で炎の上がる方向、即ち、ろうそくに対して上向きの加速度を設け、この加速度をａ（ａ＝［ａｘ  ａｙ  ａｚ］Ｔ）としたときに、
Ｖ＝Ｖ＋ａ
即ち、
ｖｘ＝ｖｘ＋ａｘ
ｖｙ＝ｖｙ＋ａｙ
ｖｚ＝ｖｚ＋ａｚ
を計算し、計算後のＶを用いてＸ＝Ｘ＋Ｖを計算すれば、パーティクルの動きは、初めは各々に設定された初期移動方向に移動するものの、徐々に炎の上がる方向、即ち、ろうそくに対して上向きの方向に移動することになる。
【００４１】
まとめれば、このようにパーティクルを移動させるためには、Ｖ＝Ｖ＋ａを計算し、次に、更新後のＶを用いてＸ＝Ｘ＋Ｖを計算すれば良いことになる。
【００４２】
しかし、以上の計算だけでは夫々のパーティクルは最終的には共に平行に、且つろうそくに対して上向きの方向に移動するだけで、夫々の挙動には炎独特の「揺らぎ」は見られない。従って次に、発生させた各パーティクルに「揺らぎ」の挙動を与える処理について説明する。
【００４３】
図４は、発生させた各パーティクルに対して「揺らぎ」の挙動を与えるための仕組みを示す図である。同図において図２と同じ部分については同じ番号を付けており、その説明は省略する。
【００４４】
同図において４０１は３次元モデル２０１の上面（同図において斜線部分）から螺旋状に上向きの方向に延長する経路で、４０２ａ、４０２ｂ、４０２ｃは夫々、この経路４０１上を同図矢印方向に移動して上向きに上昇する重力点である。なお、この経路４０１，重力点４０２ａ、４０２ｂ、４０２ｃは夫々以下説明する処理のために計算上設けたものであって、表示されるものではない。また、重力点の数は同図では３つとしているが、以下の説明の本質がこの数に限定されたものではないことは、以下の説明より明らかとなるであろう。
【００４５】
重力点（４０２ａ、４０２ｂ、４０２ｃ）は夫々順次定期的もしくは不定期的に３次元モデル２０１の上面における経路４０１の一端（同図では４０３で示している位置）に発生し、上述の通り、経路４０１上を同図矢印方向に移動する。例えば同図の場合、先に重力点４０２ｃが発生し、経路４０１上を同図矢印方向に移動する。そして所定の時間の経過後、次に重力点４０２ｂが発生し、同様に経路４０１上を同図矢印方向に移動する。そして更に所定の時間の経過後、次に重力点４０２ａが発生し、同様に経路４０１上を同図矢印方向に移動する。夫々の重力点の移動速度は同じでも良いし、異なっていても良い。なお、この経路４０１の長さは有限である故に、経路４０１上を移動する重力点が経路４０１の他端（同図では４０４で示している位置）に来た場合には、この重力点を消去する。そしてまた、次に重力点を一端４０３の位置に発生させる処理を繰り返す。
【００４６】
以上の、経路４０１を示すデータ（例えば自由曲線により経路４０１を生成するためには各制御点の座標位置のデータ）は予め生成されており、必要に応じてＲＡＭ１０２にロードされるものである。また、各重力点の発生、移動処理についてはＣＰＵ１０１が行うものとする。
【００４７】
次に上記各重力点を用いてパーティクルの移動方向を制御し、その移動に「揺らぎ」を与えるための処理について説明する。
【００４８】
図５は、２つの重力点４０２ａ、４０２ｂによってパーティクルの移動方向を制御する処理を説明する為の図である。同図において図４と同じ部分については同じ番号を付けており、その説明は省略する。
【００４９】
同図において５０１はパーティクルで、４０２ａ、４０２ｂは夫々上記重力点である。先ず、パーティクル５０１と重力点４０２ａとの距離ｒ１を求める。そして以下の式
Ｆ１＝ｋ／（ｒ１×ｒ１）
を計算することでＦ１の値を求める。ここでｋについては説明を簡単にするためにｋ＝１とする。そして、パーティクル５０１の位置から重力点４０２ａの位置に向かうベクトルをｇ１（重力点４０２ａの位置Ｙからパーティクル５０１の位置Ｘを引いた結果得られるベクトル）を求め、求めたベクトルｇ１を用いて
ｆ１＝Ｆ１×ｇ１／｜ｇ１｜
を計算し、ベクトルｆ１を得る。ここで｜ｇ１｜はベクトルｇ１の大きさを示す。即ち、このベクトルｆ１は、重力点４０２ａが存在するが故に、パーティクル５０１が重力点４０２ａに対して引かれる力のベクトルを表す。
【００５０】
同様にして、今度はパーティクル５０１と重力点４０２ｂとの距離ｒ２を求める。そして以下の式
Ｆ２＝ｋ／（ｒ２×ｒ２）
を計算することでＦ２の値を求める。そして、パーティクル５０１の位置から重力点４０２ｂの位置に向かうベクトルをｇ２（重力点４０２ｂの位置Ｚからパーティクル５０１の位置Ｘを引いた結果得られるベクトル）を求め、求めたベクトルｇ２を用いて
ｆ２＝Ｆ２×ｇ２／｜ｇ２｜
を計算し、ベクトルｆ２を得る。ここで｜ｇ２｜はベクトルｇ２の大きさを示す。即ち、このベクトルｆ２は、重力点４０２ｂが存在するが故に、パーティクル５０１が重力点４０２ｂに対して引かれる力のベクトルを表す。
【００５１】
このように、重力点の存在に起因してパーティクル５０１に作用する力（同図ではｆ１，ｆ２）のベクトルを求める処理は、パーティクル５０１の位置の近傍にある重力点について全て行うものとするが、経路４０１上に存在する重力点のうち、それに対して引かれる力を計算するのかは特に限定するものではない。
【００５２】
次に、同図では力のベクトルｆ１，ｆ２が求まったので、これらのベクトルを合成し、合成結果のベクトルをｆ３で表す。従って同図では重力点４０２ａ、４０２ｂの存在によりパーティクル５０１に作用する力のベクトルをｆ３として求めることができる。
【００５３】
そしてこの力のベクトルｆ３によりパーティクル５０１の移動方向を制御するのであるが、より具体的にはパーティクル５０１に対する加速度方向を制御する。そこで、上記加速度ａの代わりに、（ａ＋ｆ３）を用いれば良い。即ち、Ｖ＝Ｖ＋（ａ＋ｆ３）を計算し、次に、更新後のＶを用いてＸ＝Ｘ＋Ｖを計算すれば良い。
【００５４】
このように、複数の重力点を発生させ、夫々を移動させることで、既に発生しているパーティクルとの距離が動的に変化するので、パーティクルに対して加わる力のベクトルの方向や大きさも動的に変化することになり、これによりパーティクルの挙動に揺らぎを与えることができる。
【００５５】
図６は以上の処理によって各パーティクルに与える挙動を説明する図である。上述の通り、同図に示したパーティクル６０１乃至６０４は夫々、重力点４０２ａ、４０２ｂ、４０２ｃ、４０２ｄ、４０２ｅの何れかからの距離に応じて上記ベクトルｆ３の方向が変わるので、夫々のパーティクルは夫々異なる方向に移動している。
【００５６】
以上の処理によって各パーティクルは、初めは各々に設定された初期移動方向に移動するものの、徐々に炎の上がる方向、即ち、ろうそくに対して上向きの方向に移動し、更にその移動過程において１つ以上の重力点の存在による影響によってその移動方向に揺らぎを与えることができる。
【００５７】
次に、このような挙動を示すパーティクルを用いて、炎のオブジェクトを生成する処理について説明する。本実施形態では炎のオブジェクトを、複数の帯状のオブジェクトによって表現する。そして夫々の帯状のオブジェクトは１つのパーティクルの移動の軌跡に基づいて生成されるものである。以下の説明では、複数の帯状のオブジェクトのうちの１つの帯状のオブジェクトを例に取り、この帯状のオブジェクトを生成する処理について説明する。
【００５８】
ＣＰＵ１０１は、パーティクルの位置を上記処理によって移動させる毎に、移動した位置をＲＡＭ１０２にデータとして記録する。図７はあるパーティクル（注目パーティクル）の移動の軌跡を示す図である。同図において７０１が注目パーティクルの移動の軌跡を示すものであり、７０２乃至７０７の各点は上記注目パーティクルを上記式に従って移動させた各位置を示すものである。
【００５９】
上述の通り、パーティクルを発生させる際には速度ベクトルと共に、生存寿命を示すデータも生成される。この生存寿命とは、パーティクルが３次元仮想空間中に存在する時間を示すものである。ＣＰＵ１０１はパーティクルを発生させると、不図示の内部タイマを用いて計時を始める。パーティクルを複数発生させる場合には夫々について発生後経過する時間を計時する。そしてパーティクルの発生後計時示された時間が、このパーティクルに設定された生存寿命に達した場合には、このパーティクルを３次元仮想空間から消去し、このパーティクルに係るデータを用いて以下説明する帯状のオブジェクトを生成する処理を行った後に、このパーティクルに係るデータを破棄する。
【００６０】
従ってパーティクルの移動した軌跡の長さは当然有限となるので、パーティクルが移動した各位置を示すデータも有限の個数となる。図７の例では注目パーティクルは７０２乃至７０７で示す６カ所の位置を順次移動しているので、注目パーティクルについては、７０２乃至７０７で示す６カ所の位置のデータが順次ＲＡＭ１０２に記憶されることになる。
【００６１】
図８は、ＲＡＭ１０２に記憶された、注目パーティクルが移動した各位置のデータを管理するテーブルを示す図である。同図では、注目パーティクルはＮ箇所の位置を移動しており、夫々の位置（３次元仮想空間中の位置であるので、ｘ、ｙ、ｚの３つの座標値でもって表現している）が順次このテーブルに登録される。
【００６２】
次に、このテーブルを用いて、帯状のオブジェクトを生成する処理について説明する。本実施形態に係る炎のオブジェクト生成処理によって生成される炎のオブジェクトは当然、３次元仮想空間中に設けられた視点の位置から見るものである。よってこの炎のオブジェクトを構成する帯状のオブジェクトも当然この視点から見えるように、帯の面の部分が視点側に向いていなくてはいけない。以下ではそのような帯状のオブジェクトの生成について説明する。
【００６３】
図９は本実施形態に係る帯状のオブジェクトを生成する処理を説明するための図である。本実施形態に係る帯状のオブジェクトは、パーティクルが移動した各位置間にポリゴン（以下、帯ポリゴン）を配置することで、パーティクルの移動経路を帯状のオブジェクトで表現するというものである。
【００６４】
同図では、パーティクルが移動した位置Ｐｎ−１と位置Ｐｎとの間にポリゴンを配置する処理を説明している。位置Ｐｎ−１、位置Ｐｎ夫々の座標位置のデータは上述の通り、ＲＡＭ１０２に記憶されているものであるのでこれらのデータを用いて、位置Ｐｎ−１から位置Ｐｎに向かうベクトルｖｎを求めることができる。
【００６５】
ここで９０１は視点を表しており、視点９０１の視線方向ベクトル（同図ではｖｅで表している）は操作者がキーボード１０４やマウス１０５，もしくはその他のデバイスを用いて操作しうるものであるので、ＣＰＵ１０１が管理している。管理している視点９０１の視線方向ベクトルのデータはＲＡＭ１０２に記憶されている。
【００６６】
従ってこの視線方向ベクトルｖｅと上記ベクトルｖｎとの外積を計算し、その結果を外積結果のベクトルのサイズで正規化したベクトルｖｍを求める。より具体的には以下の式に従ってベクトルｖｍを求める。
【００６７】
ｖｍ＝ｖｅ×ｖｎ／｜ｖｅ×ｖｎ｜
なお、正規化処理は以下の処理を簡単にする目的で行ったものであり必須なものではない。この式に従って求めたベクトルｖｍは帯ポリゴンの幅方向に向かう大きさ１のベクトルである。求めたこのベクトルｖｍのデータはＲＡＭ１０２に記憶される。
【００６８】
次に、このベクトルｖｍと上記ベクトルｖｎとの外積を計算し、その結果を外積結果のベクトルのサイズで正規化したベクトルｖｌを求める。より具体的には以下の式に従ってベクトルｖｌを求める。
【００６９】
ｖｌ＝ｖｍ×ｖｎ／｜ｖｍ×ｖｎ｜
なお、正規化処理は以下の処理を簡単にする目的で行ったものであり必須なものではない。この式に従って求めたベクトルｖｌは帯ポリゴンの法線方向に向かう大きさ１のベクトルである。求めたこのベクトルｖｌのデータはＲＡＭ１０２に記憶される。
【００７０】
そして一辺が大きさ１の正方形のポリゴンを周知の方法でＲＡＭ１０２内に生成し、このポリゴンを一辺の方向にベクトルｖｎのサイズ分だけスケーリングし、この一辺に垂直な他辺の方向に予め決めておいた帯状のオブジェクトの幅分だけスケーリングした結果、帯ポリゴンが得られる。
【００７１】
そして得られたこの帯ポリゴンを、図９に示すように、ベクトルｖｎの長さを有する一辺がベクトルｖｎと平行となり、且つポリゴンの幅方向の中心位置がベクトルｖｎ上にくるように、且つ帯ポリゴンの法線方向がベクトルｖｌが示す方向と同じになるようにする。
【００７２】
このように帯ポリゴンを配置することで、視点９０１からこのポリゴンの面が見えるようになり、且つ、この帯ポリゴンによって、位置Ｐｎ−１から位置Ｐｎまでの経路を帯状に示すことができる。
【００７３】
なお、帯ポリゴンを生成して本実施形態のように配置するためには、上記方法に限定されるものではなくて何れの方法を用いても良く、結果として図９に示す如く、視点９０１から帯ポリゴンの面が見えるようになり、且つ、この帯ポリゴンによって、位置Ｐｎ−１から位置Ｐｎまでの経路を帯状に示すことができれば良い。
【００７４】
このような処理をパーティクルが移動する各位置間について行うことで、このパーティクルの移動の軌跡を複数のポリゴンにより帯状に表現することができる。
【００７５】
図１０は、パーティクルが移動した各位置間に帯ポリゴンを上記処理によって配置し、その結果得られる、このパーティクルの軌跡を帯状に表現したもの、即ち、帯状のオブジェクトを示す図である。
【００７６】
同図において１０００はパーティクルの移動の軌跡を示し、１００１ａ、１００１ｂ、１００１ｃ、１００１ｄ、１００１ｅ、１００１ｆは夫々、パーティクルの移動した位置（図８に示すテーブルに記録される位置）を示す。各位置は当然軌跡１０００上にある。以上説明した帯ポリゴンの配置処理を行うと、位置１００１ａと位置１００１ｂとの間、位置１００１ｂと位置１００１ｃとの間、位置１００１ｃと位置１００１ｄとの間、位置１００１ｄと位置１００１ｅとの間、位置１００１ｅと位置１００１ｆとの間に夫々帯ポリゴンを配置することができる。しかも夫々の帯ポリゴンは視点の位置からその面が見えるように配置されているので、結果としてこの帯状のオブジェクトは視点の位置から各面が見えるように生成される。
【００７７】
なお、帯ポリゴンの配置処理は、パーティクルが生存寿命によってその移動が終了してから、移動した各位置間について行っても良いし、パーティクルが移動する毎に、現在の位置と移動する直前の位置との間について行うようにしても良い。
【００７８】
また、この帯ポリゴンには例えば炎の色のテクスチャをマッピングしたり、赤や黄色などの色を付けておき、帯ポリゴンの配置後、時間の経過と共にこの帯ポリゴンに対するα値を徐々に下げるようにしても良く、その場合、徐々にその部分の炎が消えていく様を表現することができる。また、この生成した帯状のオブジェクトは所定時間が経過すると、消去する。
【００７９】
以上説明した帯状のオブジェクトを生成する処理を、他のパーティクルの移動の軌跡についても行う。即ち、個々のパーティクルの移動する各位置を記録し（即ち、個々のパーティクルについて、図８に示す「移動した各位置を示すデータのテーブル」をＲＡＭ１０２内に作成する）、記録した位置のデータを用いて個々のパーティクルの移動の軌跡を帯状に表現する帯状のオブジェクトを生成する処理を行う。
【００８０】
このようにすれば、各パーティクルの移動の軌跡を夫々帯状のオブジェクトでもって表現することができる。図１１は、各パーティクルの移動の軌跡を夫々帯状のオブジェクトでもって表現した結果、得られるオブジェクトの例を示す図である。２０１は上述のろうそくの３次元モデルで、１１０１は各パーティクルの移動の軌跡を夫々帯状のオブジェクトでもって表現することで得られるオブジェクトである。また各パーティクルの生存寿命は発生させる各パーティクルによって異ならせるので、夫々のパーティクルの移動する軌跡の長さ、即ち帯状のオブジェクトの長さも当然、夫々で異なる。
【００８１】
仮にパーティクルだけでオブジェクト１１０１の存在する領域を埋めようとする場合、多数必要であることが容易に分かる。しかし帯状のオブジェクトを用いると、夫々は視点の位置にその面を向けているので、比較的少ない数で同じ領域を覆うことができる。また、帯状のオブジェクトは１つのパーティクルの移動によって生成されるものであるので、結果として用いるパーティクルの数は従来のものよりも少なくてすむ。従って、各パーティクルの挙動を計算する計算コストや、各パーティクルの位置を管理するためのメモリ使用量をより軽減させることができる。
【００８２】
図１２は以上説明した、本実施形態に係る炎のオブジェクトの生成処理のフローチャートである。なお、同図のフローチャートに従ったプログラムは外部記憶装置１０７からＲＡＭ１０２に、もしくは記憶媒体から記憶媒体ドライブ装置１０８によってＲＡＭ１０２にロードされるものであり、ＣＰＵ１０１がこれを実行することにより、本実施形態に係る画像処理装置は同図のフローチャートに従った処理を実行することになる。尚、同図のフローチャートにおいてあるステップによっては上記説明の通りであるのでそのようなステップについては説明は簡単にする。
【００８３】
先ず、新たにパーティクルを初期発生領域内で発生させるか否かを判断する（ステップＳ１２０１）。これは例えば、まだ発生しているパーティクルの数が少ない場合にはより高い確率で発生させ、発生しているパーティクルの数が多い場合にはより低い確率で発生させるようにする。与えられた確率に従ってパーティクルを発生させる処理は周知の技術であるので、ここでの説明は省略する。
【００８４】
新たにパーティクルを発生させる場合には処理をステップＳ１２０２に進め、初期発生領域内の乱数的に決めた任意の位置にパーティクルを発生させ（ステップＳ１２０２）、更に、このパーティクルに対する速度ベクトル、生存寿命を設定する（ステップＳ１２０３）。設定した速度ベクトル、生存寿命のデータは上述の通り、ＲＡＭ１０２に記録される。また、発生させたパーティクルの初期位置のデータも、ＲＡＭ１０２内に記憶されている。
【００８５】
次に、発生している各パーティクルについてステップＳ１２０４からステップＳ１２０６までの処理を行う。先ず、パーティクルの位置を上記処理によって移動させ（ステップＳ１２０４）、移動した位置のデータをＲＡＭ１０２に記録し（ステップＳ１２０５）、前の位置と現在の位置との間に上記処理によって帯ポリゴンを配置する（ステップＳ１２０７）。
【００８６】
そしてステップＳ１２０４からステップＳ１２０６までの処理を発生している全てのパーティクルについて行えば（ステップＳ１２０７における判断処理）、処理をステップＳ１２０８に進め、発生から経過した時間が設定された生存寿命に達したパーティクルが存在するか否かをチェックする（ステップＳ１２０８）。これは夫々のパーティクルについて、パーティクルが発生してから計時した結果が、発生時に設定された生存寿命に達したか否かを判断することで、このパーティクルが寿命に達したか否かをチェックすることができる。
【００８７】
そして寿命に達したパーティクルについては、３次元仮想空間から消去し、更に、このパーティクルに係るデータをＲＡＭ１０２から消去する処理を行う（ステップＳ１２０９）。
【００８８】
そして、処理をステップＳ１２０１に戻し、以降の処理を繰り返す。
【００８９】
以上の処理によって、炎のオブジェクトを生成するために用いるパーティクルの数を減少させることができるので、パーティクルの挙動を計算する計算コストや、パーティクルの位置を管理するためのメモリ使用量をより軽減させることができる。
【００９０】
また、本実施形態では帯状のオブジェクトを用いているので、本来無数のパーティクルを用いないと埋め尽くせなかった領域を、少ない数の帯状のオブジェクトで埋め尽くすことができる。また、１つ帯状のオブジェクトを生成するためには１つのパーティクルしか用いないので、結果として用いるパーティクルの数を減少させることができ、これにより上述の通り、パーティクルの挙動を計算する計算コストや、パーティクルの位置を管理するためのメモリ使用量をより軽減させることができる。
【００９１】
尚、図１２に示したフローチャートは、パーティクルが移動する毎に帯ポリゴンを配置するというものであったが、パーティクルが自身の生存寿命内に移動した経路が決まった時点で、これまでに移動した各位置間に帯ポリゴンを配置するという処理形態の場合には、図１２に示したフローチャートを以下のように修正したフローチャートに従った処理を行えばよい。
【００９２】
即ち、ステップＳ１２０６における処理を以下のように修正した処理を、ステップＳ１２０９にける処理の直前で行うようにすればよい。即ち、寿命に達したパーティクルが存在する場合には、ステップＳ１２０５で記録したこのパーティクルのこれまでに移動した位置のデータを用いて、各位置間に帯ポリゴンを配置する処理を行う。そして配置後、上記ステップＳ１２０９の処理、即ち、このパーティクル、及びこのパーティクルに係るデータの消去処理を行う。
【００９３】
［第２の実施形態］
本実施形態では、第１の実施形態とは異なる式に基づいて重力点によるパーティクルの移動方向の制御を行う。
【００９４】
本実施形態の場合、重力点ｊ（ｊは各重力点に付けられるインデックス）に対してパラメータｍｊ、パーティクルｉ（ｉは各パーティクルに付けられるインデックス）に対してパラメータＭｉを、発生時に速度ベクトル、生存寿命に加えて設定する。各重力点に設定されるパラメータｍｊは夫々異なる値を取りうるものであるとする。また、各パーティクルに設定されるパラメータＭｉについても夫々異なる値を取りうるものであるとする。
【００９５】
その場合、重力点ｊとパーティクルｉとの距離をｒとすると、パーティクルｉが重力点ｊに対して引かれる力Ｆを以下の式に従って計算する。
【００９６】
Ｆ＝ｋ×Ｍｉ×ｍｊ／（ｒ×ｒ）
そして第１の実施形態と同様に、パーティクルｉの位置の近傍にある重力点ｊ全てについてこの式に従った計算を行い、夫々の重力点に対して引かれる力のベクトルの合成を行い、合成結果の力ベクトルｆを求める。
【００９７】
このように、各パーティクル、各重力点で異なる値のパラメータを設定し、これを用いて夫々の重力点に対して引かれる力を計算するので、計算に用いる重力点の個数が同じでも、毎回同じ大きさの力ベクトルが求まらないことも生じうるので、より複雑な挙動をパーティクルに与えることができる。
【００９８】
なお、本実施形態の場合、上記加速度ａの代わりに、（ａ＋ｆ／Ｍｉ）を用いる。即ち、Ｖ＝Ｖ＋（ａ＋ｆ／Ｍｉ）を計算し、次に、更新後のＶを用いてＸ＝Ｘ＋Ｖを計算する。
【００９９】
また、本実施形態において全てのｉ、ｊについてＭｉ＝ｍｊ＝１とすれば、本実施形態は第１の実施形態と等価である。
【０１００】
また、第１の実施形態で説明した様々なパラメータによっては、動的に変更しても良い。例えば、加速度ベクトルについても、毎回同じ方向、同じサイズのベクトルとせずに、加速度ベクトルの方向、大きさを動的に変更しても良い。
【０１０１】
また、上記実施形態では、炎のオブジェクトを生成するための処理について説明したが、パーティクルの移動速度、予め設けた加速度、重力点の移動速度などを調整すると、各パーティクル間の距離の発散の程度や、移動速度などが異なってくる。しかし基本的に、これらのパーティクルの運動は揺らぎを持って移動するものであるので、例えば帯ポリゴンの色、もしくは帯ポリゴンにマッピングする画像の色を白っぽくし、各パーティクルの移動速度がより遅くなるようにすれば、結果として帯状のオブジェクトの集合を煙として表現することもでき、またその調整によっては噴水に見えることもある。
【０１０２】
従って上記実施形態で説明した処理の本質は帯状のオブジェクトを生成することで、この帯状のオブジェクトの集合で「揺らぎ」を有するものを表現することにあるので、上述の通り、パーティクルの挙動に関するパラメータ、帯ポリゴン（テクスチャ画像が貼り付けられた場合も含む）の色の調整によっては、上記実施形態で説明した技術は、炎以外の対象をも表現し得るものである。
【０１０３】
また、以上の処理（例えば図１２に示したフローチャートの一部、もしくは全部に従った処理）をプログラムとしてＣＤ−Ｒ、ＲＯＭやＤＶＤ−ＲＯＭ、ＭＯ、ゲームカートリッジ等の記憶媒体に記憶させ、この記憶媒体に記憶されているプログラムをコンピュータに読み込ませ（インストール、もしくはコピーさせる）、このコンピュータのＣＰＵ又はＭＰＵがこれを実行することでこのコンピュータに以上の処理を実現させることができる。従って、このプログラムを記憶した記憶媒体もまた本発明を実施可能なものにするので、この記憶媒体も本発明の範疇にあることは明白である。
【０１０４】
また、サーバ装置に以上の処理（例えば図１２に示したフローチャートの一部、もしくは全部に従った処理）のプログラムを保持させておき、周知の技術によりネットワークを介してコンピュータにこれらを供給することができる。そしてこれらプログラムやデータを供給されたコンピュータのＣＰＵ又はＭＰＵはこれを用いて以上の処理を実現させることができるので、このサーバ装置もまた上記記憶媒体として解釈することができるので、このサーバ装置も本発明の範疇にあることは明白である。
【０１０５】
またこの記憶媒体は外部からコンピュータにプログラムやデータを提供するもの以外であっても良く、コンピュータに内蔵されたメモリチップなどであっても良いし、この記憶媒体成る定義はより広く解釈されるべきである。
【図面の簡単な説明】
【０１０６】
【図１】本発明の第１の実施形態に係る「炎のオブジェクト」の生成処理を実行する画像処理装置として機能するコンピュータの基本構成を示すブロック図である。
【図２】炎のオブジェクトを生成するために用いるパーティクルの初期発生領域を説明するための図である。
【図３】図２に示した初期発生領域２０１内で発生させたパーティクルに挙動を与えるために、パーティクルに対して設定する内容を説明する図である。
【図４】発生させた各パーティクルに対して「揺らぎ」の挙動を与えるための仕組みを示す図である。
【図５】２つの重力点４０２ａ、４０２ｂによってパーティクルの移動方向を制御する処理を説明する為の図である。
【図６】各パーティクルに与える挙動を説明する図である。
【図７】あるパーティクル（注目パーティクル）の移動の軌跡を示す図である。
【図８】ＲＡＭ１０２に記憶された、注目パーティクルが移動した各位置のデータを管理するテーブルを示す図である。
【図９】本発明の第１の実施形態に係る帯状のオブジェクトを生成する処理を説明するための図である。
【図１０】パーティクルが移動した各位置間に帯ポリゴンを配置し、その結果得られる、このパーティクルの軌跡を帯状に表現したもの、即ち、帯状のオブジェクトを示す図である。
【図１１】各パーティクルの移動の軌跡を夫々帯状のオブジェクトでもって表現した結果、得られるオブジェクトの例を示す図である。
【図１２】本発明の第１の実施形態に係る炎のオブジェクトの生成処理のフローチャートである。
【図１】
2005092754.tif 000003
【図２】
2005092754.tif 000004
【図３】
2005092754.tif 000005
【図４】
2005092754.tif 000006
【図５】
2005092754.tif 000007
【図６】
2005092754.tif 000008
【図７】
2005092754.tif 000009
【図８】
2005092754.tif 000010
【図９】
2005092754.tif 000011
【図１０】
2005092754.tif 000012
【図１１】
2005092754.tif 000013
【図１２】
2005092754.tif 000014