[Grasshopper]少しずつ回転するツイストタワーの作り方

回転するツイストタワー grasshopper

Grasshopperやライノセラスでデザインを考えていると、少しずつ回転して高くなっていくビルやタワーを設計したいと思ったことがあると思います。

今回は上のようなツイストタワー建築をGrasshopperで作る方法を解説します。

一見難しそうに見えますが、1つ1つ見るとそこまで難しいことはありません。

なので1つずつ着実にマスターしていきましょう。

今回のGrasshopperのデータは下からダウンロードできるので自分のと比べながら是非してみてください。

Grasshopperデータのダウンロードはこちら

ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。

今回の全体のコンポーネントはこのようになります。

全体のコンポーネント1
全体のコンポーネント2

本記事では、コンポーネントはアイコン表示になっています。

アイコン表示に変えたい場合、以下のリンク先の記事を参考にしてください。

正方形を少しずつ回転させる

正方形を少しずつ回転させるコンポーネント

使用コンポーネント:① RectangleSeriesUnit ZMoveAreaRotateSurfaceExtrudeCap Holes

正方形作成

まずはRectangleを使用し正方形を作ります。xとyの端子に今回は500を繋げて縦横500の長さにしています。

正方形を連続で上方向に並べる

次にMoveを使い連続で正方形を移動させたいのですが、ただ単に数値を繋げるだけだと1つの正方形しか作れません。

そこでSeriesを使います。

Seriesは等差数列を作成するコンポーネントです。

簡単に言うと2、4、6、8、10・・・のように規則のある数字を連続して出してくれます。

今回は上方向に100ずつで20階まで作りたいので、N端子に100、C端子に20を入力しています。

そうすることで100,200,300,400・・・というように上方向に正方形をコピーできます。

正方形を回転

それぞれの正方形を少しずつ回転させます。

回転させるためにRotateを使用します。

これを使用するには、回転の中心をP端子に入力する必要があります。

先ほど使用したRectangleAreaを繋げます。

これにより、C端子から一番下の正方形の中心点を取得することができます。

この中心点が回転の基準になります。

ここでもう一度Seriesを使用します。

今回はそれぞれの正方形を10度ずつ回転させます。

そのため、N端子に10、C端子に先ほど使用した20を入力します。

これにより10度ずつ回転していきます。

Rotateに度を設定する

この際に気を付けることは、Rotateの単位を度に設定することです。

Rotateを右クリックし、Degreesを選択してください。これをしないと正しい数値になりません。

正方形に厚みをつける

その後、Extrudeで床の厚みを出します。Cap Holesで穴が開いている場合があるのでふさいでおきましょう。

正方形の角を抽出し、それを元に外壁のサーフェスを作る

正方形の角を抽出し、それを元に外壁のサーフェスを作るコンポーネント

使用コンポーネント:⑩ Deconstruct BrepList ItemBoolean TogglePolylineRuled Surface

正方形の角を抽出

次に床の厚みを出す前のサーフェスをDeconstruct Brepに繋ぎ正方形を分解します。

Deconstruct Brepはサーフェス、縁(ライン)、点に分解してくれます。

今回は点を抽出するためV端子を使用します。

正方形の1つの角を抽出

List Itemでそれぞれの正方形の角の1つを抽出します。

List Itemはデータ内にあるインデックス番号を指定することで一部分のみを抽出するコンポーネントです。

簡単に説明するとi端子に0から1,2・・・と番号を入力していくと今回の場合、正方形の選択されている角の点が変わっていきます。

これを4つのList Itemでそれぞれ抽出していきます。

この際に、List Itemのi端子をFlattenにしてください。

点を線で繋ぐ

Polylineを使用することで、連続する点を結ぶ線を作れます。

Boolean Toggleを”False”状態にすることで線の始点と終点が繋がらないようにすることができます。

“True”のままだと繋がってしまいます。

外壁のサーフェス

Ruled Surfaceで線を組み合わせることで外壁のサーフェスを作り出せます。

サーフェスから線を生み出しパイプを作る

サーフェスから線を生み出しパイプを作るコンポーネント

使用コンポーネント:⑮ Divide SurfaceFlip MatrixInterpolateMergePipeCap Holes

サーフェスを分割

Divide Surfaceで先程のサーフェスを点で分割します。

このコンポーネントは指定した数値の分、縦横方向に点で分割することができます。

4つのサーフェスを分割

外壁のサーフェスは全部で4つあるので4回Divide Surfaceを行いましょう。

点群から線を作成

ここでInterpolateを使用します。これで点を結ぶ曲線を作れます。

点群から線を作成

縦横どの方向にも線を作りたいので、片方にはFlip Matrixを使用します。

これにより格納されている点データの順番が反転し、2方向の曲線が生み出せます。

線をパイプにする

Mergeで線をまとめ、Pipeでパイプを作ります。

このままだと作成されたパイプは蓋がされていないのでCap Holesで閉めましょう。

外壁に厚みを出す

外壁に厚みを出すコンポーネント

使用コンポーネント:㉑ MD SliderEvaluate SurfaceVectorMultiplicationExtrudeDivisionNegativeMove

外壁に厚みを出す

外壁に厚みを作って終わりになります。

最初にサーフェス状態の外壁をEvaluate Surfaceに繋げます。

このコンポーネントにより、サーフェスを押し出す向きを抽出することができます。

Evaluate Surfaceを使うために、MD Sliderが必要になります。

これは中心点の位置を点を動かすことで直感的に変えることができるものです。

今回は変える必要はないですが、Evaluate Surfaceを使用するにはMD Sliderをuv端子に繋げることが必須です。

N端子から方向のデータを取得できます。そのデータをVectorに格納します。

今回のようにサーフェス上によって押し出す向きが違う場合、x、y、zの向きの代わりがVectorになります。

外壁の厚さを指定するにはMultiplicationそ使用します。

これは掛け算する場合に基本的には使いますが、取得した向きと数値をかけることで押し出す距離を決められます。

Extrudeに繋げて厚みを作りましょう。

中心から外壁がずれている様子

しかし、このままでは中心から外壁がずれています。そのため移動させて修正する必要があります。

中心から外壁がくるようす

そこで取得した厚さと向きの情報を持つMultiplicationDivision(割り算のコンポーネント)を使い2で割ります。

そしてNegativeで数値をマイナスに変えてMoveで移動させることで外壁が中心に来るようになります。

回転するツイストタワーの完成

これで少しずつ回転するツイストタワーが完成しました。

上から見る回転するツイストタワー

上から見た様子です。

違うサイズの回転するツイストタワー

数値を変えるだけで様々な形を検討することができます。是非自分に合った形態を見つけてください。今回は以上になります。