【集中講座】Grasshopperコンポーネント基礎: Curve Array

Grasshopperコンポーネント基礎講座では、Grasshopper Indexページで紹介されているコンポーネントを解説していきます。
第10回目は「Curve Array コンポーネント」です。

①Curve Array コンポーネントってなあに?・・・・コンポーネントを簡単にざっくり説明 
②実際に使ってみよう!・・・・・・・・・・・・・基本的な使い方を解説
③さらに使いこなす!・・・・・・・・・・・・・・より実践的な使い方を解説
④動画でチェック!・・・・・・・・・・・・・・・説明文だけでは解り難いという方へ
                        今回使ったコンポーネント一覧も確認できます

①Curve Array コンポーネントってなあに?

[Curve Array]コンポーネントは簡単にいうと、
オブジェクトを、曲線に沿って、指定した数になる様に配列するコンポーネントです。
G端子にはジオメトリを、C端子には曲線を、N端子には個数を入力します。

②実際に使ってみよう!

Step1

Rhinoでジオメトリと曲線を用意します。

Step2

[Geometry]コンポーネント・[Curve]コンポーネントにそれぞれセットします。
[Curve Array]コンポーネントのG端子に[Geometry]を、C端子に[Curve]を入力します。

Step3

N端子に[Number Slider]コンポーネントで配列数を入力します。
これでオブジェクトが、カーブに沿って、指定した数(5)配列されました。

Point!

オブジェクトは、曲線の始点からの距離・向きをもとに配置されます。
意図した位置に配置するにはオブジェクトを移動させる必要があります。



▼Rhinoでオブジェクトをずらした場合

③さらに使いこなす!

オブジェクトを直接カーブの始点に移動するのではなく、他のコンポーネントを使って、基点や方向、高さをコントロールしてみます。

Step1

Rhinoでジオメトリと曲線を用意します。[Curve]コンポーネントに曲線をセットし、[Curve Array]コンポーネントに入力します。

Step2
[Orient]コンポーネントを使って、指定した場所にオブジェクトを再配置します。
[Orient]コンポーネントは入力したオブジェクトを、基準平面Aから、参照先の平面Bに配置し直すコンポーネントです。
G端子には配置するジオメトリを、A端子には基準平面を、B端子には参照先平面を入力します。

G端子には、Rhinoで用意したジオメトリを[Geometry]コンポーネントにセットして入力します。

A端子には[Plane Origin]コンポーネントを繋いで基準平面を入力します。
[Plane Origin]コンポーネントのO端子には原点を入力するので、ジオメトリの底面中点を[Point]コンポーネントにセットして繋げます。[Plane Origin]コンポーネントのB端子にはベースとなる平面を入力するので、[Plane]コンポーネントに先ほどの原点からx/y方向を指定した平面をセットして繋ぎます。

  [Curve Array]コンポーネントのB端子にも、[Plane Origin]コンポーネントを使って配置したい場所の平面(今回はカーブの端点)を指定します。

Orientコンポーネントで再配置されたジオメトリの情報がG端子から出力されるのでStep1の[Curve Array]コンポーネントのG端子に入力します。

N端子に配列数を入力する為[Number Slider]コンポーネントを接続します。

Step3

次に、配列したジオメトリの高さをコントロールする為に[Scale NU]コンポーネントを使います。
[Scale NU]は、入力したジオメトリを、指定した平面のX,Y,Zの方向に拡大・縮小するコンポーネントです。Z端子に値を入力する事で高さを変えられますが、今回は配列したジオメトリ各々でスケール率を変えたいので、さらに[Graph Mapper]コンポーネントを使います。
[Graph Mapper]は、入力した値をグラフにして編集できるコンポーネントです。結果は0〜1のt値で出力されます。入力する値も同じ0〜1の形式に揃えるために[Remap Numbers]コンポーネントを使います。
[Remap Numbers]は、入力した数値リストを、”元の範囲”から”指定した範囲”に並べ替えて出力するコンポーネントです。


[Remap Numbers]コンポーネントに、スケールに必要な情報を入力していきます。

まず[Deconstruct Brep]コンポーネントを使います。
[Deconstruct Brep]は、入力されたジオメトリを、サーフェス・エッジ・頂点と各パーツに分解するコンポーネントです。

今回は底面のサーフェス情報のみ出力したいので、[List Item]コンポーネントを使って、対応したインデックス番号を指定します。

さらに[Area]コンポーネントを使って、取り出した底面サーフェスの中点をとります。



[End Points]コンポーネントを使って、曲線の始点を出します。



[Distance]コンポーネントのA端子に”底面サーフェスの中点”を、B端子に”曲線の始点”を入力します。これで”各ジオメトリの底面中点”から”曲線の始点”までの距離が”数値リスト”として出力されました。
さらに、Distanceコンポーネントに[Bounds]コンポーネントを繋ぎます。これで”距離の最小値〜最大値”の範囲が出力されました。

[Remap Numbers]コンポーネントのV端子に、”数値リスト”を、S端子に”距離の最小値〜最大値の範囲”を入力します。
これで、”始点〜各ジオメトリの距離”が0〜1の範囲に対応するようリマップされた値が出力されました。

Point!

Distanceコンポーネントから出力された値は、そのままだと階層が分かれているためFlattenして同じ階層の中に値を入れるようにします。

▼Flattenしていない場合

▼Flatten後

最後に、リマップ後の値を[Graph Mapper]に入力し、[Scale NU]のZ端子に入力して完成です。
今回はおまけに[Gradient Control]コンポーネントも繋いでみました。

④動画でチェック!

▼Grasshopperコンポーネント基礎講座⑩Curve Arrayコンポーネントを動画でチェック

▼今回使ったコンポーネントの一覧はこちら▼

~スキルアップ集中講座TOP~