MRが楽しい

MRやVRについて学習したことを書き残す

アンダーワールドの仕組みを探る その2(パーティクルシステム)

再び前回記事の続きとなります。
アンダーワールドの仕組みを探る その1(黒色の透過)
 http://bluebirdofoz.hatenablog.com/entry/2017/04/20/003204

今回はアンダーワールド出現時に発生する爆発エフェクトについて確認してみます。
MRとは直接関係ない技術ですが、表現方法の一つとして是非覚えておきたい事柄です。

ボールと折り紙が接触すると、こんな感じの爆発が発生します。
f:id:bluebirdofoz:20170421020407j:plain
一瞬なので撮影が難しい…。


まずはエフェクトの発生源について探ってみます。
f:id:bluebirdofoz:20170421020450j:plain
このExplosion_tmpというのが本体のようです。
一つのゲームオブジェクトかと思っていましたが、中々に複雑な構成をしています。

まずはExplosion_tmpにあるオブジェクトを読み解いてみました。
◇Explosion_tmp : 爆発エフェクトを作成
├◇StreamParents : 破片エフェクトを作成
│└◇SubEmitter : 破片エフェクトのサブエミッター
├◇SubEmitter : 爆発エフェクトのサブエミッター
└◇sparks : 火花のエフェクトを作成

ここで出てくるサブエミッターという用語ですが、Unityの下記機能を利用したエフェクトです。
・Sub Emitters モジュール
 https://docs.unity3d.com/ja/540/Manual/PartSysSubEmitModule.html

大元のエフェクトが発生した際に連動して発生させられる子エフェクトとも呼べる機能のようです。
Explosion_tmp直下のSubEmitterは爆発に光効果を、StreamParentsのSubEmitterは破片に煙効果を追加していました。

パーティクルシステムについて調べてみます。
・メインモジュール
 https://docs.unity3d.com/ja/540/Manual/PartSysMainModule.html
"ParticleSystem"のコンポーネントは非常に万能で、爆発エフェクトも、火花エフェクトも、煙エフェクトまでこのコンポーネントで実現しているようです。

例えば、爆発エフェクトを確認してみました。
マテリアルにシェーダが設定されており、そのテクスチャでアニメーションを定義していることが見て取れます。
f:id:bluebirdofoz:20170421020748j:plain

流石にここまで複雑なエフェクトはまだ作れないので、試しに一つ簡単なエフェクトを追加して動作を確認してみます。
GameObject->ParticleSystemで"ParticleSystem"がアタッチされたゲームオブジェクトを作成します。
f:id:bluebirdofoz:20170421020817j:plain
以下のページを参考に、ステータスを色々と変更してみました。
・Unityのパーティクル「Shuriken
 http://marupeke296.com/UNI_PT_No1_Shuriken.html

これで爆発時に時間経過によって色が変化するエフェクトが発生するはずです。
f:id:bluebirdofoz:20170421020847j:plain


アプリを起動して確認してみます。
f:id:bluebirdofoz:20170421021034j:plain
カラフルなエフェクトが発生しました。成功です。


今回パーティクルについて勉強しましたが、紹介ページの通り、"ParticleSystem"のコンポーネントには数多くの設定項目が存在します。
期待通りのエフェクトを作成するのはかなりの技術と根気が要求されます。

Unityのアセットストアでは様々な人が開発したパーティクルが数多く配布されています。
・アセットストア パーティクルシステム
 https://www.assetstore.unity3d.com/jp/#!/search/page=1/sortby=price/query=category:125

まずは頑張って自身で作るよりもストアから期待通りのエフェクトを探して利用/改変した方が良い結果が得られるかもしれません。