今回は、グラスホッパーで直方体の木材を長く増やしながら積み重ねた柱の作成方法を解説します。
動画で見る
全体の様子





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





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

上の画像は、最終的にレンダリングした様子です。
それでは、順番に解説していきます。
今回使用したグラスホッパーとライノセラスのデータダウンロードはこちら
ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。
全体コンポーネント
全体コンポーネント:①Construct Point ②Line ③Divide Curve ④Series ⑤Cull Index ⑥List Length ⑦Dispatch ⑧Point ⑨Unit X ⑩Unit Y ⑪Move ⑫Negative ⑬ List Item ⑭Curve Middle ⑮Merge ⑯Rotate ⑰Vector 2Pt ⑱Extend Curve ⑲Perp Frames ⑳Rectangle ㉑Distance ㉒Area ㉓Loft ㉔Cap Holes ㉕Group ㉖Square ㉗Division ㉘Addition ㉙Unit Z ㉚Surface ㉛Extrude ㉜Deconstruct Plane






基準線を作成する
まずは、基準となる線を作成していきます。

Construct Pointを、2つ用意します。
そして、1つのConstruct PointのZ端子に、高さの数値を入力します。
今回は、6000を入力しています。
すると、0,0,0の原点と0,0,6000の座標の位置に、点が作成されました。

その後、2つのConstruct Pointを、Lineにつなげます。
すると、上の画像のように、2つの点をつなぐ線が作成されます。

その後、Lineを、Divide CurveのC端子につなげます。
そして、Divide CurveのN端子に、分割数に数値を入力します。
今回は、40の数値を入力しています。
すると、上の画像のように、線を40に分割する位置に点が作成されました。

その後、SeriesのN端子に、数値の1を入力します。
さらに、SeriesのC端子に、個数の数値を入力します。
今回は、20の数値を入力しています。
すると、0から始まり1ずつ増加する数値が、20個作成されました。
そして、Seriesを、Cull IndexのI端子につなげます。
さらに、Divide CurveのP端子を、Cull IndexのL端子につなげます。

すると、上の画像のように、0~20番目の点が削除されました。

その後、Cull Indexを、DispatchのL端子につなげます。
そして、DispatchのAとB端子に、それぞれPointをつなげます。
すると、上の画像のように、奇数番目と偶数番目の点をそれぞれ取得することができます。

その後、Cull Indexを、List Lengthにつなげます。
すると、残っている点の個数の数値を取得することができます。
そして、List Lengthを、SeriesのC端子につなげます。
さらに、SeriesのSとN端子に、400の数値を入力します。
すると、400から始まり、400ずつ増加する数値が、点の個数分だけ作成されます。
その後、Seriesを、Unit XとUnit Yにそれぞれつなげます。
そして、Unit XとUnit Yを、それぞれDispatchにつなげます。
その後、Unit Xを、1つ目のMoveのT端子にはそのままつなげ、2つの目のMoveのT端子には、Negativeの途中に入れてつなげます。
Negativeにつなげると、数値にマイナスが掛け算されます。
さらに、Unit Yを、1つ目のMoveのT端子にはそのままつなげ、2つの目のMoveのT端子には、Negativeの途中に入れてつなげます。
すると、上の画像のように、各点が移動します。

その後、1つ目のMoveとNegativeを使った方のMoveを、それぞれLineにつなげます。
すると、点をつなぐ線が作成されます。
これで、基準となる線が作成できました。
直方体の木材の元となる線を作成する
次に、直方体の木材の元となる線を作成していきます。

2つのLineを、それぞれList itemとCull IndexのL端子につなげます。
さらに、List itemとCull Indexのi端子には、0の数値を入力します。

すると、上の画像のように、List Itemでは1地番最初の線を、Cull Indexでは残りの線を取得できました。

その後、Cull Indexを、List Lengthにつなげます。
すると、Cull Indexで取得した線の本数の数値を取得できます。
そして、List Lengthを、SeriesのC端子につなげます。
そして、1つのSeriesのSとN端子には、数値の2を入力します。
すると、2から始まり2ずつ増加する数値が、線の本数分だけ作成されます。
また、2つ目のSeriesのS端子には1、N端子には2の数値を入力します。
すると、1から始まり2ずつ増加する数値が、線の本数分だけ作成されます。
その後、Seriesを、Divide CurveのN端子につなげます。
さらに、Cull IndexのL端子を、Divide CurveのC端子につなげます。
すると、上の画像のように、線の分割点が作成されます。

その後、List Itemを、Curve Middleにつなげます。
すると、上の画像のように、線の中点を取得できます。

その後、Curve MiddleとDivide CurveのP端子を、Mergeにつなげます。
すると、上の画像のように、点のデータが結合されます。

さらに、90の数値を、RotateのA端子につなげます。
この際に、RotateのA端子を右クリックし、Degreesを選択してください。
これにより、入力した数値を、角度の度数で扱うことができます。

すると、他の線と重なって分かりにくいですが、上の画像のように、線が90度回転します。

その後、Rotateを、Curve Middleにつなげます。
すると、上の画像のように、回転した線の中点を取得することができました。

この際に、Curve MiddleのM端子を右クリックし、Graftに設定してください。

その後、Curve Middleを、Vector 2PtのA端子につなげます。
さらに、Mergeを、Vector 2PtのB端子につなげます。
すると、回転した点の中点から各分割点までのベクトルを取得できます。
その後、Vector 2PtのV端子を、MoveのT端子につなげます。
この際に、MoveのG端子を右クリックし、Graftに設定してください。

すると、上の画像のように、回転した線が分割点に移動しました。

すると、各線データが結合されます。
そして、Mergeを、Extend CurveのC端子につなげます。
さらに、Extend CurveのL0とL1端子に、延長する線の長さの数値を入力します。
今回は、どちらにも1000の数値を入力しています。
すると、上の画像のように、線の長さを延長することができました。

その後、Extend Curveと、一番最初に使用した縦向きである線のLineを、Mergeにつなげます。
これで、直方体の木材の元となる線を作成することができました。
直方体の木材を作成する
次に、直方体の木材を作成していきます。

まず、先程のMergeを、Perp FramesのC端子につなげます。
さらに、1の数値を、Perp FramesのN端子につなげます。
すると、各線の両端に作業平面が作成されます。

直方体の木材の厚みの数値を取得します。
上の画像のように、Divide CurveのP端子を、2つのList ItemのL端子につなげます。
1つ目のList Itemのi端子には0、2つ目には1の数値を入力します。

すると、上の画像のように、最初の2つの点を取得できました。
この2つの点の間の距離が、直方体の木材の厚みの数値になります。
これにより、2つの点の間の距離の数値を取得できました。

そして、Distanceを、RectangleのXとY端子につなげます。
さらに、Perp FramesのF端子を、RectangleのP端子につなげます。
すると、上の画像のように、線の両端に正方形の線データが作成されました。

正方形を、線の中心に移動させます。
すると、正方形の中心点を取得できます。
さらに、Perp FramesのF端子を、Deconstruct Planeにつなげます。
すると、設定した作業平面の原点を取得できます。
そして、AreaのC端子を、Vector 2PtのA端子につなげます。
さらに、Deconstruct PlaneのO端子を、Vector 2PtのB端子につなげます。
すると、正方形の中点から線の端までのベクトルを取得できます。
そして、RectangleのR端子を、MoveのG端子につなげます。
さらに、Vector 2PtのV端子を、MoveのT端子につなげます。
すると、上の画像のように、正方形の中心が線の端に移動しました。

すると、2つの正方形の線データをつなぐサーフェスが作成されます。
すると、サーフェスが閉じ、直方体の木材が完成しました。

この際に、Cap Holesを右クリックし、Flattenに設定してください。
そして、Cap Holesを、Groupにつなげて、直方体の木材をグループ化します。
これで、1つの直方体の木材を長く増やしながら積み重ねた柱の完成です。
各グリッドの中心に配置する
次に、作成した直方体の木材の柱を、各グリッドの中心に配置していきます。

SquareのS端子に、1つのグリッドの1辺の長さの数値を入力します。
今回は、20000を入力しています。
さらに、SquareのExとEy端子に、XとY方向のグリッド数の数値を入力します。
今回は、どちらにも5の数値を入力しています。

すると、上の画像のように、5×5のグリッドが作成されました。

その後、SquareのC端子を、Areaにつなげます。
すると、上の画像のように、各グリッドの中心点を取得できました。

この際に、AreaのC端子を右クリックし、Flattenに設定してください。

その後、AreaのC端子を、Vector 2PtのB端子につなげます。
さらに、一番最初に使用した原点0,0,0の位置の点データのConstruct Pointを、Vector 2PtのA端子につなげます。
屋根の厚みを付ける
最後に、屋根の厚みを付けます。

さらに、2の数値を、DivisionのB端子につなげます。
すると、木材の厚みの半分の数値を取得できます。
そして、最初の方に使用した高さの数値である6000を、AdditionのA端子につなげます。
さらに、Divisionを、AdditionのB端子につなげます。
すると、一番上の木材の上側までの高さの数値を取得できます。
また、SquareのC端子を、MoveのG端子につなげます。
すると、上の画像のように、グリッドが一番上の木材の上側の高さまで移動しました。

すると、上の画像のように、グリッドからサーフェスを作成できました。

その後、屋根の厚みの数値を、Unit Zにつなげます。
今回は、200の数値を入力しています。
そして、Unit Zを、ExtrudeのD端子につなげます。
さらに、Surfaceを、ExtrudeのB端子につなげます。
これで、屋根に厚みを付けることができました。
これで完成なので、今回は以上になります。
Comment