パーティクル
■概要
パーティクルはゲームでもよく使用される映像表現技術の一つで、
炎や煙、雲などの不規則な形状をリアルに表現することができます。
ゲームでは魔法や光跡などのエフェクトとしても数多く使用されています。
パーティクルシステムはパーティクル生成を管理し、
複雑な表現を行うことを可能とするシステムのことです。
パーティクルシステムの構成は親子関係になっており、
一番下の子がポリゴンやモデルのパーティクル、
その親がエミッターと呼ばれる場所でパーティクルの座標や量などを決めます。
そしてエミッターを管理するための親を頂点として
パーティクルシステムは構成されています。
■パーティクル
パーティクルシステムのパーティクルは親子関係で末端に位置する部分で、
パーティクル自体はテクスチャを貼ったポリゴンや3Dモデルのことです。
このパーティクルをエミッターが複数生成することで
多種多様なエフェクトを表現することを可能としています。
●パーティクルの種類
パーティクルの種類は大きく三つあるといわれています。
・クアッド(四角)・パーティクル
クアッド・パーティクルは四角のポリゴンに対して
テクスチャを貼り付けてパーティクルとして使用します。
平面のポリゴンなのでポリゴン座標とカメラ位置しだいで
描画結果に問題が発生します。
ですので、ビルボードを使用して常にポリゴンが
カメラのほうを向くように対策を行います。
・ストライプ・パーティクル
ストライプ・パーティクルはポリゴンをつなげて帯状にした
パーティクルです。
光の閃光や剣線などはストライプ・パーティクルで表現します。
・モデル・パーティクル
モデル・パーティクルは3Dモデルをパーティクルとして使用します。
爆発で生じる破片や岩など、パーティクルで立体性を表現したい場合は
クアッド、ストライプよりもモデル・パーティクルを使用します。
●パーティクルの動き
パーティクルの動きはエフェクトの仕様によって異なりますが、
基本動作としては移動、拡縮、回転、色の遷移になります。
以下はパーティクル動作の一例となります。
・移動
生成時:
移動方向と速度を決定
生成後:
移動法に対して毎フレーム速度分移動する
・拡縮
生成時:
最小と最大、開始時のサイズと変更サイズの決定
生成後:
毎フレーム変更サイズを加算し、
拡大と縮小を繰り返す
・回転
生成時:
回転軸に対しての変更角度の決定
生成後:
毎フレーム各軸に変更角度の加算を行う
・色
生成時:
初期頂点カラーと最終の頂点カラー、
各色成分の加算値
生成後:
毎フレーム色成分の加算値を足す
■エミッター
エミッターはパーティクルの生成を行う場所です。
小規模のエフェクトではエミッター管理を作成せずに
エミッターでエフェクトを管理したりします。
●パーティクル開始位置
パーティクル開始位置はエミッターの自身の
座標を基にしてパーティクルを生成します。
開始位置はエミッターを動かすことで、
固定的ではなく流動的に設定することもあります。
・パーティクル開始位置に関するパラメータ:
エミッター座標
速度
加速度
●形状
形状というのはパーティクルを放出する範囲のことです。
パーティクルはその範囲内でランダムに作成されることになります。
形状の種類は「点」「矩形」「円」「立方体」「球」や
「3Dモデルのポリゴン情報」を取得して、そのポリゴンの形状に沿って
パーティクルを発生させるという方法もあります。
・形状に関するパラメータ
形状の種類
形状に応じた範囲情報
●パーティクル生成
エミッターでパーティクルを作成するには、
「作成するパーティクル数」「作成時間」「作成間隔」を決めます。
・作成するパーティクル数
パーティクル数を決める方法は主に以下の2種類です。
・1フレームで作成する数を決める方法
・作成時間内に作成するパーティクルの数を決める方法
・作成時間
パーティクルを作成し続ける時間です。
・作成間隔
作成時間が終了して次のパーティクルを作成するまでの時間です。
■エミッター管理
エミッター管理はパーティクルシステムの頂点にあたる部分で、
エミッターの作成と削除を管理します。
複数のエミッターを組み合わせることで、複雑なエフェクトを表現することが可能となります。
●エミッター作成、削除
エミッターの作成の削除はタイムラインを作成し、
どのタイミングでエミッターを作成、削除するかを管理します。
●エミッター管理の座標
エミッター管理にも座標情報が存在し、
この座標がエフェクトの中心位置となります。
エミッターの座標はエミッター管理の座標からのオフセット位置となるので、
エミッター管理が移動した場合、エミッターも移動します。