STUDIO TAMA

thumbnail

投稿日:2022-04-01

【Grasshopper】 How to scale gradually using sine wave

  • #Grasshopper

  • #GH Modeling

  • #Basic

今回は sin 波を使用して徐々にスケールする方法について書いていきたいと思います。使いこなすと割と便利かなと思いますので、是非参考にしてください。動画化もしていますので、動画の方がよい方は以下のリンクからどうぞ!

thumbnail

概要

thumbnail

上画像がプログラムの全体像となっております。各ブロックごとに説明していこうと思います。

ベースとなる球を四角形で分割

thumbnail
  1. Mesh Sphere コンポーネントで半径 100、u,v 方向の要素数がそれぞれ 50 の球体メッシュを作成します。
  2. Face Boundaries コンポーネントでメッシュの境界線を取得します。
  3. Boundary Surface コンポーネントで取得した境界からサーフェイスを作成します。

グラデーション方向となる直線を作成

thumbnail
  1. 冒頭の GIF 画像の様に斜め方向にスケールしていこうと思うので、その基準となる直線を作成します。
  2. Line コンポーネントで球の上下の頂点を結ぶ直線を作成します。
  3. Rotate コンポーネントで作成した直線を回転させます。今回は、XZ 平面を基準とし 45 度回転させています。

グラデーション方向の基準線と各四角形サーフェイスの内積を算出

thumbnail
  1. Is Plane コンポーネントで各四角形サーフェイスに沿った平面(及び法線ベクトル)を取得します。
  2. Dot Product コンポーネントでグラデーションの基準方向線と各四角形の法線ベクトルとの内積を取得します。

sin 波を使用して四角形サーフェイスをスケール

thumbnail
  1. 先ほど取得した内積のリストを角度にリマップします。Remap Numbers コンポーネント・Bounds コンポーネントを使用して 0 ~ Pi の範囲でリマップします。
  2. Sine コンポーネントにリマップした値を接続し、Sin 波を取得します。
  3. 取得した Sin 波は‐1 ~ 1 の値となっているので、それを更に角度の値にリマップします。今回は 0.3 倍~ 0.85 倍としました。
  4. Scale コンポーネントに接続し、スケールします。上画像の様に、グラデーション基準線の端部付近では縮小倍率が 0.3 倍、中心部付近では 0.85 倍されており、グラデーション上にスケールされていることがわかります。
  5. 角度に Remap する範囲を、変更することで波の周波数が代わりグラデーションの繰り返し回数を制御することができます。

色付け

thumbnail
  1. Is Plane コンポーネントから法線ベクトルを取得し、Unit Vector コンポーネントで単位ベクトルに変換します。
  2. Deconstruct Vector コンポーネントでベクトル成分を分解します。
  3. 分解した X・Y・Z 各成分を Remap Numbers コンポーネントで 0 ~ 1 にリマップします。
  4. Colour RGB(f)コンポーネントにそれぞれ接続します。
  5. Custom Preview コンポーネントに接続すれば、上画像の様に虹色になるかと思います。
  6. 若干立体感を持たせるために、内部に半径 90 の球体を作成して、若干白みがかった透明の色を割り当てて完成です。

完成

thumbnail
thumbnail
thumbnail

以上になります。sin 波や内積・外積などは、モデリングする際に結構遭遇するかと思います。是非応用してみてください。

目 次