すあまの備忘録

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

River using LOP Vol.2 -FLIP Shader & Wet map

Wet Mapの作成とシェーダー周り。

FLIP Shader

Basic LiquidもKarmaで動作するが、パラメーターが多いので最低限に整理

f:id:godofsuama:20220228155120p:plain

ベース

Volticityを仕様してDiffuse / Reflectionの比率の調整

f:id:godofsuama:20220228155316p:plain

渦が強いほど白いDiffuse成分が強くなるようにしている。

Dual RestでのDetail追加

Vol.1のDOPで追加したRest Attributeを使用してディスプレイスメントを追加する。

Basic Liquidにも同じ仕組みが入っているが、Displace Along NormalのBump OnlyがKarmaだと動作が怪しい?

f:id:godofsuama:20220228155519p:plain

Cdで見るとこんな感じ f:id:godofsuama:20220228160721g:plain

この仕組みだとFLIPに追跡できるPositionを設定できるのでディテールを足すのに良い。

Displace Along NormalのScaleがデフォルトの1だと凄まじい飛び出し具合になるので注意すること。

f:id:godofsuama:20220228161248p:plain

Karmaでディスプレイスメントをする場合のDicingも忘れないように。

f:id:godofsuama:20220228161343p:plain

Wet Map

f:id:godofsuama:20220228151750p:plain

Attribute作成

必要な部分を残してScatter

f:id:godofsuama:20220228152059p:plain

FLIPのVolumeを一緒にSolverにつなぐ。

f:id:godofsuama:20220228152225p:plain

Solver内でwetのmaxを毎フレーム取る

f:id:godofsuama:20220228152312p:plain

float calc = volumesample(1,0,@P) < chf("threshold");
f@wet *= chf("remove");
@wet = max(@wet, calc);

Volume sampleでVolumeの値がThreshold以下の部分を取得

毎フレーム(前フレーム)のwetを減衰させ

最後にVolume Sampleの値と比較してどちらか値の大きい方を残す。

ちょっと水が染み込んでいった感がほしいのでAttribute Blurでぼかす

f:id:godofsuama:20220228152730p:plain

Wet Map用Shader

Wet Mapを適応させたいオブジェクトのシェーダー内で以下の処理を追加する。

LOPを使用する場合、シェーダーのアサインはLOP上のAssign Material等ですること。

SOPやGeoでアサインした状態でLOPへ持っていくとpcopenがうまく動かなかった。

※Mantraの場合はTransformを仕様してCamera Space -> World Spaceに変換が必要

f:id:godofsuama:20220228153045p:plain

Point Cloud Textureのファイルパスを指定するのも忘れずに。

※op:でつないだ場合Mantraだと動くがやはりKarmaだと動かないのでフルパスを指定しましょう。

f:id:godofsuama:20220228154633p:plain

Search RadiusとNum Pointで負荷を調整

f:id:godofsuama:20220228153135p:plain

pcfilterでwetアトリビュートを取得

f:id:godofsuama:20220228153206p:plain

fit RangeでRemapし、

f:id:godofsuama:20220228153231p:plain

その結果をDiffuse ColorとRoughnessにMultiplyすることでちょっと暗くなってツヤツヤしたような状態にしている。

f:id:godofsuama:20220228154508p:plain
水がないとこんな感じ