Houdiniでモジュールアセットを活用したプロシージャルモデリングをする場合、Point操作に慣れている必要があると思ったので、まとめました。
Primitive外周のポイントを取得する
GroupノードのBase Group中にあるEnableオフにする。
Groopノードの"Unshared Edges"のオプションをオンにする。
異なるジオメトリで、同じ位置にあるPointをグループ化する。
Group Transferノードで実現できます。
Primitive Groups、Edge Groupsはオフにします。
Distance Thresholdは要調整。
均等にPointがあるPrimitive | 両端と真ん中にポイントがあるPrimitive | 位置が重なった場所だけをグループ化 |
---|---|---|
Primitiveの真ん中のpointを取得
- Assembleノードの"Create Packed Geometry"をオン
- Addノードの"Delete Geometry But Keep Points"をオン
元の状態 | 結果 |
---|---|
Ponint番号の並びを逆にする
SortノードのPoint SortをRandomに指定
Box内にあるPointだけを取得
GroupノードのKeep in Bounding Regions(Bouding Type:Bounding Object)を選択する。
交互にPointを取得したい
ランダムなPointを1つ取得したい
SortノードでRandomに並び替え後、Groupノードで0番目を取得する。
Pointの両端を取得したい
- Group Expressionノードを操作
- GroupTypeをPointと指定。
- VexPressionのプリセットから”PointValence”を選択
- プリセットは入力フィールドの▼ボタンクリックで出てきます。
- 入力フィールド右端のスライダーボタンをクリック
- Valenceスライダーが表示されるので、Valenceを1に指定。
- Valence=2で、両端以外をグループ化できる。
PointValenceでフィールドに入力される以下のエクスプレッションについて。
neighbourcount(0,@ptnum)==chi("valence")
neighbourcount()は、つながっているポイント数を返します。
両端の隣接ポイント数は当然1だから、valence=1で取得できるわけです。
Pointのノーマル方向を変更する
Attribute Wrangleノードで以下のように方向を指定する。
@N=set(0,0,1);