For Each Nodeの基本。今後も出てくるようなので基礎を押さえておく。
ある一定のノードの構成を繰り返す。その繰り返す定義を設定したりできるっぽい。
ForEachの中にあるEachノード以下に繰り返したいノードを構成することが基本。
教材 : Basic For Each
SOP [ ForEach, Partition, PolySplit, PolyExtrude, ]
Expression [ max(max(X,Y),Z) : 0.5*max(max($SIZEX,$SIZEY),$SIZEZ) ]
File : Basic_ForEach_01.hipnc
基礎としてグリッドのプリミティブ単位に同じノード構成を繰り返している。結果としてビルの窓のようなディティールを分割数を変更してもルールを守りながら形状を保っている。
まずはForEach Nodeに対して割り当てるノード構成の検証から始める。
1つのジオメトリだけもつオブジェクトに対し、下のようになるノードの構成を構築した。max( )のエクスプレッションの活用。max( )は2つの値の大きい方の値を返す。
SIZEX,Y,Z, という3つの変数を使う場合にmax(max(X,Y),Z)という形として応用した。
int : 0.1*max(max($SIZEX,$SIZEY),$SIZEZ)と入力。とすると
XYZそれぞれのサイズの一番大きい値を返し、その数の0.1倍のintを実行する。
したのような淵に対してのバランスを保つようになった。下の部分のExtrudeにも同じようなExpressionを実行しているのでファイルを参照すること。
構成的にはこんな感じでした。
Partition Node :
Rule : face_$PR という入力 (ここをちゃんとしないとForEachが機能しない)
Partition Node - Middle Clickで確認すると、face_##という名のプリミティブを持つグリッドとなったのが解る。
先程のPolyExtludeなどのノード構成をForEach Nodeの中にあるEach Nodeの下に繋げる。
これだけだとまだ実行されない。face_$PRの定義を操作しなくてはいけないっぽい。
ForEach Node :
Group Mask : face* (faceという名前を含む全てのグループとして指定する)
これでPartitionで定義したface_###というプリミティブ単位のグループを全て指定する。
ここまでして初めてForEachが機能するので注意する。約束事として覚えたほうがいいかも。
10*10のグリッドに対してForEachを割り当てた結果。
No comments:
Post a Comment