川の作り方というよりはLOPでのレンダリングについてが主。
レンダリングし直す時間がなかったので草がパカついてます。ブログの説明はパカつかないほうなのでそのまま真似してください。
はじめに
アセット
岩モデルやテクスチャはMegascans
MegascansのデータはUE4でレンダリングまでする場合は無料だが、それ以外は有料なので注意。
今回みたいな場合は有料です。
良くなかった
- LOPとUSDの仕様で手こずった。USDへの理解が足りない。
- 基本FLIP流用のはずが思ったよりも時間がかかった。
- レンダー時はループ処理をミスっててパカつきが起きている(記事では解決)
- 水のスケール感…
良かった
ベースの地面
ボックスをVDBで削ったりして作成
UVはリピートテクスチャを貼る予定なのとほぼ岩メッシュで見えなくなるためざっくりAuto UVで展開
ディスプレイスメントを使う予定はないのでなんとなくMountainで凹凸をつける。
岩
すべて手で配置
途中で何回かLow設定のシムをしつつ配置を調整
この際にMegascansのモデルを基本的にスケールしないように配置(小石のようなものは除く)
シェーダーアサインがしやすいようにshop_materialpathでのpathアトリビュートも作っておく。
草
草アセットは別シーンで1-120fの揺れるシムをVellumでつけたものを配置
めちゃめちゃ適当にシムしているのでエラーもある。動いてればいいかなというレベル。
Labs Make Loopを使用してループ処理済み。
草配置
配置用のPointはSOP上で作成
地面と岩を一緒にVDBに変換してペイントでほしい箇所を塗る。
上記と、Mask by AmbientOcclutionで作成した部分を使ってScatterする
up,N,pscale,variantを設定
インスタンス処理もLOPでやっているがSOP上でプレビューするとこんな感じ
川
FLIPの設定はいろいろと面倒なので過去から引き継いだ秘伝のタレ状態
今回はLOPの勉強がメインなのでシムは軽く流す感じであまり設定していない。レンダリングに影響する部分だけ設定。
コリジョン用メッシュ
Megascansのモデルは基本的に裏側が蓋されていないのでVolume Extrudeで蓋をしてからVDBを作成
この際、VDB Reshape SDFでVDBを少し内側に縮小させる。
画像のようにレンダーするメッシュにFLIPがめり込むようなイメージ。
以下画像のようなエラーがレンダー時に出てしまうのを軽減するため。
エミッター
エミット箇所をBOXで指定し、
コリジョン用VDBで不要な部分を削除
Points from Volumeでポイントを作成してPoint Velocityで初期Velocityを作成
キャッシュ
キャッシュが少し特殊で、Lowで一度シムした結果の最終フレームをHighのエミッターに使用している。
プリロールの軽減と最初のフレームからコリジョンに沿ったFLIPの状態、Velocityを得られるため。
LowではFile CacheのTake機能を使用してキャッシュ。 Low/High切り替えのSwitchとPoints from VolumeのPoint Separationを上書きしている。
Take自体シーンが分かりづらくなってしまうのであまり好きじゃないため最低限の切り替えのみ。
Highの方は以前と同じParticleとVolumeを別でキャッシュする方法をそのまま。
DOP
DOP内も最小設定のlowと各種設定済みのhighをSwitchで切り替え
Restを使用してシェーディングするためにHighの方だけRestを設定
※Vector3 Attributeが2つできてキャッシュサイズが跳ね上がります。