2018年11月7日水曜日

UVを波打たせる


前回の記事のサンプルモデルで使用している波打つUVを
Houdiniで作成する方法について解説します。


サインコサイン

波打つUVですが、以下のVEXで作成します。

v@uv;
@uv.y += cos(@uv.x*3+(@Frame*0.3))/3;


式内にでてくる数字は見た目の調整用の係数であまり重要ではなく、
ポイントとなるのは以下の部分

@uv.y += cos(@uv.x+@Frame)


分解して解説すると

まず
cos(@uv.x)

cos()というのはコサイン関数で
Houdiniに限らずいたるところで登場する関係でWeb上の情報も豊富なので詳細は省きます。
簡単に解説すると @uv.x の変化、つまりUVのUの値にしたがって、
-1~1の間で波状の値を得ることができます。
sin()関数を使っても同じような結果になります。

この結果を @uv.y つまり UVの Vに足し算することで波打つUVになります。
@uv.y += cos(@uv.x)


さらに引数@uv.xに時間をプラスすることで時間変化に伴いsin()が受け取る値が変化することになり

@uv.y += cos(@uv.x+@Frame)

結果、時間の変化にともなってV値がアニメーションするというわけです。

シンプルな例

では改めて実際に作成してみます。
円柱ではUVのつなぎ目部分などで少し手間が発生するので、よりシンプルなgridで。



今回、@Flameに0.1をかけて、フレームに対する変化の速度をゆっくりにしました。

再生ボタンを押すとこんな感じに波打ちます。