Grasshopperのオフセットについてお探しですね。

広告

Grasshopperでサーフェスに厚みをつける方法──オフセットと押し出しを使い分けよう

Grasshopperでパラメトリックなモデリングをしていると、作った曲面や平面に厚みを持たせたくなる場面がよく出てきます。

3Dプリンターで出力したり、BIMソフトに連携したりするときに、ペラペラのサーフェスのままだとデータとして不十分になってしまうんですよね。

この記事では、Grasshopperでサーフェスを立体にする基本テクニック、「オフセット(Offset)」と「押し出し(Extrude)」の2つについて、それぞれの特徴や使い方をわかりやすく解説していきます。

サーフェスを立体にする2つの基本ワザ

Grasshopperで、ペラペラの平面や曲面を立体的なソリッドモデルに変えるプロセスは、モデリングの仕上げでとても大切なステップです。

どんな形でも、実際に物として存在させるには必ず「厚み」が必要ですよね。

Grasshopperでこの厚み付けをするとき、主に使われるのが「Offset Surface(サーフェスのオフセット)」と「Extrude(押し出し)」という2つのコンポーネント。

どちらもサーフェスから立体を作るという目的は同じですが、厚みをつける「方向」の考え方がまったく違うんです。

ざっくり言うと、サーフェス自体の形に沿って全体的に膨らませるように厚みをつけるのがオフセット。

一方、決めた方向にまっすぐ引き伸ばすのが押し出しです。

だから、元のサーフェスが平らな面なのか、グニャグニャ曲がった複雑な曲面なのかによって、使い分ける必要があります。

たとえば、建物のドーム屋根とか車のボディみたいな有機的な曲面を作っているとき、単純に一方向へ押し出すと、場所によって厚みがバラバラになって変な形になっちゃいます。

逆に、ビルのフロアの輪郭から壁を立ち上げるような場合は、面の向きに関係なく垂直方向に押し出す必要がありますよね。

作りたい形に合わせてこの2つをちゃんと理解して使い分けることが、Grasshopperを使いこなす第一歩になります。

オフセット(Offset Surface)で厚みをつける方法

「Offset Surface」コンポーネントは、元のサーフェスから一定の距離を保ったまま、新しいサーフェスを作ってくれる機能です。

一番のメリットは、元のサーフェスの「法線方向(それぞれの場所での垂直な向き)」に沿って面が移動するので、複雑な曲面でも全体に均一な厚みをつけられること。

球体の一部とかシェル構造みたいに、サーフェスがいろんな方向を向いている場合は、このコンポーネントが必須です。

使い方はシンプルで、Offset Surfaceコンポーネントの「S(Surface)」端子に対象のサーフェスをつないで、「D(Distance)」端子に厚みの数値を入れるだけ。

D端子にプラスの数値を入れると法線方向(表側)にオフセットされて、マイナスの数値だと逆方向(裏側)にオフセットされます。

ここで重要なのが「Solid」というオプション設定。

デフォルトだと面がコピーされて移動するだけなんですが、コンポーネントを右クリックして「Solid」をTrueにするか、端子にBoolean ToggleでTrueを入力すると、元の面とオフセットした面の間が埋められて、中身の詰まった閉じたソリッド(Closed Brep)ができあがります。

ただし、Offset Surfaceを使うときに気をつけたいポイントがあります。

すごくキツく曲がっているサーフェスに大きな数値でオフセットをかけると、生成された面同士が内側でぶつかっちゃう「自己交差(Self-Intersection)」っていうエラーが起きやすいんです。

こうなると正常なソリッドとして認識されなくて、その後のブール演算(結合とかくり抜きとか)が失敗する原因になります。

厚みをつけるときは、元のサーフェスの曲がり具合と指定する厚みのバランスを意識することが大事です。

押し出し(Extrude)で立体にする方法

「Extrude」コンポーネントは、指定したサーフェスやカーブを、決めたベクトル(方向と距離)に沿ってまっすぐ引き伸ばす機能です。

Offset Surfaceが「面自体の向き」に合わせるのに対して、Extrudeは「外から指定した一定の方向」だけで形を作ります。

建物の壁とか柱、階段のステップみたいに、水平面から垂直方向(Z軸方向)に立ち上がるような人工的・幾何学的な形を作るときにぴったりです。

Extrudeコンポーネントの使い方は、「B(Base)」端子に押し出したいサーフェスをつないで、「D(Direction)」端子にベクトルデータを入力します。

Grasshopperでベクトルを指定するには、普通の数値スライダーをつなぐだけじゃダメなんです。

たとえば真上(Z軸方向)に押し出したいときは、「Unit Z」コンポーネントを用意して、そこに距離の数値を入れてからD端子につなぐ必要があります。

斜め方向に押し出したいときは、「Vector 2Pt」コンポーネントで2点間の方向を決めたり、「Amplitude」コンポーネントで好きな方向ベクトルの長さを調整したりと、ベクトルの扱い方を理解することが求められます。

また、Extrudeでサーフェスを押し出した直後のデータは、側面の壁だけができた「フタのない筒」みたいな状態(Open Brep)になっています。

これを中身の詰まったソリッドモデルにするには、Extrudeコンポーネントの後に「Cap Holes」コンポーネントをつなぐ必要があります。

Cap Holesを通すことで、開いている上下の平らな部分に自動で面が張られて、閉じたソリッド(Closed Brep)に変換されるんです。

こんなふうに「押し出して、フタをする」っていう2段階のプロセスが基本になる点も、一発でソリッド化できるOffset Surfaceとの大きな違いですね。

オフセットと押し出しの使い分けとエラーを防ぐコツ

Grasshopperできれいなモデリングをするには、この2つの立体化テクニックを状況に応じて賢く使い分ける必要があります。

判断基準はシンプルで、「面の形に沿った均一なシェルを作りたいのか」、それとも「特定の軸に沿った塊を作りたいのか」っていう一点です。

実際のプロジェクトで役立つ使い分けのポイントと、エラーを防ぐコツをまとめておきますね。

**曲面屋根や布みたいな形にはOffset Surface**
面がどの方向を向いていても一定の厚さを保てるので、プロダクトのカバー部品とか有機的なファサード設計に最適です。

**地形やフロアからの立ち上げにはExtrude**
元のサーフェスが波打っていても、上部を平らに揃えたいときなどに便利。

Z方向への押し出しなら、建築的な床面積の計算なんかにも使いやすいです。

**法線方向(Normal)の反転に注意**
複数のサーフェスを同時にOffset Surfaceで処理するとき、面によって表裏(法線方向)がバラバラだと、厚みがつく方向がチグハグになっちゃいます。

事前に「Flip」コンポーネントなどで法線方向を揃えておく準備が大切です。

モデリングの途中でGrasshopperの処理がめちゃくちゃ重くなったり、エラーで赤く表示されたりするときは、この立体化の工程に無理が生じていることが多いです。

特に複雑なサーフェスをたくさん扱うときは、いきなり全部の面に厚みをつけるんじゃなくて、一部の面でテストして、自己交差とかの問題が起きないか確認しながら数値を調整していくのがおすすめです。

オフセットと押し出しの特性をしっかり理解して、適切なベクトル制御やデータ整理と組み合わせれば、Grasshopperでのモデリングの自由度と安定性はグッと上がるはずです。

ぜひ試してみてください!

広告