Grasshopperコンポーネント基礎講座では、Grasshopper Indexページで紹介されているコンポーネントを解説していきます。
第17回目は「Brep|Brep」コンポーネントをご紹介します。
①Brep|Brepコンポーネントってなあに?・・・・・・・・・・コンポーネントを簡単にざっくり説明
②実際に使ってみよう!・・・・・・・・・・・・・・・・・・・基本的な使い方を解説
③動画でチェック!・・・・・・・・・・・・・・・・・・・・・説明文だけでは解り難いという方へ
今回使ったコンポーネント一覧も確認できます
①Brep|Brepコンポーネントってなあに?
Brep|BrepコンポーネントはBrepAとBrepBを入力し、AとBの交線(Curves)と、もしあれば交点(Points)を出力するコンポーネントです。
例えば、このような立方体をセットしたBrepコンポーネントA、
そして、球体をセットしたBrepコンポーネントB、
これをそれぞれBrep|BrepコンポーネントのA端子・B端子に入力すると
このように、交差した部分の曲線を出力します。
②実際に使ってみよう!
Brep|Brepコンポーネントで出力される交線を利用してランプシェードのような形状を作っていきます。
Step1
まず、ベースとなる球体を作ります。[Sphere]コンポーネントのR端子に[Number Slider]コンポーネントを使い値”26”と入力します。
[Isotrim]コンポーネントを使って球の底面をカットします。[Isotrim]はサーフェス(S端子)を、指定した範囲(D端子)抽出するコンポーネントです。
S端子には[Sphere]コンポーネントを入力します。
D端子には[Construct Domain²]コンポーネントを接続します。[Construct Domain²]はU方向の最小値(U0端子)・最大値(U1端子)、V方向の最小値(V0端子)・最大値(V1端子)を入力する事で、UV範囲を”0 to 1”の形式で出力するコンポーネントです。今回はV0端子に値”0.2”を入力します。
オブジェクト範囲を0 to 1の形式で定義したので、サーフェスを”リパラメタライズ”します。
このサーフェスが[Brep|Brep]に入力する一つ目のセットです。
Step2
次に[Brep|Brep]に入力する2つ目のセットを[Voronoi 3D]コンポーネントで作成します。
[Voronoi 3D]は母点となる点群(P端子)と、範囲となるボックス(B端子)を入力してボロノイ形状を作成するコンポーネントです。
まず、ボロノイ形状の範囲となるボックスを[Bounding Box]コンポーネントで作成します。[Bounding Box]は、入力したジオメトリー(C端子)を覆うボックスを作成するコンポーネントです。
C端子に[Isotrim]コンポーネントのS端子を入力します。
これで球を覆うボックス形状が作成されました。このボックスを[Voronoi 3D]のB端子に入力します。
次にボロノイ形状の母点を[Populate 3D]コンポーネントで作成します。
[Populate 3D]は入力した直方体の範囲(R端子)に、指定した数(N端子)の点を作成するコンポーネントです。点を配置する乱数のシード値(S端子)を入力することもできます。
[Populate 3D]のR端子に[Bounding Box]のB端子を入力します。N端子に点の数として値”80”と入力します。S端子にシード値”2”と入力します。
これでバウンディングボックス内に点群を配置できました。
この点群を[Voronoi 3D]のP端子に入力します。これでボロノイ形状が完成しました。
Step3
Step1で作成した球と、Step2で作成したボロノイ形状を[Brep|Brep]のA端子・B端子にそれぞれ入力します。
これで球とボロノイの交差した箇所に曲線が出力されました。
この交線をレールカーブとして[Pipe]コンポーネントに入力し立体化します。R端子にはパイプ半径の値”0.5”を入力します。
フレームの内側に球形のサーフェスをシェードとして配置します。Step1で作成した球を[Offset Surface]コンポーネントでオフセットします。D端子にはオフセット距離を値”-0.7”入力します。
オフセットした球を、Step1と同様[Isotrim]でトリムします。D端子にはStep1の[Construct Domain²]コンポーネントを接続します。
今接続した[Isotrim]と、[Pipe]をRhinoにBakeします。あらかじめRhinoで作成していた他のパーツと共にレンダリングして完成です。
Advance
同じモデルをより詳細に作り込む方法をいくつか紹介します。
①[Clean Tree]を使って不要なデータを取り除く
Step3で[Brep|Brep]から出力されたカーブのデータを[Panel]コンポーネントで確認してみます。
出力されたリストにはいくつか空のデータが含まれていることがわかります。[Clean Tree]コンポーネントを使う事で、Null(N端子)・無効なアイテム(X端子)・空のデータ(E端子)を削除し、リストをきれいな状態で出力できます。
[Clean Tree]のT端子に整理したいツリーを入力します。N・X・E端子には[Boolean Toggle]コンポーネントを接続し”True”を 入力します。
空のデータが取り除かれました。
②[MultiPipe]コンポーネントを使って、より綺麗なフレームを作る
[Pipe]コンポーネントでパイプ形状にした場合、カーブの交差がうまく結合されない場合がああります。[MultiPipe]を使う事でSubDでパイプ化されるためより滑らかに形状が作成できます。
MultiPipeは、Curves端子に曲線を、Node Size端子にパイプの太さを入力してSubDでパイプ形状を作成するコンポーネントです。Size Pointsに複数の点を入力し、点と同じアイテム数の太さをNode Size端子に入力する事で、太さが除変するパイプを作成することもできます。
今回は基準となる点を作成し、点との距離が近いパイプの半径が小さくなるよう除変させていきます。
まず[Control Points]コンポーネントにフレーム部分のベースカーブを入力し、制御点を取り出します。この制御点がSize Pointsになります。
次に、Rhinoで原点に点を作成し、[Point]・[Move]・[UnitZ]コンポーネントを使いZ方向に任意に移動できるようにします。これが除変の基準点となります。
制御点と基準点をそれぞれ[Distance]コンポーネントのA端子・B端子に入力し、点A〜B間の距離を出力します。制御点と距離、それぞれの出力結果を[Panel]で確認します。
階層が細く分かれているので[Control Points]のP端子をFlattenします。これでSize Pointsに入力したアイテム数に対応した数だけ距離を出力できました。この距離の値をNode Sizeとして利用します。
距離をそのままパイプの太さとするには値が大きすぎるため、[Multiplication]コンポーネントで任意の小数を掛け算し、値を小さくします。小さくなった値をNode Size端子に入力します。
これで基準点に近い場所ほど細くなるよう除変することができました。
③動画でチェック!
▼Grasshopperコンポーネント基礎⑰:Brep|Brepを動画でチェック
▼今回使ったコンポーネントの一覧はこちら▼
- [Sphere]
- [Number Slider]
- [Isotrim]
- [Construct Domain²]
- [Voronoi 3D]
- [Bounding Box]
- [Populate 3D]
- [Pipe]
- [Offset Surface]
- [Panel]
- [Clean Tree]
- [Boolean Toggle]
- [MultiPipe]
- [Control Points]
- [Point]
- [Move]
- [UnitZ]
- [Distance]
- [Multiplication]