【Houdini】tips的なもの01
Houdini 18.0.287
螺旋状にポイントを配置する
@P.x = cos(@ptnum * ch("Freq")) * ch("Radius");
@P.z = sin(@ptnum * ch("Freq")) * ch("Radius");
LineをResampleしてポイント数を増やし、Wrangleで配置する。下記リンクに詳しい解説有り。
ライン両端の法線を内向きにする
vector pt0 = point(0, "P", 0);
vector pt1 = point(0, "P", 1);
//以下のように書くと最後のポイントを参照してくれる
//vector pt_last = point(0, "P", @numpt-1);
if(@ptnum == 0){
@N = pt1 - pt0;
}
if(@ptnum == 1){
@N = pt0 - pt1;
}
copy to point等で両端にオブジェクトを配置する際の下準備。
UVをずらして配置する
上記例ではグリッドを3x3にコピーしてそれぞれのグリッドにUVを適用させるが、UV上の配置をランダムにすることで一枚のテクスチャでランダム感を出せる。
float randX = rand(float(detail(1, "iteration", 0))+2211+chf("seed"));
float randY = rand(float(detail(1, "iteration", 0))+5461+chf("seed"));
f@uvX = rint( fit(randX, 0, 1, 0, chi("atlas")-1) );
f@uvY = rint( fit(randY, 0, 1, 0, chi("atlas")-1) );
Wrangleで、PrimitivesにUVの位置情報を格納。『Atlas』は分割数の設定、『Seed』はランダム初期数値の変更。fitでランダム数値をAtlasの範囲内に調整した後にrintで四捨五入。
prim(opinputpath(".", 0), 0, "uvX", 0)
『Atlas』を4に設定した場合の表示。位置はWrangleで設定した数値をuv transformで拾って適用。
1 / ch("../attribwrangle1/atlas")
最終的にuv transformでスケールを縮めてUV上に配置。
この記事が気に入ったらサポートをしてみませんか?