02 VOP Flow
Noiseを追加するVOPの内容を詳しく解説していきます。パラメータ【1】を確認すればわかると思いますが、UVからRampを使ってNoiseを追加するエリアを決定します【A】。その値をNoiseに対して乗算し、変形させるエリアを設置点以外の部分にします【B】。NoiseはOffsetに対してアニメーションを入れることで、電流がながれているような挙動を調整できます【2】。次に、Branchが発生するエリアを作成します【3】。こちらもUVからRampを使用して作成します【C】【4】。この値をBind Exportを使ってAttribute化します【D】。これで各ラインの設定は完了です。
続いてPolygonのラインの太さを決定するpscaleを作成します。pscaleはUVからRampを使って作成します。Rampでは根本から先端にかけてのシェイプを調整します。その値に対して係数を乗算をして太さを決定し、Bind ExportでpscaleのAttributeにします【E】。これがTrunkの設定です。Branchの場合は、乗算する係数にもともともっているpscaleを使用します【F】。ScatterでPointを散布した場合、そのAttributeを引き継ぐことができるのでそれを利用します。このようにすることで、Branchの根本の太さは発生部分と一致して先端にいくほど細くなる状態をつくり出せます。
ここでは少し変わった調整を行います。Houdiniならではのアプローチだと思います。普通にNoiseをかけた状態でBranchを発生させると、Rayで飛ばした際に横に広がりすぎる可能性が出てきます。そのため、まずCollisionのNormalを反転させてAttribute Transferで移します。このNormalと自身のNormalの内積値をDot Productを使って計算します【G】。この値から寝ているNormalを抽出して、Collision方向に寄せたNormalとSwitchします【H】。これにより、横に広がりすぎないエフェクトにすることができます【5】。