すあまの備忘録

誰得内容の自分のための非営利目的備忘録ブログ(筆者がわかっても内緒にしてください)

River using LOP Vol.1 -Asset & Sim

川の作り方というよりはLOPでのレンダリングについてが主。

f:id:godofsuama:20220228132118p:plain

youtu.be

レンダリングし直す時間がなかったので草がパカついてます。ブログの説明はパカつかないほうなのでそのまま真似してください。

はじめに

アセット

岩モデルやテクスチャはMegascans

quixel.com

MegascansのデータはUE4レンダリングまでする場合は無料だが、それ以外は有料なので注意。

今回みたいな場合は有料です。

良くなかった
  • LOPとUSDの仕様で手こずった。USDへの理解が足りない。
  • 基本FLIP流用のはずが思ったよりも時間がかかった。
  • レンダー時はループ処理をミスっててパカつきが起きている(記事では解決)
  • 水のスケール感…
良かった

ベースの地面

ボックスをVDBで削ったりして作成

f:id:godofsuama:20220228133541p:plain

UVはリピートテクスチャを貼る予定なのとほぼ岩メッシュで見えなくなるためざっくりAuto UVで展開

ディスプレイスメントを使う予定はないのでなんとなくMountainで凹凸をつける。

すべて手で配置

途中で何回かLow設定のシムをしつつ配置を調整

この際にMegascansのモデルを基本的にスケールしないように配置(小石のようなものは除く)

f:id:godofsuama:20220228133704p:plain

f:id:godofsuama:20220228133805p:plain

シェーダーアサインがしやすいようにshop_materialpathでのpathアトリビュートも作っておく。

f:id:godofsuama:20220228133919p:plain

草アセットは別シーンで1-120fの揺れるシムをVellumでつけたものを配置

めちゃめちゃ適当にシムしているのでエラーもある。動いてればいいかなというレベル。

f:id:godofsuama:20220228135536g:plain

f:id:godofsuama:20220228134930p:plain

Labs Make Loopを使用してループ処理済み。

f:id:godofsuama:20220228135721p:plain

草配置

配置用のPointはSOP上で作成

地面と岩を一緒にVDBに変換してペイントでほしい箇所を塗る。

f:id:godofsuama:20220228140029p:plain

上記と、Mask by AmbientOcclutionで作成した部分を使ってScatterする

f:id:godofsuama:20220228140222p:plain

up,N,pscale,variantを設定

インスタンス処理もLOPでやっているがSOP上でプレビューするとこんな感じ

f:id:godofsuama:20220228140528p:plain

FLIPの設定はいろいろと面倒なので過去から引き継いだ秘伝のタレ状態

今回はLOPの勉強がメインなのでシムは軽く流す感じであまり設定していない。レンダリングに影響する部分だけ設定。

godofsuama.hatenablog.com

godofsuama.hatenablog.com

f:id:godofsuama:20220228140831p:plain

コリジョン用メッシュ

Megascansのモデルは基本的に裏側が蓋されていないのでVolume Extrudeで蓋をしてからVDBを作成

f:id:godofsuama:20220228140946p:plain

f:id:godofsuama:20220228141019p:plain

この際、VDB Reshape SDFでVDBを少し内側に縮小させる。

画像のようにレンダーするメッシュにFLIPがめり込むようなイメージ。

f:id:godofsuama:20220228141908p:plain

以下画像のようなエラーがレンダー時に出てしまうのを軽減するため。

f:id:godofsuama:20220228142142p:plain

エミッター

エミット箇所をBOXで指定し、

f:id:godofsuama:20220228141248p:plain

コリジョン用VDBで不要な部分を削除

f:id:godofsuama:20220228141330p:plain

Points from Volumeでポイントを作成してPoint Velocityで初期Velocityを作成

キャッシュ

キャッシュが少し特殊で、Lowで一度シムした結果の最終フレームをHighのエミッターに使用している。

プリロールの軽減と最初のフレームからコリジョンに沿ったFLIPの状態、Velocityを得られるため。

f:id:godofsuama:20220228142708p:plain
緑が1回目(low)、オレンジが2回目(High)

LowではFile CacheのTake機能を使用してキャッシュ。 Low/High切り替えのSwitchとPoints from VolumeのPoint Separationを上書きしている。

Take自体シーンが分かりづらくなってしまうのであまり好きじゃないため最低限の切り替えのみ。

f:id:godofsuama:20220228142926p:plain

f:id:godofsuama:20220228142952p:plain

Highの方は以前と同じParticleとVolumeを別でキャッシュする方法をそのまま。

DOP

DOP内も最小設定のlowと各種設定済みのhighをSwitchで切り替え

f:id:godofsuama:20220228143047p:plain

Restを使用してシェーディングするためにHighの方だけRestを設定

※Vector3 Attributeが2つできてキャッシュサイズが跳ね上がります。

f:id:godofsuama:20220228143301p:plain