GH Basics GH Tips GH Tutorial Grasshopper Objects

【Grasshopper Tips】 Broken Sphere

今回は上画像の様に、球体が壊れたようなジオメトリを生成していきます。是非ご参考ください。さほど難易度は高くありませんが、途中若干ややこしい部分があります。Panelコンポーネントなどでリストの中身を確認しながら進めてみてください。こちらのチュートリアルは動画化してますので、動画のほうが良い方は以下のリンクからどうぞ。

概要

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

基準となる球体生成とVoronoi3D生成

  • Sphereコンポーネントで半径100の球体を生成します。
  • BoundingBoxコンポーネントで球を囲うBoxを生成し、ScaleコンポーネントでBoxを1.1倍します。
  • Populate 3Dコンポーネントで拡大したBox内にランダムに400ポイント生成します。
  • 生成したポイントを元に、Voronoi3DコンポーネントでBoxをVoronoi分割します。

円とVoronoiの共通部分を抽出

  • 球体とVoronoi3Dで生成したBrepをSolid Intersectionコンポーネントで共有部分を抽出してもいいのですが、球体と全く交差していないBrepとの交差も計算してしまうため、warningが出てしまいます。warningを気にしないならそれでもいいのですが、少し気持ち悪いので、最初に球体と接触していないVoronoi分割されたBrepを間引きます。
  • Deconstruct BrepコンポーネントでVoronoi3Dで生成されたBrepの頂点を取得します。
  • Point in Brepsコンポーネントで取得した頂点が球体の内部にあるかを検証します。
  • Member Indexコンポーネントで球体の内部にある点のIndexを取得します。
  • ListLengthコンポーネントをつなぎ、各Brepの頂点が何点球体の内部にあるかが取得できます。ListLengthが1以上だったら球体とBrepは接触している、または内部にあると判断します。
  • Member IndexコンポーネントでList Lengthが0のインデックスを探します。
  • Cull IndexコンポーネントでVoronoi3Dコンポーネントから取得できるBrepから球体の外側にあり、かつ接触していないBrepを取り除きます。
  • Solid Intersectionコンポーネントで間引いたBrepと球体の共通部分を取得します。

分割されたBrepの縮小する

  • Volumeコンポーネントで分割された各Brepの中心を取得します。
  • Distanceコンポーネントで取得した中心点と特定の点(上画像では(-100, 0, 100))との距離を取得し、リストをFlattenします。
  • RemapNumbersコンポーネントで取得した距離のリストを0.1~0.99までにリマップします。
  • GraphMapperコンポーネントでリマップしたリストを指定したグラフを用いて変更していきます。
  • Scaleコンポーネントで分割された各BrepをGraphMapperで加工したリストで縮小します。
  • 最後にCustom PreviewコンポーネントとColour Swatchコンポーネントで色付けして完成です。

完成

GraphMapperやRemapする際の値を変更して色々なパターンを試してみてください。

夢は大きく. 対象コースが¥1,600から。

-GH Basics, GH Tips, GH Tutorial, Grasshopper, Objects
-, ,