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

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

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

①Shift Listコンポーネントってなあに?

[Shift List]はリストのインデックスを、指定した数(Shift)だけ、ずらすコンポーネントです。
L端子にはリストを、S端子にはシフトさせたい数を、W端子には”True”か”False”を入力できます。

L端子に入力したリストのインデックスが、S端子に入力された値の分だけシフトします。

Trueの時はシフトのみ行いアイテム総数は変わりません。Falseの時はシフトした分アイテム数も減ります。

②実際に使ってみよう!

[Shift List]を利用してこのようなグラスを作成してみます。

Step1 

[Circle]コンポーネントで円を作成します。[Number Slider]で任意の半径を入力します。作成した円を[Offset Curve]でオフセットし[Move][Unit Z]でZ方向に移動します。

 

Step2 

2つの円をそれぞれ[Divide Curve]のC端子に入力し分割点を作成します。どちらの円も分割点を同じ数だけ作成したいので、N端子には[Number Slider]で同じ値を入力します。

この分割点を利用して、上下の対応する点同士を結ぶ線分を作成します。[Line]コンポーネント(Curve>Primitive)のA端子・B端子に、それぞれ[Divide Curve]のP端子を入力して結果を確認します。

線分は作成されましたが、上下の点同士をまっすぐ繋いでいるので簡素な形状となっています。
これは[Line]コンポーネント(Curve>Primitive)が、A端子のインデックス0番と、B端子のインデックス0番、それぞれ対応したインデックス番号の分割点間に線を作成するためです。[List Item]を使って、[Line]の出力結果から一つの線分を抽出してリストを見比べてみるとわかりやすいでしょう。

ここで[Shift List]を使って、一方のリストを編集してみます。
上にある円の分割点を、[Shift List]コンポーネントのL端子に入力します。S端子には今回”7”と入力します。W端子はデフォルト値が”True”なので今回はそのまま何も繋ぎません。[Panel]を繋ぎ、リストを見比べてみます。

入力した値”7”分インデックスがずれたことがわかります。座標値のリストが7つ分ずれたことが、モデルにどのような変化をもたらすか結果を確認してみます。

[Shift List]で分割点のリストをずらしたことで線分の終点が、最初の点からみて7つ隣にずれたことがわかります。
全体の結果を確認し、シフトする数を調整します。

Step3

作成した線分を[Pipe Variable]で立体形状にしていきます。[Pipe Variable]は複数の半径を持つパイプ形状を作成するコンポーネントです。半径の位置をレール曲線の0〜1を範囲としたt値で指定し、それぞれ半径の値を設定します。E端子ではキャップのタイプを指定できます(0=キャップなし、1=平面キャップ、2=ラウンドキャップ)。

C端子に[Line]のL端子を入力します。t端子にパラメータ値を複数入力、R端子にパイプ半径の値を対応する数だけ入力する必要があるため、[Gene Pool]を使います。[Gene Pool]をWクリック、または右クリックしEdit…をクリックし”GeneList Editor”を開きます。”Gene Count”ではスライダの数を、”Decimals”ではスライダの小数点以下の桁数を、”Minimam”・”Maximum”でスライダの最小値・最大値を設定します。

[Gene Pool]をt端子に入力し、レール曲線上で半径を変動させたい位置に合わせて0~1の範囲で値を入力します。[Gene Pool]コンポーネントをコピーしR端子に入力します。結果を確認しながらt値と半径を調整します。



今回はE端子に”2”を入力しラウンドキャップにしています。これで加飾部分の完成です。

Step4

[Line]のL端子を[Loft]コンポーネントのC端子に入力し、Step2で作成した線分からロフトサーフェスを作成します。そのままだと開いた形状になるため、[Loft]のO端子に[Loft Options]を入力し、Cls端子には[Boolean toggle]を使って”True”を入力します。サーフェスを[Cap Holes]コンポーネントに入力し蓋をします。

グラスの内側を作成するために、先のロフトサーフェスをオフセットして、ひとまわり小さいソリッド形状を作成していきます。[Offset Surface]コンポーネントのS端子に、[Loft]のL端子を入力します。D端子にはオフセット距離を入力します。
オフセットしたサーフェスを[Cap Holes]に入力し蓋をします。グラス底面の厚みを出すために、[Move]・[Unit Z]を使って作成したソリッド形状に高さをつけます。

作成した2つのソリッドを[Boundary Volume]に入力します。[Boundary Volume]は複数の開いた境界面から閉じたソリッドを作成するコンポーネントですが、ここでは2つのソリッドの外側の境界面同士でソリッドを作るのに使用しています。他の方法として[Solid Difference]コンポーネントを使っても良いでしょう。グラスのベースとなる形状が作成できました。

Step5

Step4で作成したソリッドのエッジにフィレットをかけます。フィレットには[Fillet Edge]を使いますが、このコンポーネントでは対象となるエッジのインデックス番号を指定する必要があります。そのため、[Deconstruct Brep]でエッジを抽出し、[Point On Curve]でエッジ曲線状の点を取り、[Point List]でその点のインデックス番号を確認します。

フィレットをかけたいエッジの番号が確認できたら[Fillet edge]でグラスの淵にフィレットをかけていきます。
エッジ番号を入力するために[value List]を使います。[value List]コンポーネントを右クリックしCheck Listにチェックをいれます。コンポーネントをWクリックし、チェックリストに表示させる値を編集します。

確認していたエッジ番号にチェックを入れたら、[value List]を[Fillet edge]のE端子に入力します。
S端子に[Boundary Volume]のS端子を入力します。R端子にはフィレット半径を入力します。

これでグラスの完成です。

最後に[Gene Pool]でレールカーブの範囲とパイプ半径を変化させ、いくつかのパターンを出しレンダリングしてみました。

③動画でチェック!

▼Grasshopperコンポーネント基礎⑯:Shift Listを動画でチェック

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


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