Unityに備わっている機能の話になります。
パーティクルという名前を聞いたことがある方は多いのではないでしょうか。CGやゲーム、アニメの分野ではポピュラーですね。もしかするとパーティクルシステムを用いて作られたものをテレビやWebで毎日見ているかもしれません。
今回はUnityにおけるパーティクルシステムについて、エンジニア・プログラマーの人向けに紹介していきたいと思います。
パーティクルシステムとは
詳細な説明はWikipediaに任せます。重要な事は、エミッター(発生器)とパーティクル(粒子)の役割です。エミッターはパーティクルを発生させると同時に、そのパーティクルに対し以下のような内容を指定できます。
- ・寿命
- ・初速度
- ・加速度
- ・角速度
- ・外的な力
- ・色・サイズの変化
これらが設定されたパーティクルが大量に発生すると…
エフェクトが作れそうな気がしませんか?
作例
※クリックで再生
パーティクルシステムを使うと良いこと
コードを書かなくても使えます。
例えば、デザイナーから「ここの背景に花びら降らせたいんだよね」と要望があった場合、
- ・初期位置を乱数にして
- ・〜ms毎に発生させて
- ・~px/sで動かして
- ・〜pxか〜ms経過したら消して
- ・こられ全部を乱数にしてみたり
等々考えて実装することになりますが、パーティクルシステムはこれらの仕組みを有していてパラメーターを設定すれば動きます。Flashの経験があるデザイナーなら使い方さえわかれば自分で作れてしまうかもしれません。
Tips
以降では個人的なコツを紹介します。
設計の仕方
何を一つのパーティクル(粒子)で表現するかが重要です。
例えば炎の場合、厳密にはガスや塵が燃焼して発光と発熱を伴いながら熱で比重が軽くなり上昇しているのですが、このガスや塵を一つのパーティクルで表現することは困難です。少ない粒子の数と簡素な動きで似せる必要があります。動きや見た目について、同じこと・異なることを探し、同じことについては近似して扱います。炎をよく観察すると、下から上へ上昇する動きと、幅・高さ様々ですが”もや”のような形状の集合であることに気づきます。以下の様なある程度の面積の”もや”のようなパターンと、それのサイズと色の変化に近似しましょう。
簡単で効果の高い設定項目
・Random Between Two Constant
パラメーターが範囲指定の乱数になります。
大抵の流体や自然物は常に一定の量が発生することはないので、これを使うと自然な仕上がりになります。
・〜 over lifetime
時系列でパラメーターが変化します。
特にcolorについては最初と最後が透明だと発生と消滅が自然になります。
これをやらないと突然出現して突然消える動きになってしまいます。
より凝った設定項目
・WindZoneオブジェクトとExternal Forces
外的な力と影響を受ける度合いの設定になります。
例えば桜吹雪を舞わせる風や、渦のような表現に使用します。
・simulation space
Localの場合、パーティクルシステムを移動・回転させるとパーティクル(粒子)も同じように移動・回転します。
Worldの場合、パーティクルがその影響を受けません。
・EmissionのBursts
時系列で発生量を設定できます。
「ドンッ! チョロチョロ…」といったイメージの複数段の強さを表現する際に使用します。
終わりに
概要から扱う上で効果の高いTipsを一気に紹介しました。
もしエフェクト制作の必要が出た際に何かしら参考になればと思います。
機会があれば具体的なエフェクトの制作過程を紹介したいと思います。