見出し画像

Pivot Painter を使ってゼルダBoWの祠エフェクトを作る

完成したもの

Houdini

HoudiniではPivot Painter のデータをメッシュ生成を行った。TubeをBoxの底面に並べて位置を元のBoxの大きさに合わせ直している。UVは重複しても良いので展開しておく。

普通につくっただけ…

破壊表現を行うためにボロノイ分割をしている。中央付近でたくさん割れてほしかったので、Scatterの分布を二種類作って合成。

Scatterの分布はもう少し工夫したかった

Pivot Painter のデータを作るために、ジオメトリとピボットのストリームに分ける。ジオメトリには中央付近が暗くなるようなアルファを持たせるため、一度PackしてVEXをかいている。ピボットは中心に集めてFuseを行って中点を出している。こちらはNormalを作るためにVEXをかいている。connectivitySOPでname(string)を作っておくことでジオメトリとピボットを一致させることができ、Pivot Painterで書き出せる。

中央付近が暗くなるようなアルファを作るVEX

float a = abs(@P.y);
@Cd.r = a/10;

Normalを作るVEX

@N = normalize(@P);


Unreal Engine

Unreal Engine ではマテリアルによる動きと、シーケンサーによるキーフレームを行った。
シーケンサーはただキーを打っただけなので割愛。
マテリアルはPivot Painterの値を使うため、それなりに複雑になっている。

マテリアル全体図

まずPivot Painterの値をNamed Rerouteに登録する。4.27からNamed Rerouteは変数のような見た目でマテリアルの値を保存して呼び出せる。
Custom Alpha Value はコントラストをつけて、上下は完全に除外しておく。

Named Rerouteはかなり見やすくなるのでおすすめ
データを整理すれば考え方も整理できる

移動を扱う部分。基本的にはX-Axisの方向に動かすが、移動量をランダムにするために Random Per Element をかけており、緩急はシーケンサーでFlameという値を動かしている。

移動の値はMoveにとっておく

回転を扱う部分。回転はX-Axis以外の方向にも回したいので、適当な値を外積で作っている。回す方向にもランダム性が欲しいので、Random Per Element で 二種類の適当な値をLerpしている。更に回転量にもRandom Per Elementを使い、全体の回転も緩急をつけるため、シーケンサーでRotという値を動かしている。

移動の値はRotationにとっておく

最後にMoveとRotationを合成して、上下をマスクすれば完成だ。


この記事が気に入ったらサポートをしてみませんか?