Trails Effect Tutorial

https://vimeo.com/5891547
https://vimeo.com/5891661

ボックスから発生するトレイルエフェクトチュートリアル

1・以下の3つを作成

・motionPath_curve
エミッターとなるボックスが沿うモーションパスカーブオブジェクト

・trail_emitter
エミッターとなるボックスオブジェクト

・trail_lines
トレイルエフェクトオブジェクトが入るGeometryノード

20140502_01_0

2・モーションパスにボックスを沿わせて動かす

trail_emitterのPath ObjectにmotionPath_curveを指定
Positionにスタートフレームで0、エンドフレームで1となるようにキーを打つ。
これで時間を動かすと、カーブに沿ってボックスが動くようになる。

20140502_01_1

3・Trailノードを使ってボックスの頂点の軌跡を取り出す

※この時、trail_emitter内のboxノードに直接Trailノードをコネクトしても、trail_emitter内に存在するbox自体は、ローカルな空間内では動いていないので軌跡が作成されない。
グローバル空間での動きを元にTrailを作成する必要がある。

trail_linesの中にObject Mergeノードを作成する。
このノードは、パスを指定してどこからでもジオメトリデータを取得できる。パラメータリストの下部で呼び込みたいオブジェクトのパスを指定する。

20140502_01_3

Transform情報はbox自身の移動情報を使用するので、以下のように設定する。

20140502_01_2

そして、Object MergeにTrailノードを接続すると、Trailが正しく有効になる。

20140502_01_4

20140502_01_5

4・エフェクトの発生点を作成する

trail_emitterを非表示にしておき、後面を選択後に削除。

blastノードが作られ面の削除が行われる。
blastノードのパラメータで、Delete Non Selectedをオンにする。
こうすることで、選択されていなかった面が削除される。

5・Trailで複製された面が持つ頂点同士を接続する

Trailノードのパラメータで、Result TypeをConnect as Polygonsにする

20140502_01_6

20140502_01_7

同じ番号を持つ頂点同士が接続される。

デフォルトの設定では、ここで作られるポリゴンのラインは閉じているため、急激なカーブを行う箇所などでは面が見えてしまう。
開いたカーブにするため、以下のパラメータをオフにする。

20140502_01_8

6・Trailが作るラインがいい感じの見た目になるようにパラメータを調整

20140502_01_9

20140502_01_10

上記のような設定にしてみた

7・Trailで出来たラインをNurbs Curveに変換する

Convertノードを作成し接続
Convert To を Nurbs Curveにする

20140502_01_11

8・ラインのパラメータ位置計算のため、rankアトリビュートを作成する

Attrib Createノードを作成。
Name を rankに

9・カスタムアトリビュートをビューポートに表示する

Dキーでディスプレイオプションを開き、Customの項目でNew text display option

20140502_01_12

20140502_01_13

ApplyやAcceptを押すと、Customの項目にrankが追加されたことがわかる。

20140502_01_14

これがオンになっていると、同名のアトリビュート値が各ポイント上に表示されるはずだが、なぜかされない。

ちなみに、このカスタム表示を使えば、各頂点上の法線方向なども視覚的にわかりやすく表示できるようになるらしい。

20140502_01_15

10・VOP SOP

VOP SOPを作成してコネクト

20140502_01_16

VOP SOPに入る

11・rankの値を使用するため、Parameterノードを作成する

20140502_01_17

ノード名はわかりやすいものにする

Nameはアトリビュート名
Labelはわかりやすいものにする

InvisibleがオフだとVOP SOPノードにパラメータが表示されてしまうのでオンにして隠しておく。

ノードカラーも、inputとVOP SOP内で生成されるものとで分けておくと良い。

12・RampParameterを作成し、コネクトする

Trailエフェクトのぶれ具合をramp制御したいのでRampParameterを作成し、コネクトしておく。

RampParameterノードは0〜1の値を受け取り、それぞれの値に応じた値を出力する。

20140502_01_22

Rampの動作は以下のようにしておく

20140502_01_18

Nameに$OSという名前の変数を使うと、ノード名そのものがここで作られるパラメータ名として使われる。VEX内部で生成するパラメータはこのパターンで命名するのが楽かも。

13・Turbulence Noiseノードを作成する

このノードを使用して、Trailのブレを作る

20140502_01_21

14・Noiseスケール用のParameterノードを作成する

Turbulence Noiseで作られた3軸のノイズ値を個別にスケールできるように、 3 Float型のParameterノードを作成。

この時、Default値は 1,1,1にしておく。(0,0,0 のままだと、Noiseがかかっていないように見えてしまう)

20140502_01_19

15・MultiplyノードにNoise計算用ノードをコネクト

20140502_01_20

16・Noiseと元々のカーブを加算する

最後に、Multiplyで作られたNoise成分と、元々のカーブのポイントを足し合わせる。

20140502_01_23

Multiplyの計算結果は、あくまでもノイズ成分。
これを、元々のカーブに足し合わせることで、Noiseの加わったランダムなカーブが出来上がる。

20140502_01_24

赤がモーションパスカーブ
緑がNoise加算前のTrailカーブ
白がNoise加算後のTrailカーブ

20140502_01_25

チュートリアルをアレンジしてレンダーしてみた