コンピュテーショナルデザインでは、コンセプトや問題解決などの抽象的なアイデアを、アルゴリズムを通して設計へ落とし込む(Rule → Algorithm → Geometry)ことが大切です。しかし実際には、技術的な部分に時間を取られ、アルゴリズムを考えること自体に十分集中できないことも多いと思います。
この「中級アルゴリズム実践」では、すでに学んだ基本を使いこなし、少しずつ自立して設計を進められるよう、休みの間にいくつかの例題(Grasshopper / Python)に取り組むことをすすめます。以下を参考にしてください。
※特に後期の設計演習では、できるだけ各自でアルゴリズムを考えながらデザインを進めることを目指します。
GH 例題
Grasshopperで作業していると、「プログラミングをしている」という意識はあまりないかもしれませんが、文法を覚える必要がないだけで、Grasshopperもプログラミングです。前期は課題に追われ、アルゴリズムを組み立てることに十分集中できなかったと思うので、この機会に、できるだけ一人の力で考え、組み立てる練習をしてみましょう。
できるところまでで構いません。分からないところがあれば連絡してください。ヒントを出したり、簡単なアドバイスをしたりできます。
1:BIG SERPENTINE PAVILION
Rule & Goal
BIG SERPENTINE PAVILION のような模型をGHでつくる。
主アルゴリズムは、分割したサーフェスパネルにBoxMorphでコンポネントを配置していく。
分割前のベースサーフェスはライノで2サーフェス作成し、それらをGHに参照する形で準備する。
まず完成形を観察し、どのような手順で生成できるかを自分なりに5〜10ステップ程度で書き出してから、参考資料を見る。(以下を参考)
参考:
KGI23SP Modeling EX - Serpentine Pavilion | BIG2:Slope-Based Daylight Aperture System
採光条件を考慮し、曲率または勾配に応じて開口サイズが変化するパネル
Rule & Goal
採光条件をみたすため、曲率や勾配で開口サイズが変化するパネルをつくる練習。直射日光を減らし、斜め方向からの間接光を増やすため、勾配が大きいところにより大きい開口を配置したい。曲率の紹介をしたのちに勾配の計測方法を紹介する。スカラー場の要領で、サーフェスの各パネルの勾配を分析し、その値をスケールファクターに適用しさいずを調整する。
ステップは以下を参考にする。
参考:
KGI23SP Field System ★ Scalar Field - CurvatureGHPython
GrasshopperをPythonでより自由に拡張するための機能です。 データやGeometryをPythonに入力し、独自のアルゴリズムをコードで処理して、結果を再びGrasshopperへ出力できます。余裕があればトライしてみてください。
AIによってコーディング自体はとても簡単になりましたが、コードを読めなければ十分に使いこなすことはできません。また、Pythonの処理をGrasshopperのどこに、どのように組み込むかを理解することも重要です。
そのため、まずは基本的なコードの読み方と、GHPythonの使い方を学んでみてください。。
Step1: Pythonのシンタックス(文法)学ぶ
どの教材(以下参照)を使っても構わないので、まずはPythonの基本的な文法を学んでください。
最低限、条件分岐・繰り返し・リスト・関数まで。すでにPythonを学習済みの場合は、このStepは飛ばして構いません。
Step2:以下を後日配布する資料から学ぶ
- GrasshopperのデータをPythonで扱う
- 条件分岐・繰り返し・リスト・関数を例題通して実際に書いてみる
- Rhinoで利用可能なパイソンライブラリを理解する
Rhino.Geometryを使ってGeometryを生成・操作する- Grasshopperだけでは難しい処理をアルゴリズムとして実装する
目的はPythonを書くこと自体ではなく、自分の設計ルールを自分で実装できるようになることです。
参考資料
Nature of Code (NOC)
自然界に見られるシステム、動きやパターン、群れ、成長などの仕組みを、ルールやアルゴリズムとして理解し、プログラムで再現するためのバイブル。「自然を形として真似る」のではなく、形を生み出すルールをコード化する考え方を学ぶ。Daniel ShiffmanによってGHが登場する前から開発され、多くのジェネレティブデザイナーに影響した。元来はProcessing(JAVAベース)だったが以下に紹介するのは、ProceessingのJavaScriptバージョンp5.js でのコード。
扱っている内容
- Randomness / Noise
- Vector
- Force・運動
- Oscillation
- Particle System
- Fractal
- Autonomous Agent / Flocking
- Cellular Automata
- Evolutionary Computing
Nature of Code (NOC)のGHバージョン
上記Nature of CodeをGHに変換したJake HebbertによるYoutubeチャネル。GHPythonを学ぶのによい教材