GrasshopperでPUGを使って、円の直径が300mmに近いほど「良い」というスコアリングを行うチュートリアルを、初心者向けにステップバイステップで解説します。このチュートリアルでは、円の直径と理想の直径(300mm)の差を基に、スコアリングを行います。
目標
円の直径が300mmに近いほど良いスコアを出すようにPUGを使ってスコアリングします。スコアは0(最悪)から10(理想的)までの範囲で出力されます。
ステップ1:Grasshopperを開く
- Rhinoを起動し、Grasshopperを開きます。
- Rhinoのコマンドバーに「Grasshopper」と入力してEnterを押すか、ツールバーからGrasshopperを選択します。
ステップ2:円を作成
- Grasshopperで円を作成します。
- Circleコンポーネントを使用します。
Circleコンポーネントを右クリックして、Radiusに適当な半径(例えば150mm)を設定します。
ステップ3:円の直径を計算
- 円の直径を計算します。
- 直径は半径の2倍ですので、
Radiusの値を2倍にします。 - Multiplicationコンポーネントを使い、半径を2倍にします。
Multiplicationコンポーネントを配置し、半径を入力端子(A)に接続します。B端子に「2」を入力して、直径を計算します。
ステップ4:目標直径(300mm)との差を計算
- 目標直径300mmとの差を計算します。
- Subtractionコンポーネントを使って、計算した直径と300mmとの差を求めます。
SubtractionコンポーネントのA端子に計算した直径を接続し、B端子に「300」を入力します。
ステップ5:スコアリングを行う
- スコアリングを行います。直径の差が小さいほど高いスコアが得られるようにします。
- Absolute Valueコンポーネントを使用して、差の絶対値を取ります。これにより、正負の違いをなくします。
Subtractionコンポーネントから出力された差をAbsolute Valueコンポーネントに接続します。
- 次に、スコアを算出します。差が大きいほどスコアが低くなるようにします。
- Divisionコンポーネントを使い、計算した差をスコアに変換します。
DivisionコンポーネントのA端子に差の絶対値を接続し、B端子にスケール値(例えば50)を入力します。これにより、差が大きければスコアが小さくなります。
- 最後に、スコアを0から10の範囲にスケーリングします。
- Subtractionコンポーネントを使い、最大差(例えば100mm)を引いて、スコアを調整します。
ステップ6:PUGを使ったスコアリング
- PUGを使ってスコアリングを行います。
- Pug Objectコンポーネントを使い、PUGのスコアリングシステムに接続します。
- PUGの「スコア」や「評価関数」を使って、得られたスコアを評価します。
接続方法の詳細
- Circleコンポーネントの
Radius端子を、Multiplicationコンポーネントに接続します(半径を2倍にするため)。 Multiplicationの出力を、SubtractionコンポーネントのA端子に接続します。- 目標直径「300mm」を
SubtractionコンポーネントのB端子に入力します。 Subtractionの出力をAbsolute Valueコンポーネントに接続します。Absolute Valueの出力を、Divisionコンポーネントに接続します(スケール値で割る)。- 最後に、得られたスコアをPUGのスコア評価に渡します。
ステップ7:結果の表示
- 最後に、計算されたスコアを
Panelコンポーネントに接続して表示します。
まとめ
- Circleコンポーネントで円を作成し、その直径を計算します。
- 目標直径(300mm)との差を計算し、その差に基づいてスコアリングします。
- Pug ObjectコンポーネントでPUGを利用してスコアを評価し、結果を表示します。
これで、円の直径が300mmに近いほど良いスコアを得るスコアリングシステムが完成します。