いつだったかあるオブジェクトに大して特定方向を軸に
円形にグラデーションを作りたいと思った時がありました。
こんな状態のやつ↓
そんな時に書いた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の方向を調整してやってください。