おすすめした岩のチュートリアルを追う④
おすすめした以上はね

概要
最近岩のチュートリアルを知人におすすめする機会があった。
(https://www.procedural.jp/articles/p9toa-c3f)
自分も追いなおして紹介されているテクニックなどをまとめていく。
本記事の内容
Free Masterclass: Developing Complex Details Using Volumes in Houdini
上述のボリュームベースで岩のディテールを作成するチュートリアルを追っていく。
非常に素晴らしいクオリティの岩を作成できるチュートリアルです。
この記事はVDB関連のテクニックを教えてくれている2時間目くらいから動画の最後までの内容となる。
1時間25分くらいまではこちらの記事を参照:https://www.procedural.jp/articles/tfo6hjnnym
紹介されているテクニック
(前のブログからの続き)
エッジに対して強めにノイズをかける
表面部分とエッジ部分では現実の岩だとエッジ部分にダメージが集中していることが多いので
エッジに対して強めにノイズをかけるような構成を作成する。
メッシュをDivideノードに接続し、分割を増やしてpoint vopに接続する

pointvopに入り、Nに対してcross productを接続して接線ベクトルを取得する。
crossノードは初期値で接続すると接線が取れる。
さらにその接線ベクトルとNをもう一つのcross productに接続してもうひと方向の接線ベクトルを作成する。

この接続でノイズを設定するとNの接線方向に強めにノイズを適用することができる。


補足:resampleもいいかも
動画ではDivideで分割を増やしていたがエッジをresampleした方が目的にあった形状が得られそう

ここまで2時間15分くらい
ここから2時間40分くらいまでいままでのテクニックで崖を作っている
以降、SDF VDBでデータを調整していっている
DistanceVDBでVolumeVopを利用する
distance vdbでvopなどを扱う場合はアトリビュート周りの調整が必要になるvolume vopの持つparamaterのバインド先を変更する
volumeVOPの Volume Bindingsタブを開き、Autobind By Nameをオフにして主導でdensityをsurfaceとして置き換える。
これでVolueVopの影響がSDFにかかっていれば成功。Density同様にVOPを利用できる。

なぜSDFだとこの対応が必要なのか、みたいな内部データの扱いについては別記事にまとめたので
よければ以下のページも参照してください。
Worley Noise を各方向に満遍なく影響させる
Worleyノイズはvectorの形で出力されないのでPに対してノイズの影響をそのまま足し合わせると影響の方向に偏りが生じてしまう
これをフェース方向に適用できるような構成を作成する。

SDFのVDBからvector形式のVDBを作成して名前を「grad」にする。
このノイズはビューポート上にはそのままだと表示されない。
この変換したvectorノイズをpoint vopの第2接続に接続する。
(動画ではそうつけていたけど厳密には名前は別に付けなくてもいい)

VOPに入り volume sample vectorノードを作成し、第2接続の「grad」を参照する。
参照したgradをnormalizeし、 worleyの出力からsubtractで作成したノイズをmultipleし、PにaddしてPをsampleする

上記の手順のグラフを作成するとフェース方向に影響するworleyノイズとして利用できる

余談:どういった計算をしているか
vectorに変換したボリュームをVolumeTrailノードで確認するとフェース法線方向のベクトルになっているのが判る

これをworleyから作成した1Dノイズをかけることで法線方向にノイズをかけていた。
つまりこの構成は法線方向にノイズを加えた状態の3次元ベクトルを作る方法であり、
Worley以外の1DNoiseでも各フェース方向へのノイズとして利用できる

ノイズにノイズを入力する
2重にノイズをかけると一気に不規則的な形状になる。いろいろなノイズを組合わせも可能

感想
以上でこの動画のテクニック書き起こし終了。
有用なテクニックが非常に多く、結局4回に渡ってしまったが追って正解だったと感じる。
良い岩作成ライフを!

fish_ball
プロシージャル魚類