LoginSignup
1
0

VATを使用しない液体表現 ー スタティックメッシュを使った血しぶき

Posted at

こんにちは。今回は、Static Meshで表現する血しぶきの作り方を紹介します。

↓完成形動画

1. Houdiniで通常通りしぶきを作る

どんなアプローチでもいいので、パーティクルでしぶきを作ります。しぶきの作り方は素晴らしいチュートリアルがたくさんあるのでそちらを参考に
(例:https://vimeo.com/266717949)
image.png

2. メッシュ化し、Vertex Colorを作成する

しぶきがいい感じの形になっているところで、Timeshiftノードを使って止め、Particle Fluid Surfaceノードなどを使いメッシュ化します。その後頂点数、細かいしぶきの数などを調整し最適化します。
image.png

ここからはいい感じにディゾルブするための頂点カラーを適用します。

Distanceノードを使用し、しぶきの発生地点をoriginとしたアトリビュートを作成します。
image.png
distアトリビュートにノイズを少し入れます
image.png

このdistアトリビュートを頂点カラーとして使用したいのですが、値はしぶきのサイズによっては1を超えます。そこでこの値をプロシージャルにfit rangeする処理を追加したいと思います。
image.png
流れとしては
最小・最大値をdetailアトリビュートとして格納→pointアトリビュートにpromote→値をfitさせる
みたいな感じです。
なんか回りくどいな~とは思っていますが、今のところこれ以外思いつきません。もっといいやり方ご存じの方がいましたら教えてください・・・

最小・最大値を格納

image.png

//distアトリビュートをCdに適用
@Cd = @dist;
//fit rangeで参照するため、MinとMaxをDetail Attributeにセット
setdetailattrib(0, "cd_min", @Cd.r, "min");
setdetailattrib(0, "cd_max", @Cd.r, "max");
最小・最大値をpointアトリビュートにpromoteする

image.png

頂点カラーの値をfitさせる

image.png

@Cd.r = fit(@Cd.r,@cd_min,@cd_max,0,1);
@Cd.g = 0;
@Cd.b = 0;

これで、発生源から放射状にいい感じにグラデーションがついたstaticメッシュができました。
image.png
エクスポートしてUE5に読み込みます。

3. Vertex Colorを透明度に乗算したマテリアルを適用、Niagaraで発生させる

image.png
Vertex ColorとParticle Color、Dynamic Material Parameterなどと乗算し、Opacity Maskに適用したマテリアルを作ります。
image.png
*マテリアルのBlend ModeはMaskedです。

作成したメッシュ、マテリアルを使用したNiagara Systemで、いい感じにOpacityを調整します。
image.png
これで、アルファチャンネルでいい感じに消える血しぶきの完成です。VATを使用していないながらなかなか立体的な表現ができます。
image.png
image.png
image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0