【Houdini】tips的なもの01

Houdini 18.0.287

螺旋状にポイントを配置する

コメント 2019-12-22 140621

@P.x = cos(@ptnum * ch("Freq")) * ch("Radius");
@P.z = sin(@ptnum * ch("Freq")) * ch("Radius");

LineをResampleしてポイント数を増やし、Wrangleで配置する。下記リンクに詳しい解説有り。

ライン両端の法線を内向きにする

コメント 2019-12-22 141502

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をずらして配置する

コメント 2019-12-22 143552

上記例ではグリッドを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で四捨五入。

コメント 2019-12-22 144607

prim(opinputpath(".", 0), 0, "uvX", 0)

『Atlas』を4に設定した場合の表示。位置はWrangleで設定した数値をuv transformで拾って適用。

コメント 2019-12-22 144747

1 / ch("../attribwrangle1/atlas")

最終的にuv transformでスケールを縮めてUV上に配置。

この記事が気に入ったらサポートをしてみませんか?