STUDIO TAMA

thumbnail

投稿日:2021-11-25

【Grasshopper Basics】Galapagosの使い方

  • #Grasshopper

  • #Basic

今回は、Grasshopper で使用できる「Galapagos コンポーネント」の基本的な使い方について解説していこうと思います。 「Galapagos コンポーネント」 を使用することで、最小値・最大値となる最適な値を算出してくれます。今回はバナナを(概ね)均等にカットする位置を算出する例題を用いて説明していこうと思います。

概要

thumbnail

今回は上画像の様なバナナっぽいオブジェクトを概ね均等に分割する位置を「Galapagos コンポーネント」を使用して算出していきます。

  • Grasshopper プログラムの解説
  • バナナを 2 等分する位置を「Galapagos」で算出
  • バナナを 4 等分する位置を算出

Grasshopper プログラムの解説

thumbnail

上画像が Grasshopper のプログラムとなります。右上にあるコンポーネントが「Galapagos コンポーネント」となります。

  • Rhinoceros を使用して Solid を作成し「Brep コンポーネント」に Set します。
thumbnail
  • 「Deconstruct Brep コンポーネント」を使用してオブジェクトを分解します。
  • 「List Item コンポーネント」を「Deconstruct Brep コンポーネント」の出力端子 E に接続し、上画像の緑ラインの様な軸方向のラインを取得します。
  • 「Evaluate Curve コンポーネント」を使用し、「List Item コンポーネント」の出力端子に接続します。
  • 「Evaluate Curve コンポーネント」の入力端子 C 上で右クリックを押し、「Reparametrize」します。取得した軸方向のラインの始点が 0、終点を1としました。
  • 「Evaluate Curve コンポーネント」の入力端子tに「NumberSlider コンポーネント」を使用し、「0 ~ 1.00」で動かせるよう設定します。
thumbnail
thumbnail
  • 「Evaluate Curve コンポーネント」の出力端子 P に「YZ Plane コンポーネント」を接続し、取得した点における YZ 平面を作成します。(※オブジェクトの向きによっては YZ 平面ではないこともありますので、カットする平面を入力してください)
thumbnail
thumbnail
  • 「Brep | Plane コンポーネント」を使用して、Brep と Plane の交線、カットラインを取得します。
  • 「Split Brep コンポーネント」を使用して、取得した交線でバナナを切断します。
thumbnail

1- 「List Item コンポーネント」を使用して、分割したオブジェクトをそれぞれ取得します。 1- 「Cap Holes コンポーネント」を使用し、切断面を Cap します。 1- 「Volume コンポーネント」を使用し、それぞれの体積を取得します。 1- 「Subtraction コンポーネント」を使用し、それぞれの体積を引き算します。 1- 「Absolute コンポーネント」を使用し、引き算した解を絶対値にします。

分割したそれぞれの体積の差の絶対値が最小になるとき、バナナは概ね均等に分割されることになります。

それでは「Galapagos コンポーネント」を使用してこの値が最小値となる分割点を求めていきます。

バナナを 2 等分する位置を「Galapagos」で算出

thumbnail
  • 「Galapagos コンポーネント」を使用し、Genome 端子を切断位置となるパラメーターに接続したいので、「Evaluate Curve コンポーネント」に接続した「NumberSlider コンポーネント」に接続します。この時、「Galapagos コンポーネント」から「NumberSlider コンポーネント」に接続してください、逆だと接続できません。
  • 同様に「Galapagos コンポーネント」の Fitness 端子を「Absolute コンポーネント」の出力端子に接続します。
  • 「Absolute コンポーネント」の出力値が最小となる「NumberSlider コンポーネント」を算出する解析を回していきます。
thumbnail
thumbnail
  • 「Galapagos コンポーネント」上で右クリックを押し、Galapagos Editor を開きます。
  • Options タブで Fittness 項目を「Minimize」に設定します。最大値を求めたい場合は「Maximaize」としますが、今回は最小値なので「Minimize」を選択します。
  • 解析時間の制限を設けたい場合は、Runtime Limit を Enable にチェックをいれて設定してください。基本的には解析を長く回せば回すほどより最適な解が算出されます。今回は、さほど難しい解析ではないので設定しません。
  • Solvers タブで Start Solver を押して解析をスタートさせます。
thumbnail
  • 解析の完了結果を見てみます。「NumberSlider コンポーネント」が 0.49 の位置で止まりました。この位置でのそれぞれの体積が概ね近い数字になっていることがわかります。(「NumberSlider コンポーネント」の小数点をもっと細かくすれば、解析時間は長くなりますが、より精度の高い結果が取得できます。)

バナナを 4 等分する位置を算出

thumbnail

次に上画像の様に、バナナを 4 分割したときに、それぞれの体積が概ね同じぐらいになる位置を算出します。

thumbnail

詳細は割愛しますが、先ほどのプログラムを多少修正しております。

  • 「Gene Pool コンポーネント」を用意します。コンポーネント上で右クリックを押し、Edit を選択します。Gene Count を 3 にすることで変数を 3 つ用意します。
  • 変数の最大値を 1.0、最小値を 0.0 に設定します。
  • 今回はバナナを4分割した平均値と、分割後の各体積を引き算し、それらの絶対値を「Mass Addition コンポーネント」で足し合わせた時の値が最小になる位置を算出することで、概ね均等に分割できる位置を算出します。
  • 「Galapagos コンポーネント」の Genome を Gene Pool コンポーネントに接続し、Fittness を「Mass Addition コンポーネント」の出力端子に接続します。
thumbnail
thumbnail

解析が完了しました。変数を小数点第一位としたので、あまり精度はよくないですが、上画像のような位置となりました。

以上が「Galapagos コンポーネント」の基礎的な使用方法となります。今回紹介したのは、基本的なことのみなので、ご興味あるかたは是非調べて使いこなして活用してみてください。

【参考文献】

  • AppliCraft : https://www.applicraft.com/
  • 「コンピュテーショナル・モデリング入門から応用」 著:中島淳雄+高木秀太[共著] 熊野優美+田上雅樹+金野圭祐[執筆協力]
目 次