Wet Mapの作成とシェーダー周り。
FLIP Shader
Basic LiquidもKarmaで動作するが、パラメーターが多いので最低限に整理
ベース
Volticityを仕様してDiffuse / Reflectionの比率の調整
渦が強いほど白いDiffuse成分が強くなるようにしている。
Dual RestでのDetail追加
Vol.1のDOPで追加したRest Attributeを使用してディスプレイスメントを追加する。
Basic Liquidにも同じ仕組みが入っているが、Displace Along NormalのBump OnlyがKarmaだと動作が怪しい?
Cdで見るとこんな感じ
この仕組みだとFLIPに追跡できるPositionを設定できるのでディテールを足すのに良い。
Displace Along NormalのScaleがデフォルトの1だと凄まじい飛び出し具合になるので注意すること。
Karmaでディスプレイスメントをする場合のDicingも忘れないように。
Wet Map
Attribute作成
必要な部分を残してScatter
FLIPのVolumeを一緒にSolverにつなぐ。
Solver内でwetのmaxを毎フレーム取る
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でぼかす
Wet Map用Shader
Wet Mapを適応させたいオブジェクトのシェーダー内で以下の処理を追加する。
LOPを使用する場合、シェーダーのアサインはLOP上のAssign Material等ですること。
SOPやGeoでアサインした状態でLOPへ持っていくとpcopenがうまく動かなかった。
※Mantraの場合はTransformを仕様してCamera Space -> World Spaceに変換が必要
Point Cloud Textureのファイルパスを指定するのも忘れずに。
※op:でつないだ場合Mantraだと動くがやはりKarmaだと動かないのでフルパスを指定しましょう。
Search RadiusとNum Pointで負荷を調整
pcfilterでwetアトリビュートを取得
fit RangeでRemapし、
その結果をDiffuse ColorとRoughnessにMultiplyすることでちょっと暗くなってツヤツヤしたような状態にしている。