HeightFieldのマスク操作

環境:Houdini 20.5.584

ハイトフィールドのマスクを増やす

HeightField Copy Layer SOPを使う。

マスクを視覚化する

@mask = snowmask;

@maskを使うと部分が赤くなる。0=白、1=赤、と値が大きいほど赤に近づく。(黒=0.0、白=1.0に慣れていると紛らわしい・・)

他のノードからマスクを転写する

Heightfield Wrangleを使う。コードは以下のように書く。

// input1のmaskをflowsに転写する
float mask = volumesample(1, "mask", @P);

@flows = mask;

勾配を計算する

Heightfield Wrangleを使い勾配の計算をして0-1に収める。

//
// 勾配を取得して0-1にスケールする
// 0:水平 1:垂直な崖
//
vector grad = volumegradient(0, "height", v@P);
float slope = length(set(grad.x, grad.z, 0)); // 勾配(%)

// ラジアンから度数へ変換
float angle = degrees(atan(slope));

// 0-1の範囲に正規化(例:0-90度)
@slope = fit(angle, 0, 90, 0, 1);
タイトルとURLをコピーしました