Grasshopperの面分割についてお探しですね。
広告
Grasshopperでサーフェスを分割・切断・交差させる基本の考え方
パラメトリックデザインをやっていると、作ったサーフェスを好きな形に切り取ったり、他の形と重なっている部分だけを取り出したりする作業がよく出てきます。
Rhinocerosなら直感的にマウスでクリックするだけで済むことも、Grasshopperでは順序立てて論理的にコンポーネントを組み合わせていく必要があります。
そこで大事になってくるのが、「自分は最終的に何が欲しいのか」をはっきりさせることです。
今やりたいのは「対象を複数のパーツに分けて全部使いたい」のか、「いらない部分は捨てて特定の部分だけ残したい」のか、それとも「オブジェクト同士が交わっている線や点を取り出したい」のか。
この目的をはっきりさせることが、うまくいくための第一歩になります。
Grasshopperには「Intersect(交差)」タブの中に、モデリングを助けてくれる便利なコンポーネントがたくさん用意されています。
これらは大きく分けて、計算上の仮想的な交差を扱う「Mathematical」、実際の形同士のぶつかり合いを扱う「Physical」、そして平面の境界線を使う「Region」の3つに分かれています。
サーフェスを直接加工したいときは、主に「Physical」カテゴリのコンポーネントをよく使うことになります。
それぞれのコンポーネントは、入力端子で受け取れるデータの種類(Brep、Surface、Curveなど)がきっちり決まっているので、入力する形の種類を正しく合わせることがエラーを防ぐ基本ルールです。
サーフェスの分割と切断(Split/Trim)の違いと使い分け
サーフェスを加工するとき、初心者がつまずきやすいのが「分割(Split)」と「切断(Trim)」の違いです。
分割(Split)は、サーフェスを特定の曲線や平面を基準にして、複数のパーツに切り分ける処理のことです。
切り分けられたパーツは全部別々のデータとして出てくるので、例えば球体を平面で真っ二つに割って、両方のパーツをそれぞれ別の使い方をしたいときには「Surface Split」コンポーネントが向いています。
ただし注意点があって、分割用の曲線はサーフェスの端から端まで完全に突き抜けている必要があります。
途中で止まっている曲線を入れると、分割されずに元のサーフェスがそのまま出てきてしまいます。
一方、切断(Trim)は、基準となる境界線や形を使って、サーフェスの内側と外側のどちらか一方だけを残して、いらない部分を完全に捨ててしまう処理です。
例えば「Trim with Brep」や「Trim with Region」といったコンポーネントを使うと、指定した境界の内側(Inside)と外側(Outside)を別々の出力端子から取り出せます。
これを使えば、ファサードのサーフェスに特定のパターンで穴を開けたり、特定の枠の中に収まる部分だけを抽出したりできます。
自分が「分けた後に全部の面を使いたい」のか「特定の部分だけ残して後は捨てたい」のかによって、SplitとTrimを使い分けることが、Grasshopperでデータをすっきり整理するコツです。
サーフェス同士や曲線との「交点・交線」を取り出す方法
複雑なモデリングをするときは、既にあるサーフェスや立体同士が空間で交わっている部分から、新しく「交線」や「交点」を取り出して、次の形を作る基準にすることがよくあります。
この交差情報を取得するのに一番よく使われて便利なのが「Brep | Brep」コンポーネントです。
Grasshopperでは、一枚の平面サーフェスから複数の面が組み合わさった複雑なポリサーフェスまで、多くの3D形状がBrep(Boundary Representation)という形式で扱われます。
このコンポーネントに二つのBrepを入れるだけで、それらが交わっている場所にできる3D曲線(Curves)や交点(Points)を自動で計算して、正確なデータとして出してくれます。
また、サーフェスと曲線の関係を調べたいときや、特定の線が面を貫通する位置を知りたいときには、「Surface | Curve」や「Brep | Curve」といったコンポーネントがとても役立ちます。
これらを使うと、対象の線がサーフェスとぶつかる正確なポイント(交点)が取得できるだけでなく、その交点でのサーフェス上のUV値や法線ベクトル(Normal)も一緒に手に入ります。
手に入れた法線ベクトルを使えば、交わった場所に対して垂直な作業平面を作ったり、パイプやボロノイのセルなどの別のオブジェクトを正しい角度で配置したりできます。
このように、交点や交線の取得は単に形を抽出するだけでなく、次の設計ステップに向けた大事な基準データ(ベクトルや平面)を作り出すための出発点になるんです。
うまくいかないときのチェックポイントと対処法
GrasshopperでSplitやTrim、交差の処理をしていると、Rhinoの画面上では確実に交わっているように見えるのに、コンポーネントがエラーを起こしたり、空っぽのデータ(Empty Data)が返ってきたりすることがよくあります。
こういうトラブルに遭ったとき、最初に確認すべきなのは「データ型が合っているか」です。
例えば、Surface Splitコンポーネントは名前の通り単一の「Surface」を必要としますが、入力したデータが複数の面がくっついた「Brep(ポリサーフェス)」だった場合、計算がうまくいきません。
そんなときは、先にDeconstruct Brepコンポーネントを使ってBrepを個々のサーフェスにバラバラにしてから入力するなど、データ型を揃える工夫が必要です。
もう一つよくある失敗の原因が、分割用の曲線や平面が対象のサーフェスにちゃんと接していない、あるいは境界を貫通していないという「精度とつながり方」の問題です。
目で見ると重なっているように見えても、ほんの少し隙間が空いていたり端っこ同士がピッタリ合っていなかったりすると、Grasshopperは「交わってない」と判断してしまいます。
こうした精度のエラーを防いで、確実に処理を行うための対処法として、次の3つのポイントをモデリングの流れに組み込むのがおすすめです。
計算エラーを防ぐには、確実に交差が成立するようなプロセスを挟むことが大切です。
* 分割用の曲線をExtend Curveコンポーネントなどで少し長めに伸ばして、対象のサーフェスを完全に突き抜けさせる
* Projectコンポーネントを使って、交わらせたい曲線を対象のサーフェス上に確実に投影してから分割処理をする
* 複数のオブジェクトを処理するとき、データツリーの構造を確認して、GraftやFlattenを使ってリスト同士の階層をちゃんと合わせる
モデリングの組み立てを考えるときは、このように常に「確実な交差状態」と「適切なデータの組み合わせ」をGrasshopperのシステム側に保証してあげることを意識してください。
人間が見て交わっているかどうかではなく、計算上で確実に重なっているかが問われるのがパラメトリックデザインの難しいところでもあります。
これらのチェックポイントをしっかり押さえることで、後からパラメータの数値を大きく変更した場合でも、エラーで壊れにくい安定したGrasshopperプログラムを作れるようになります。
広告
