今回は、グラスホッパーで長さが変わる直方体を天井から垂らすデザイン方法について解説します。
動画で見る
全体の様子




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




上4枚の画像は、ライノセラス上に書き出した様子です。

上の画像は、最終的にレンダリングした様子です。
それでは、順番に解説していきます。
今回使用したグラスホッパーとライノセラスのデータダウンロードはこちら
ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。
全体コンポーネント
全体コンポーネント:①Construct Point ②Rectangle ③Populate 2D ④Surface ⑤Divide Domain² ⑥Isotrim ⑦Area ⑧Scale ⑨Distance ⑩Flip Matrix ⑪Sort List ⑫List Item ⑬Bounds ⑭Construct Domain ⑮Remap Numbers ⑯Negative ⑰Unit Z ⑱Extrude






ランダムな点を作成する
最初に、作成する正方形の中に、ランダムな点を作成していきます。

最初に、Construct PointのZ端子に、高さの数値を入力します。
今回は、5000の数値を入力しています。
すると、座標0,0,5000の位置に、点が作成されました。
この点は、天井の高さの位置の基準点になります。

その後、Construct Pointを、RectangleのP端子につなげます。
さらに、RectangleのXとY端子に、辺の長さの数値を入力します。
今回は、どちらにも10000の数値を入力しています。
すると、上の画像のように、高さ5000の位置に10000×10000の正方形の線データが作成されました。

その後、RectangleのR端子を、Populate 2DのR端子につなげます。
さらに、作成するランダムな点の個数を、Populate 2DのN端子につなげます。
さらに、任意のランダムさを変えるシード値を、Populate 2DのS端子につなげます。
今回は、0の数値を入力しています。
すると、上の画像のように、正方形の線データ内に、ランダムな点が10個作成されました。
この点は、後程の直方体の長さを変える基準の点となります。

この際に、Populate 2DのP端子を右クリックし、Graftに設定してください。
これで、ランダムな点を作成することができました。
分割された正方形のサーフェスを作成する
次に、分割された正方形のサーフェスを作成していきます。

すると、上の画像のように、正方形の線データからサーフェスが作成されました。

その後、Surfaceを、Divide Domain²のI端子につなげます。
さらに、分割数の数値を、Divide Domain²のUとV端子につなげます。
今回は、どちらにも50の数値を入力しています。
その後、Divide Domain²を、IsotrimのD端子につなげます。
さらに、Surfaceを、IsotrimのS端子につなげます。
すると、上の画像のように、サーフェスが50×50に分割されました。

すると、分割された各サーフェスの中心点が取得されました。

さらに、AreaのC端子を、ScaleのC端子につなげます。
さらに、倍率の数値を、ScaleのF端子につなげます。
今回は、0.5の数値を入力しています。
すると、上の画像のように、各サーフェスのスケールが小さくなり、隙間ができるようになりました。
これで、分割された正方形のサーフェスを作成することができました。
点から各サーフェスの距離によって長さが変わる直方体を作成する
次に、点から各サーフェスの距離によって長さが変わる直方体を作成していきます。

最初に、点から各サーフェスの距離によって長さが変わる数値を作成していきます。
さらに、Populate 2Dを、DistanceのB端子につなげます。
すると、各サーフェスの中心点から、ランダムに作成された点までの距離の数値が出力されます。
今回の場合、ランダムに作成された点が10個、サーフェスが50×50=2500個あるので、2500個の距離の数値が10セット(階層)出力されます。
その後、Distanceを、Flip Matrixにつなげます。
すると、行と列が入れ替わり、10個の距離の数値が、2500セット出力されます。
この1つのセットの10個の数値は、各サーフェスの中心から、10個のランダムな距離までの数値になります。
その後、Flip Matrixを、Sort Listにつなげます。
すると、小さい順に数値が並び替えられました。

その後、Sort ListのK端子を、List ItemのL端子につなげます。
さらに、0の数値を、List Itemのi端子につなげます。
すると、各セット(階層)の一番最初の一番小さな数値が出力されます。
この際に、List Itemのi端子を右クリックし、Flattenに設定してください。
これで、2500セットの各セットの中から、一番小さな数値が出力され、2500個の数値が出力されます。

すると、入力した数値の最低値と最大値から作成される数値範囲が作成されます。
その後、新たに作成する最低値の数値と最大値の数値を、Construct Domainにつなげます。
今回は、50の数値をConstruct DomainのA端子に、2000の数値をConstruct DomainのB端子につなげます。
すると、50 To 2000という数値範囲が作成されました。
その後、List Itemを、Remap NumbersのV端子につなげます。
さらに、Boundsを、Remap NumbersのS端子につなげます。
さらに、Construct Domainを、Remap NumbersのT端子につなげます。
すると、List itemから入力した数値が、50~2000の数値に変換されました。

その後、Remap NumbersのR端子を、Negativeにつなげます。
すると、入力した数値にマイナスが掛けられました。
その後、Unit Zを、ExtrudeのD端子につなげます。
さらに、ScaleのG端子を、ExtrudeのB端子につなげます。
すると、上の画像のように、ランダムな点に近いほど短く、ランダムな点から遠いほど長い直方体が作成されます。
これで完成です。
今回は以上になります。