いつだったかあるオブジェクトに大して特定方向を軸に
円形にグラデーションを作りたいと思った時がありました。
こんな状態のやつ↓

そんな時に書いたwrangleがこちら

vector dir = set(1,0,0);
vector target = normalize(@P);
vector up = set(0,1,0);

vector cros = cross(target, dir);
float dot = dot(target, dir);

float dot2 = dot(cros, up);
float ac = acos(dot);

if(dot2 >0){
    ac *= -1;
}

f@col = fit(ac,-$PI,$PI,0,1);

これで作ったアトリビュートを元にcolor sopでramp colorを当ててやれば、
放射状カラーが作れますよと。

当時あれこれ調べたけど、
パッとすぐに理解できそうになかった気がしたので、
あれこれやりながら書いた…はず。たぶん。
メモ見た感じ自分で書いたようだけど、記憶にございませんでした。

上のコードはYアップなので、
状況によってdirやupの方向を調整してやってください。

Follow me!

カテゴリー: houdini

PAGE TOP