Grasshopper Kangaroo, Visualizing Stress of Geodesic Dome
カンガルーでジオデザイックドームの応力可視化
前回のブログでは、建築構造の大家バックミンスター・フラーのジオデザイックドームを作成した。ということで、Grasshopper (GH) のプラグインKangarooを使って、ジオデザイックドームの応力可視化に挑戦してみたい。Kangarooは物理演算のソフトで、荷重、テンション、衝突(コライド)など、さまざまな物理的現象をシミュレートできる。Rhino8のGHにはKangaroo2が最初から組み込まれている。今回の実験は、Daniel Pickerによる公開コードBeam Example1.ghを利用する【00】。
【00】Beam Example1.gh、Kangaroo2の出力からC言語による応力可視化を実行するスクリプトが入っている。
参照サイト:
“【集中講座】Grasshopperの物理演算プラグイン「Kangaroo」とは” 株式会社アプリクラフト
“Dan-Piker/Kangaroo-examples” Public Kangaroo Code by Daniel Picker上記Dan-Picker公開コードのNew_for_241/ BeamExample1.gh
80面体ジオデザイックドーム
前回はPolyhedron /IcoSphereのDensity “3 ” (1280面体)のドームを作成したが、単純化する為Density “1 ” (80面体)で行う。【01】に示すように、上下スプリットすると残念ながら欠損しているので、この状態でBakeして、Lineをモデルで付け足して欠損部を補う。また地面に接する水平部材は外し、12の支点で荷重を支持することとする【02】。直径6mのドーム(※1)。
※1. Rhinoモデルの作図単位は、後の応力可視化スクリプトのデフォルトのパラメーターを使用し易いように、メートル(m) あるいは センチメートル(cm)とするのが適当と思われる。
【01】Density=1, 80面体
【02】12支点
まずはすべての部材のLineを等分割する Divide Curve 、ここでは5分割。ここで生成した点はKangarooシミュレーションの作用点となる。つぎに分割点をつなぎ、Polyline でポリラインに変換する(※2)。
※2. BeamExample1.ghのDivide LengthをDivide Curve に変更。
【03】Divide Curve, Polyline
次にポリラインをExplode分解し、 各点に線分(Curve)にPerpFrame垂直の作業平面をつくる。PerpFrameのパラメーターをそれぞれ0と1に、リパラメタライズする【04】【05】。
【04】Explode, PerpFrame
【05】PerpFrame / Parameter “0”, “1” and Reparametarize
これらをKangaroo/ BeamのStartFrameとEndFrame端子に接続する【06】。BeamからのアウトプットはEntwineへ。Beamにはヤング係数Eなど様々なパラメーターを設定できるようになっている。とくに設定しなくとも、他のパラメーターはデフォルトのままで計算できる。
【06】Kangaroo /Beam, Entwine
Kangaroo / Support 支点と支持条件の設定
入力端子Frameは支持点の位置と向きの設定で、鉛直荷重なので
Point→ XY Plane → Frame
支持条件は以下のように設定する【07】。
| 支持 | X,Y,Z | XX,YY,ZZ |
| 固定 | True | True |
| ピン | True | False |
【07】Kangaroo /Support
これら12の支点をEntwineの2番目の端子にまとめてつなげる【08】。
【08】Entwineの2番目の端子へつなぐ
Kangaroo / BouncySolver
いよいよKangarooのメインのコンポーネントの BouncySolver 出番である。Bouncy無しのSolverは、計算結果だけ出力するのに対し、BouncySolverはカンガルーが飛び跳ねるがごとく、時間軸を伴った動きのあるシミュレーションが出力される。BeamとSuportをまとめたEntwineからBouncySolverのGoalObjects端子に接続する。一番下のOn端子にトグルをつけて、シミュレーションのOn⇔Offのスイッチとし、Resetの Buttonでシミュレーションをスタートする。データが大きい時などは、トグルで計算を止めて作業する【09】。
【09】Kangaroo/ Bouncy Solver
ワン・モア・シング!ジョブズの決め台詞ではないが、大事なものをまた1つ忘れていました。GrabというコンポーネントをSupportと同じEntwineの2番目の端子に接続。Grabは、定義したすべての作用点、ここでは分割点を「つかんで」動かすことが出来るようにするコンポーネント。BeamExample1.gh のGrabコンポーネントはバージョンが古くRhino8GHでは動かないので、最新のGrabとつなぎ直す【10】。そして、Bouncy SolverからのOutputをExplode Tree で準備完了【11】。ここまででお分かりと思うが、Entwineへの接続は、Beamからの出力のみ1番目{0;0}で、他は全て2番目{0;1}となる。
【10】Kangaroo / Grab 最新版につなぎ直す
【11】Explode Tree
応力可視化スクリプト
いよいよ応力可視化スクリプトの実行。【00】の後半の部分をExpolde Tree につなげる。するとBeamが黒で表示される【12】。
【12】部材が梁として黒で表示される
Rhino8/GHの環境では、C#スクリプトのコンポーネントにOLD表示がつくが、スクリプト自体は実行可能、気にしないで良い。ちなみに筆者にはチンプンカンプンだが、コンポーネントをダブルクリックするとエディタが開き、前半のスクリプトを開くと以下のようなコードが表示される【13】。
【13】前半のC#スクリプト
上の2つのスライダーが「Beamの断面サイズ」、黒で表示
中央が「曲げモーメント」、赤と青で表示
下が「ねじりモーメント」、緑の線で表示
Beam、梁なので、断面はx幅 y成 での入力となっている【14】。作図単位によって、黒の梁のサイズが太過ぎたり細過ぎたりする場合がしばしばあるので、x幅 y成のパラメーターを調整する。
【14】Beam断面、曲げモーメント、ねじりモーメント
Grab 局所的な力
【12】では応力が発生していないので、マウスでどこかをグラブして動かして部材に負荷をかけると、、、以下のように曲げモーメントが赤と青で、ねじりモーメントが緑のスパイラルで表示される【15】!マウスで動かすと何か弾力を感じる。なかなか面白いですよね。これがKangarooです。表示されない場合は、曲げモーメントとねじりモーメントのスケールを大きくする。
【15】どこかの点を動かして局所的な応力を発生させることができる
Load による荷重/重力
Grabで動かせば局所的に応力が発生するが、躯体全体に応力をかけるには、Kangaroo/ Load で荷重/重力を発生させる。負荷はドームのフレーム全体に均等にかけるので、すべての点を抽出し、負荷をかける。当然重力はマイナスZ方向に設定【16】
【16】Load 荷重/重力、すべての点に均等に負荷をかける
このアウトプットをEntwine の2番目につなぐ。すると、、、 全面に応力が表示される【17】。荷重と応力パラメーターの数値を適宜調整してください。どの部材もモーメントの大きさが同じくらいで分散されていて、きれいな応力分布ではあることが分かりますね【18】。
【17】

【18】全点に均等に重力荷重をかける。フレーム全体に均等な応力分布
Load による局所荷重
それでは次に、ドームの最上の頂点のみに荷重を与える。List Itemで頂点を抽出し、頂点の1点に荷重をかける。例えると、一番上のみにお相撲さんが載る【19】【20】。
【19】

【20】頂点への局所荷重。応力分布は頂点から支点へ減少していく。
崩壊実験
最後にこの頂点の局所荷重をフレームが崩壊するまで極限の荷重を与えてみたくなる。そのためにはLoadの強度Weightingを大きくしていく。スライダーを右クリックすると、Animate…というメニューがあるので、これを実行すると、スライダーの0から最大値までフレームを生成してくれる。連番の静止画像なので、GIF動画などに変換する。

【21】崩壊シミュレーション1, 地面無し
地面が設定されていないので、垂れ下がるまでフレームが落ちていく。支点にはSupportでXY平面の地面を与えているので、12の支点からシャンデリアのように垂れ下がるというわけ。もちろん、こんな崩壊はありえない。ある程度変形すると、部材が降伏し局所的に折れ曲がって降伏するか、接合部が壊れるなどして崩壊していく。そこまで再現するには様々な条件を設定することが必要ですね。サグラダファミリアのカテナリーのようで面白いが、Kangaroo/ Floor により地面を与えることができる【22】。脱線するが、崩壊実験で思い出すのは、学生時代に隣の内田祥哉先生の研究室では、実際にドームを作り壊すところまでやっていたし、ライトもジョンソンワックスの円蓋柱のモックアップでの実験が有名。(こっちは壊すまでやってない?)建築家は建物が壊れてはいけないので、一方で壊したくなる欲求があるのかしら。当然地面を与えると崩壊は地面に衝突(コライド)した時点で終了する。

【22】Kangaroo/ Floor 地面の設定

【21】崩壊シミュレーション2, 地面有り
以上で応力可視化のデモは終わりです。Kangarooはその他いろいろ出来るので、興味のある人はその先を極めてみるのもいかがかと。また、構造の物理演算を本格的に行えるKarambaというプラグインがあるようです。GHのプラグインはフリーが多いですが、Karambaはインストールして多少動かすことが可能だが、商用で本格的に利用する場合は、別途料金が発生する。この先は構造エンジニアにお任せしましょう。
【01】最新バージョンのリボン
【02】RhinoPolyhedra、GHのMeshにネスト
【03】Weaverbird (Wb)
【04】ジオデザイックドーム Scale = 3000 Density = 3
【05】Density = 0 では正20面体
【06】Mesh Split Plane
【07】Weaverbird’s Mesh Window & Picrure Frame
【08】Weaverbird’s Mesh Thicken
【09】ガラスをマリオンの中央に移動、Weaverbird’s Offset Mesh
【10】ガラスをに厚みを与える
【11】RevitでBakeして読み込まれたが…
【12】 Revit / DirectShape / Add DirectShape (Geometry)
【13】 Loftで作成したサーフェスをGeometoryとして即席インポート
【14】 Add Material
【15】色の設定、その他マテリアルパラメーターの設定
【16】DirectShapeのMaterial端子に接続
【17】GHで定義したマリオンの黄色とガラスの水色が無事に読み込まれる
【18】Revitのマテリアルブラウザ
【19】RevitからLumionにインポートしてマテリアルをアサイン
【20】Add Component (Adaptive)
【21】うまく割付られないパネル(地面リングの微小なフラグメント)をDelete
【22】Adaptive三角パネルの割付


















