今回は、グラスホッパーで木の幹と枝を作成する方法について解説します。
全体の様子


上2枚の画像は、グラスホッパーの様子です。


上2枚の画像は、ライノセラス上に書き出した様子です。
今回使用したグラスホッパーとライノセラスのデータダウンロードはこちら
ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。
全体コンポーネント
全体コンポーネント:①Fibonacci ②Cull Index ③List Length ④Number ⑤Division ⑥Series ⑦Unit Z ⑧Rectangle ⑨Move ⑩Area ⑪Populate 2D ⑫Closest Points ⑬Tree Statistics ⑭Boolean Toggle ⑮Shift List ⑯Tree Branch ⑰Closest Point ⑱Line ⑲Flip Curve ⑳Control Points ㉑Point ㉒List Item ㉓Distance ㉔Bounds ㉕Construct Domain ㉖Remap Numbers ㉗MultiPipe






複数の四角形内にランダムな点を作成する
最初に、複数の四角形内にランダムな点を作成していきます。

まず、自然界に存在する数列である、フィボナッチ数列を作成していきます。
この数列の数値を利用し、枝分かれする枝を作成することができます。
Fibonacci(N)に、個数を入力します。
今回は、13を入力しています。
すると、上の画像のように、0,1,1,2,3,5のように、前の数値を足していく数値が13個作成されます。
その後、Fibonacciを、Cull Index(L)につなげます。
さらに、0を、Cull Index(I)につなげます。
すると、一番最初の0の数値を削除することができます。
その後、Cull Indexを、List lengthにつなげます。
すると、上の画像のように、データの個数が出力されます。
さらに、Cull Indexを、Division(A)につなげます。
さらに、任意の数値を、Division(B)につなげます。
これにより、Division(B)で入力した数値で割り算されます。
この数値は、ランダムさを変えるシード値として、後程使います。

さらに、Cull Indexを、Numberにつなげます。
この際に、Numberを右クリックし、Graftに設定してください。

その後、Rectangle(X)(Y)に、辺の長さを入力します。
今回は、どちらにも5000を入力しています。
すると、上の画像のように、5000×5000の正方形の線データが作成されます。

その後、List Lengthを、Series(C)につなげます。
さらに、移動させる距離の数値を、Series(N)につなげます。
今回は、200をつなげています。
すると、0から200ずつ増加する数値が、今回は14個作成されます。
その後、Seriesを、Unit Zにつなげます。
その後、Unit Zを、Move(T)につなげます。
この際に、Move(T)を右クリックし、Graftに設定してください。

さらに、Rectangle(R)を、Move(G)につなげます。
すると、上の画像のように、正方形が真上方向に複数コピーされます。

その後、Move(G)を、Populate 2D(R)につなげます。
さらに、点の個数を、Populate 2D(N)につなげます。
さらに、作成したシード値を持つDivisionを、Populate 2D(S)につなげます。
この際に、Populate 2D(S)を右クリックし、Graftに設定してください。

すると、上の画像のように、ランダムな点が正方形内に作成されました。
これで、複数の四角形内に、ランダムな点を作成できました。
点を取得し、前後の点をつなぐ線を作成する
次に、点を取得し、前後の点をつなぐ線を作成していきます。

すると、上の画像のように、一番下の正方形の中心点を取得できます。


その後、Area(C)を、Closest Points(P)につなげます。
さらに、Populate 2D(P)を、Closest Points(C)につなげます。
さらに、先程のNumberを、Closest Points(N)につなげます。
すると、上の2枚の画像のように、フィボナッチ数列に応じて、各四角形内の点を取得できます。

その後、Closest Points(P)を、2つのTree Statisticsにつなげます。
これにより、データの階層を取得することができます。
その後、1つ目のTree Statistics(P)を、Cull Index(L)につなげます。
さらに、-1を、Cull Index(I)につなげます。
これにより、一番最後の階層を削除できます。
その後、2つ目のTree Statistics(P)を、Shift List(L)につなげます。
さらに、1を、Shift List(S)につなげます。
さらに、Falseの情報を、Shift List(W)につなげます。
今回は、Boolean ToggleでFalseの情報を作成しています。
これにより、階層データを1つずつずらすことができました。
その後、Cull IndexとShift Listを、それぞれTree Branch(T)につなげます。
さらに、Closest Points(P)を、2つのTree Branch(P)につなげます。
これにより、指定した階層の点データのみを取得できます。
その後、1つ目のTree Branchを、Closest Point(C)につなげます。
さらに、2つ目のTree Branchを、Closest Point(P)につなげます。
すると、1つ上の点から、下の近い点を取得できます。
その後、2つ目のTree Branchを、Line(A)につなげます。
さらに、Closest Point(P)を、Line(B)につなげます。
すると、上の画像のように、前後の点をつなぐ線が作成されます。

この際に、Line(L)を右クリックし、Flattenに設定してください。
これで、点を取得し、前後の点をつなぐ線を作成することができました。
線に厚みを与える
最後に、線に厚みを与えていきます。

Closest Points(P)を、Pointにつなげます。
この際に、Pointを右クリックし、Flattenに設定してください。

その後、Pointを、List Item(L)につなげます。
さらに、0を、List Item(i)につなげます。
すると、上の画像のように、一番下の点を取得できます。

その後、Lineを、Flip Curve(C)につなげます。
これにより、線の向きが逆になります。
その後、Flip Curve(C)を、Control Pointsにつなげます。
すると、上の画像のように、各線の制御点を取得できます。

この際に、Control Points(P)を右クリックし、Flattenに設定してください。

その後、List Itemを、Distance(A)につなげます。
さらに、Control Points(P)を、Distance(B)につなげます。
すると、一番下の点から、各制御点までの距離を取得できます。
すると、取得した距離の最小値と最大値からできる数値範囲が作成されます。
その後、厚みの最大値の数値を、Construct Domain(A)につなげます。
今回は、50をつなげています。
さらに、厚みの最小値の数値を、Construct Domain(B)につなげます。
今回は、1をつなげています。
すると、50 To 1という数値範囲が作成されます。
その後、Distanceを、Remap Numbers(V)につなげます。
さらに、Boundsを、Remap Numbers(S)につなげます。
さらに、Construct Domainを、Remap Numbers(T)につなげます。
すると、距離の数値が、0から50の範囲で変換されました。

その後、Lineを、MultiPipe(Curves)につなげます。
さらに、Remap Numbers(R)を、MultiPipe(NodeSize)につなげます。
さらに、Control Points(P)を、MultiPipe(SizePoints)につなげます。
さらに、2を、MultiPipe(Caps)につなげます。
すると、上の画像のように、線から上に行くほど細くなる幹と枝を作成できました。
今回は以上になります。
Comment