今回はUE4の話です。
以前からUE4のエフェクトツールであるNiagaraは、
houdiniにおけるVOPに近い形で使えると噂で聞いていました。
よくノードベースといわれるとhoudiniみたいに使えるとか言いつつも、
ただノードベースなだけで、使い勝手は違うものが多い印象でしたが、
先日からNiagaraを使い始めたところ、
Niagara Module Scriptと呼ばれる機能がVOPにそっくりだったため、
houdiniユーザー向けに紹介してみようかと思います。
とはいえ、まだ使い始めたばかり&Niagaraの基本をかじった途端にすぐさまそちらの機能を使ってみたという感じなので、色々不足があることはご了承ください…!
1. Niagaraでパーティクルを出してみる
まずはVOPに該当するNiagara Module Scriptを使う前に、
パーティクルを出して準備をします。
Niagaraでパーティクルを出す説明が不要な人は飛ばしてもらって
次の、2. Niagara Module Scriptを使って螺旋運動させてみるへどうぞ
※UE4の基本やproject設定などの説明はgoogle先生に聞いて下さい(・ω・)
ますはコンテンツブラウザ上で右クリックをし、FX→Niagara Systemを選択します。
出てきたメニューのnew system from selected emitterを選択し、nextを押す
次のウィンドウでsimple sprite burstを選んで右下のプラスボタンを押し、finishで決定。
そうするとコンテンツブラウザにNigara systemという、
houdiniでいったところのpopのような物ができるので、これをダブルクリックして、
niagara操作ウィンドウを開きます。
作成したままだとパーティクルが時間で消えているので、lifeを伸ばすのと、消えないように各モジュールを調整します。
モジュールとはNiagaraでは一つの機能をもったノードのことを指し、
houdiniのノードと同じものを指します。名前が違うだけで概念は同じです。
あるいはHDAの方が近いのかも?
以下の画像のモジュールのパラメータを同じようにすると、10秒間消えずにいるパーティクルが一つだけの状態なるかと思います。
追加で上方向に向かって動くようにしておきます。
particle spawnメニューの右にあるプラスボタンからadd velocityを追加して、Zの値を30にします。(UE4は基本Z upです…)
これでNiagara Module Scriptを使う準備は完了です。
2. Niagara Module Scriptを使って螺旋運動させてみる
今回は動きの検証などでよく使う円弧運動を、Niagara Module Scriptを使って実装して、先程の上に上がるモーションと組み合わせて螺旋運動を作ろうと思います。
まずはコンテンツブラウザで右クリックしFXメニュー→Niagara Module Scriptを選択します。作成されたデータに適当な名前をつけます。
(呼び出すときに使うので分かりやすいのがいいです。今回は回転運動なのでNS_rotateにしました。)
一旦先程作成したパーティクルのNiagaraウィンドウへ移動します。
そしてParticle Updataのプラスボタンを選択し先程作成したNiagara Module Scriptの名前を入力して検索するのですが、ここで注意点が…
デフォルトだとおそらくLibrary Onlyにチェックがあり、あらかじめ用意してあるモジュールしか見けられないようになっています。
なのでこのチェックを外してやることで、自分で作成したモジュールが使えるよになります。
そうして追加したモジュールをダブルクリックして、Niagara Module Scriptの中へ入ります。
この中でパーティクルのアトリビュートを読みこんで、あれこれし、最終的にデータを渡してやることで、VOPのようなコントロールでパーティクルの挙動が作成できます。
アトリビュートはnigaraのウィンドウに戻り、左手上のwindow→attribute spreadsheetから開けるほぼhoudiniと同じウィンドウでパーティクル情報を知ることができます。
houdiniと一つ違うのは指定したタイミングの情報しか確認できず、再生しながらデータの変化をリアルタイムに見ることは出来ませんでした。(自分が知らないだけかもです…)
知りたいタイミングで左上のcaptureを押すと、再生が停止されそのタイミングのアトリビュートが表示されます。
今回はPositionとAgeを使ってきます。
Niagara Module Script内のMap getのプラスボタンを選択しpositionを追加します。同じくNormalize Ageも追加します。Normalize Ageはその名の通りageを0-1にして取得します。
次に同じプラスボタンから、今度はfloatを2つ追加し、それぞれspinとradiusと名前を変更します。
するとこんな感じに
これを見てもらうとparticleとinputの二つに分かれていると思います。
particleはそのままの意味で先程確認したアトリビュートを読み込んでいます。inputは、VOPでいうparameterにあたるデータで、入力先を外に出しておいてコントロール出来るようにするためのデータになります。
次にsin,cosを使って円弧運動を作成していくのですが、
この辺りはVOPでも説明がどこかにあると思うので、
ツリーとniagaraの特有な部分のみ解説していきます。
まずは完成ツリーがこれ
・break Vector → vopでいうvector to float
・make Vector → vopでいうfloat to vector
・Map Set → 最終的なデータを出力するところです。VOPの右側にあるやつと同じ感じ。
VOPと違って出力先の差し込みはすべて作らないといけないです。
今回はinputした時と同じでプラスボタンからparticle positionを作成します。
以上でNiagara Module Scriptのセットアップは完了です。
セットアップが完了したら左上のcompileをし、saveを忘れずに。
これを忘れると結果は反映されないので、いくら調整してもパーティクルは変化しません…。
saveを済ませたらniagaraのウィンドウへ戻り、作成したモジュールを選択すると、パラメータに先程inputで作成したパラメータが追加されていると思います。
あとは適当な数値を入れてやると…
無事、螺旋運動をさせることができましたー!
(イメージでは動きが分かりやすいように表示をジオメトリにしたのと、床を設定をしました。)
こんな感じでまさにVOPといった感じでコントロールすることができます。
もちろんhoudiniとは違う部分も多くありますが、
少なくともアトリビュートを可視化しながら、直接コントロール出来るといった事が出来るのは、データを作成する上でとても重要だと思っています。
最近はhoudiniユーザーでもUE4の話をする機会が増えてきため、
この記事がラーニングのきっかけになればと思います。
今回話には出していないですが、各パラメータはHLSLでexpressionを書くこともできるので、houdiniユーザーにはより親しみやすい…かも?(HLSLも勉強します…)
Niagaraはまだ情報がそれほど多くないらしく、ノード一覧なども無い状態らしいので、少しでも情報が増えると嬉しいです…!
では今回はこれで┗(^∀^)┛