[Grasshopper]長さが変わる直方体を天井から垂らすデザイン方法[データも配布]

grasshopper
本サイトはプロモーションが含まれています

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

本記事では、コンポーネントはアイコン表示になっています。


↑YouTube始めました。

本サイトIArchwayでは、GrasshopperやRhinocerousのサポートや相談をココナラで受け付けています。


動画で見る

全体の様子

全体の様子1
全体の様子2
全体の様子3
全体の様子4

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

全体の様子5
全体の様子6
全体の様子7
全体の様子8

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

レンダリング

上の画像は、最終的にレンダリングした様子です。

それでは、順番に解説していきます。

今回使用したグラスホッパーとライノセラスのデータダウンロードはこちら

ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。

全体コンポーネント

全体コンポーネント:①Construct PointRectanglePopulate 2DSurfaceDivide Domain²IsotrimAreaScaleDistanceFlip MatrixSort ListList ItemBoundsConstruct DomainRemap NumbersNegativeUnit ZExtrude

全体コンポーネント1
画像をクリックして拡大して見る
全体コンポーネント2
画像をクリックして拡大して見る
全体コンポーネント3
画像をクリックして拡大して見る
全体コンポーネント4
画像をクリックして拡大して見る
全体コンポーネント5
画像をクリックして拡大して見る
全体コンポーネント6
画像をクリックして拡大して見る

ランダムな点を作成する

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

高さの基準となる点

最初に、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個作成されました。

この点は、後程の直方体の長さを変える基準の点となります。

Graft

この際に、Populate 2DのP端子を右クリックし、Graftに設定してください。

これで、ランダムな点を作成することができました。

分割された正方形のサーフェスを作成する

次に、分割された正方形のサーフェスを作成していきます。

サーフェス

RectangleのR端子を、Surfaceにつなげます。

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

分割

その後、Surfaceを、Divide Domain²のI端子につなげます。

さらに、分割数の数値を、Divide Domain²のUとV端子につなげます。

今回は、どちらにも50の数値を入力しています。

その後、Divide Domain²を、IsotrimのD端子につなげます。

さらに、Surfaceを、IsotrimのS端子につなげます。

すると、上の画像のように、サーフェスが50×50に分割されました。

中心点

その後、Isotrimを、Areaにつなげます。

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

スケールが小さくなった

その後、Isotrimを、ScaleのG端子につなげます。

さらに、AreaのC端子を、ScaleのC端子につなげます。

さらに、倍率の数値を、ScaleのF端子につなげます。

今回は、0.5の数値を入力しています。

すると、上の画像のように、各サーフェスのスケールが小さくなり、隙間ができるようになりました。

これで、分割された正方形のサーフェスを作成することができました。

点から各サーフェスの距離によって長さが変わる直方体を作成する

次に、点から各サーフェスの距離によって長さが変わる直方体を作成していきます。

点から各サーフェスの距離によって長さが変わる数値

最初に、点から各サーフェスの距離によって長さが変わる数値を作成していきます。

AreaのC端子を、DistanceのA端子につなげます。

さらに、Populate 2Dを、DistanceのB端子につなげます。

すると、各サーフェスの中心点から、ランダムに作成された点までの距離の数値が出力されます。

今回の場合、ランダムに作成された点が10個、サーフェスが50×50=2500個あるので、2500個の距離の数値が10セット(階層)出力されます。

その後、Distanceを、Flip Matrixにつなげます。

すると、行と列が入れ替わり、10個の距離の数値が、2500セット出力されます。

この1つのセットの10個の数値は、各サーフェスの中心から、10個のランダムな距離までの数値になります。

その後、Flip Matrixを、Sort Listにつなげます。

すると、小さい順に数値が並び替えられました。

Flatten

その後、Sort ListのK端子を、List ItemのL端子につなげます。

さらに、0の数値を、List Itemのi端子につなげます。

すると、各セット(階層)の一番最初の一番小さな数値が出力されます。

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

これで、2500セットの各セットの中から、一番小さな数値が出力され、2500個の数値が出力されます。

その後、List Itemを、Boundsにつなげます。

すると、入力した数値の最低値と最大値から作成される数値範囲が作成されます。

その後、新たに作成する最低値の数値と最大値の数値を、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につなげます。

すると、入力した数値にマイナスが掛けられました。

その後、Negativeを、Unit Zにつなげます。

その後、Unit Zを、ExtrudeのD端子につなげます。

さらに、ScaleのG端子を、ExtrudeのB端子につなげます。

すると、上の画像のように、ランダムな点に近いほど短く、ランダムな点から遠いほど長い直方体が作成されます。

これで完成です。

今回は以上になります。

Comment

Translate »