【grasshopper】よくやる作業の自動化 街並み作成 窓編

皆様こんにちは。
AMDlabの前川です。

前回に引き続き、今回は建物のボリュームに自動で窓をつけていく作業をやっていきます。

まずは窓を作っていきます。
[Rectangle]で四角を作って、内側に線をオフセットしたものを横にふたつ並べると窓っぽいですね。

 

 

引き出し窓の場合、窓枠の勝ち負けを表現する必要があります。
以下の手順で引き違い戸を表現しました。
①複製する窓をずらす幅をサッシの厚み分ずらす
②一枚目にかぶる部分を[Region Difference]で切り取る
③[Explode]と[Cull Index]で1枚目に接する線を消す
④[Join]で結合した線をオフセット

 

 

ちなみに入力の上で、右クリックして[Expression Editer]に入力される変数に対する操作を入力すれば、Math系のコンポーネントを使わずに簡単な四則演算ができるので、固定値を足したり割ったりするときはおススメです。複数人でファイル共有するときは、可読性落ちるのでオススメできません。

 

 

後に行う作業のために、作業平面の中心に窓枠を寄せておきます。
これで、配置する窓は完成です。

 

 

次は窓を配置する位置のデータを取得していきます。
建物の外形線を建物の高さに応じて、高さ方向に配列複製します。

 

 

配列した線を[Explode]して[PerpFrames]でそれぞれの線の長さに応じて、分割していきます。

 

こんな感じで、線に直交する平面の情報が得られます。

 

 

各線分の両端の作業平面には窓を配置したくないので、[Cull Index]で除いていきます。(0は最初の値で、-1は最後の値を意味しています。)

 

 

[Orinet]でGに窓、Aに窓の基準平面、Bにターゲット側に平面を入力します。
線上にさっきの窓が配置されましたね。

 

 

これを高さ方向にいい感じに移動させたら、窓の配置が完了です。

 

 

全体に対して処理を行うとこんな感じです。
今回は線画で書き出すことが前提だったので、線データの窓を配置しましたが、同様のフローはもちろんBrepベースでも可能です。

しかし、こんなに窓が多い街はないですね。
窓を配置する前に、窓を配置する線を減らす処理を追加するとよりリアルになりそうですね。(またそのうちやります)

bakeするとこんな感じです。

Make2Dしたものをイラレに読み込んで線の太さを調整するとこんな感じです。

自動化のメリットはできたものを確認して、grasshopperの変数を調整して、再度書き出すというインタラクティブなフローが実現できることです。
手書きのイラストはプログレッシブなものですが、手書きのコードはインタラクティブなのです。

次回は、木造住宅のボリュームを再現するコードを書いていきたいと思います。今日はこの辺で。

ARTICLES