[Grasshopper]雨水などの流水分析をする方法[データも配布]

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

今回は、グラスホッパーで雨水などの流水分析をする方法について解説します。

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


↑YouTube始めました。

本サイトIArchwayでは、仕事の依頼、GrasshopperやRhinocerousのサポート、相談を受け付けています。


全体の様子

全体の様子

上の画像は、実際に解析を実行している様子です。

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

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

今回使用するモデル

今回使用するモデル

今回は例として、上の画像のライノセラス上のソリッドモデルを使用します。

今回は、モデルを屋根として進めていきますが、もちろん地形などの場合でも同様に解析できます。

全体コンポーネント

今回のプログラミングでは、Rhino6以降に標準搭載されているKangaroo2を使用しています。

仮にインストールされていない場合、インストールをお願いします。

Rhino6以前のKangaroo2のダウンロードはこちら

Rhino6以降のライノセラスを使っている方は、インストールする必要はありません。

全体コンポーネント:①BrepUnit ZMoveXY PlaneCenter BoxPopulate 3D ⑦SolidPointCollide ⑧Boolean Toggle ⑨SphereCollide ⑩Negative ⑪Load ⑫Floor ⑬Button ⑭BouncySolver

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

水の代わりとなる複数の点を作成する

最初に、水の代わりとなる複数の点を作成していきます。

格納

最初に、ライノセラス上のモデルを、Brepに格納します。

中心点

その後、Brepを、Volumeにつなげます。

すると、上の画像のように、モデルの中心点を取得できます。

移動

その後、移動させる数値を、Unit Zにつなげます。

今回は、5000のをつなげています。

その後、Unit Zを、Move(T)につなげます。

さらに、Volume(C)を、Move(G)につなげます。

すると、上の画像のように、点が真上方向に移動しました。

その後、Move(G)を、XY Planeにつなげます。

すると、移動した点の位置に、XとY方向からできる作業平面が作成されます。

ボックス

その後、XY Planeを、Center Box(B)につなげます。

さらに、各辺の1/2の数値を、X・Y・Zにつなげます。

今回は、XとYに5000、Zに1000をつなげています。

すると、上の画像のように、点を中心とする10000×10000×2000のボックスが作成されます。

複数の点

その後、Center Boxを、Populate 3D(R)につなげます。

さらに、作成する点の個数を、Populate 3D(N)につなげます。

今回は、2000をつなげています。

すると、上の画像のように、ボックス内に2000個の点が作成されます。

これで、水の代わりとなる複数の点を作成することができました。

モデルと点が衝突できるように設定をする

次に、モデルと点が衝突できるように設定をしていきます。

設定1

Populate 3Dを、SolidpointCollide(Points)につなげます。

さらに、Brepを、SolidpointCollide(Solid)につなげます。

さらに、Falseの情報を、SolidpointCollide(In)につなげます。

今回は、Boolean Toggleを使用しています。

これにより、モデルの外側に衝突判定が起きるようになります。

さらに、Trueの情報を、SolidpointCollide(Uni)につなげます。

これにより、衝突によってモデルに影響が出なくなります。

SolidpointCollideのこれらの設定をすることで、点とモデルが衝突するようになります。

その後、Populate 3Dを、Load(P)につなげます。

さらに、Unit Zを、Negativeにつなげます。

これにより、Negativeで方向がマイナスが掛けられ逆方向になり、真下方向のベクトルを取得できます。

その後、Negativeを、Load(FV)につなげます。

これにより、各点に真下方向の荷重がかかるようになります。

その後、Populate 3Dを、SphereCollide(Points)につなげます。

さらに、半径の数値を、SphereCollide(R)につなげます。

今回は、50をつなげています。

これにより、各点が半径50で、点が衝突するようになります。

その後、Floorを用意します。

これにより、高さ0の位置で点が止まるようになります。

設定2

その後、SolidpointCollide・Load・SphereCollide・Floorを、BouncySolver(GoalObjects)につなげます。

さらに、Buttonを、BouncySolver(Reset)につなげます。

これにより、ボタンを押すことで、解析を実行することができます。

さらに、閾値(どの程度移動しなくなったら解析を終了するかの値)を、BouncySolver(Threshold)につなげます。

今回は、5をつなげています。

この値を設定しないと、解析が終わらない、もしくは解析が非常に長くなってしまいます。

さらに、TrueかFalseの情報を、BouncySolver(On)につなげます。

Trueの場合、解析が実行できる状態になります。

Falseの場合、解析が実行できない状態になります。

最初は、Falseの状態にしています。

これで、モデルと点が衝突できるように設定をすることができました。

解析を実行する

解析を実行していきます。

True

BouncySolver(On)の状態を、Trueにします。

ボタン

その後、Buttonのボタンを押します。

解析1
解析2

すると、上の画像のように、真上から点が落ちてきて解析が始まります。

Converged

解析が終了すると、Convergedが表示されます。

間隔

SphereCollideで半径を指定しているので、点の間に間隔があることが分かります。

これで、流水分析ができました。

今回は以上になります。

Comment

Translate »