今回は kangaroo2 を使用して上画像の様なリボンを作成していきたいと思います。pinterest などで画像を検索していると天井の装飾などでたまに見かけることがあります。是非チャレンジしてみてください。こちらのチュートリアルは動画化しておりますので、動画の方がよい方は以下のリンクからどうぞ!また、kangaroo2 をインストールしていない方は、
からインストールしていただければと思います。
概要
上画像がプログラムの全体像となっております。各ブロックごとに説明していきたいと思います。
ベースとなるオブジェクト作成(Rhinoceros)

①円サーフェイス作成
- まず Rhinoceros でベースとなるオブジェクトを作成します。Circle コマンドで XY 平面に半径 250mm の円を作成し、PlanarSrf コマンドで円サーフェイスを作成します。
- 作成した円サーフェイスを Rebuild コマンドで制御点を増やします。制御点数は u,v = 3,3 次数は u,v = 2,2 とし、中心に制御点を設けます。

②制御点を表示

③円サーフェイスを変形
- F10 を押す、または「編集 ⇒ 制御点 ⇒ 制御点表示オン」から制御点を表示します。
- 中心の制御点を Z 方向に引張り円サーフェイスを変形させます。画像の様にガムボール(3 方向の矢印)が表示されていない人は、画面下部のガムボール欄を選択して表示させてください。

④サーフェイス下部に円を作成
- 変形させた円サーフェイスの下部に、更に円を作成します。大きさは、上から見た時に、変形させた円サーフェイス内に納まるサイズとしてください。これで Rhinoceros 上での準備は完了です。
サーフェイスに円を投影
- ここからは Grasshopper での作業となります。Curve コンポーネントに先ほど最後に作成した円を、Surface コンポーネントに変形させたサーフェイスをセットします。
- Pull Curve コンポーネントで円をサーフェイスに投影します。上画像の様に変形したサーフェイスに円が投影されていれば OK です。
投影した円を分割
- Divide Curve コンポーネントで投影した円を分割します。今回は 500 分割しています。
- Shift List コンポーネントで分割点を 1 つずらします。
- Line コンポーネントで分割点同士を直線で結びます。これで投影した円が 500 本の直線に分割されました。
サーフェイスのメッシュ化と点の拘束
- Mesh Brep コンポーネントでサーフェイスをメッシュ化します。
- End Points コンポーネントで先ほど作成した直線の終点を取得します。
- OnMesh コンポーネントで取得した終点をメッシュ状に拘束します。
GoalObject の設定(Length)
- Line コンポーネントで分割した直線を取得しておきます。
- Kangaroo2 の Length コンポーネントに取得した直線を接続します。
- Length コンポーネントで直線の長さを取得します。
- Multiplication コンポーネントで取得した直線の長さを 2 倍し、Kangaroo2 の Length コンポーネントに接続します。Strength はデフォルトの 10 としておきます。これで直線が特定の長さになるように変形するようになりました。
GoalObject の設定(Collider)
- 変形したオブジェクト同士の衝突判定を加えていきます。Collider コンポーネントを用意し、分割した直線を接続します。Radii に衝突半径を入力します。今回は 10.0 を入力しています。Strength には 9 を入力しています。
GoalObject の設定(Angle)
- Shift List コンポーネントで直線のリストを1つずらします。
- Angle コンポーネントで分割した直線の隣り合う直線同士の角度を変形させていきます。RestAngle に 0 度を指定します。
- Strength には 1100 を指定していきます。
Solver に接続
- Solver コンポーネントを用意し、OnMesh コンポーネント・Length コンポーネント・Collider コンポーネント・Angle コンポーネントを接続します。入力端子は Flatten しておきます。
- 入力端子 Reset に Button コンポーネントを、入力端子 On に Boolean Toggle コンポーネントを接続します。
- Nurbs Curve コンポーネントで出力端子 V から得られる変形した点のリストを Nurbs Curve で曲線化しまます。Periodic を Invert して閉じた曲線とします。
- Boolean Toggle コンポーネントを True にすると演算が開始します。Reset ボタンを押すと演算がリセットされます。
曲線に高さを持たせリボンの作成
- Boolean Toggle コンポーネントを False にして演算を止めます。
- Project コンポーネントで、Nurbs Curve コンポーネントから取得できる曲線を原点を(0,0,-10)とする XY 平面に投影します。
- Ruled Surface コンポーネントで曲線同士の間にサーフェイスを張ります。
- Custom Preview コンポーネントと Colour Swatch コンポーネントで色付けして完成です。
完成
以上になります!変数を変えていろんな形状を試してみてください。kangaroo2 に関しては私もまだまだ分からないことがたくさんありますが、使いこなしてこちらで共有できればと思っております。
【参考文献】