Created on | Updated on
フォローする

グリッドの各プリミティブ(ポリゴン)中央にポイントを配置する方法

オブジェクトをCopy to Pointする場合等に必要になるのが、ポリゴン(プリミティブ)の中心にポイントが追加したいということです。

結果としてはこのような感じですね。

ここでは2つの方法をご紹介します。

centroidを使用する

エクスプレッション関数である「centroid」を使用することでポリゴンの中心点を追加することができます。

日本語マニュアル(16.5)はこちら

centroid(surface_node, type)というように記述し、typeには重心のコンポーネントに対応するD_X、D_Y、D_Zのどれかを指定します。

ということで、Gridを作成し、その下にfor-each primitivesを追加します。

ポリゴンを1つ抽出したら、間にaddノードを追加。

オプションでpoint 0を有効にすると、(0,0,0)の位置にポイントが追加されます。

そこでcentroidを使用して、ポイントを重心に持ってきます。

左のボックスはXになるのでcentroid(opinputpath(".",0),D_X)と指定します。

opinputpathは指定したノードに何番目に入力されたのかを定義し、そのフルパスを得ることができます。
1番目の入力に接続されたノードのパスを取得するには、opinputpath(".", 0)と指定することができます。

後はDeleteノードで必要のないポイントを削除すればポリゴンの重心にポイントを配置することができました。

 

Circleを使用する

もう少し簡単な方法があります。それはポリゴンをCircle(円)に変えて、その重心にポイントを作成する方法です。

今度はFor-each primitivesの中にConvertを設置し、Convert ToをCircleにします。

この時点でポリゴンはプリミティブの円に変換されます。

そこにaddノードを追加します。
その際にPoint0を有効にする必要はありません。円の中心にポイントが生成されます。
周りのポリゴンを消すには、Delete Gemetry But Keep Pointを有効にしてください。

これで各ポリゴンの中心にポイントを配置することができました。