RevitでGenerative Designその1

AMDlabの秋山です。
Revit2021が4月8日にリリースされました。
2020からの大幅アップデートです。
Revit2021新機能はこちらの公式サイトからご覧ください。
数ある新機能の中から、Generative Designに焦点を当て、何回かに分けて投稿していこうと思います。

題してGenerative Design講座になります。
今回は第一回目に当たりますので、以下の内容でお送りします。

  1. Generative Designとは
  2. Generative Designの一例紹介+グラフ解説
  3. Generative Design生成方法

1.Generative Designとは

似たような言葉として、Parametric Designという言葉があります。
Parametric Designとは、変数の値を変えることで、形状を変化させることができるデザイン手法のことです。
RhinocerosであればGrasshopper、RevitであればDynamoを使うことで、Parametric Designを行うことができます。

そして、Generative Designとは、そのParametric Designの変数に対して、プログラムを使って機械的に値を入力していくことで、
あり得る形状を無数に自動作成させるデザイン手法のことを言います。
詳しくはこちらを参照ください。

実はこちらのGenerative Design、RefineryというAutodeskから出ていたサービス(ベータ版)で試すことができていました。
今回新たにRevitに搭載されたGenerative Designのスタディサンプルが、Refineryのサイトで数多く取り扱われていたものです。

2.Generative Designの一例紹介+グラフ解説

まず初めに、Dynamoで使用する用語を簡単に説明します。


ノード:ビジュアルプログラミングを作成するための機能が詰まったボックス
入力・出力ポート:入力ポートからデータが入力され、出力ポートで実行される
ワイヤ:各ノードを接続するもの
グラフ:ノードとワイヤで構成

今回は、その1例である3BOXを例にとりグラフの解説をしていきます。
下の写真はdynamo上のグラフとグラフで作成されたオブジェクトを表しています。

Generative Designを行ううえで必要な項目は以下の4つになります。

定義  (1)
このグラフを使ってどんな解を出したいかを考えておきます。
例えば、このグラフには建物を表す3つの立方体が含まれています。3つあるうちの1つ(C1)は位置が固定され高さを変えることができます。残り2つ(C2とC3)は位置(XとY方向)と高さを変えることができます。これより床面積を最小化し、表面積も最小化する解を見つけたいと思います。

入力 (2)
プロジェクトごとに変更可能な変数を、グラフを実行する前に予め設定しておきます。
コンピューターがこちらの値を自由に変更して解をたくさん作成していきます。

機能 (3・4・5)
実際にこのグラフでは点を配置するノードや長方形を作成するノードが含まれています。
これらは、定義に合わせて考えて作成する必要があり、定義からずれたグラフを作成してはいけません。
番号ごとのグラフの内容は以下です。
3.ジオメトリ操作
4.表面積と体積
5.ジオメトリの色付け

出力 (6)
実際に入力と機能を使って作成された1案が正しく動いているか確認することができます。こちらの値がGenerative Designの1案として表示されます。

次に、一つ一つのノード説明をしていきます。

1.Number Slider ※2
 数値を生成するスライダーです。
※2. ノードの名前は自由に変更することができるので、ここではC1 Height…などそれぞれ適した名前にしています。
C1ボックスは高さが変数です。
C2ボックスは高さと、X,Y位置が変数です
C3ボックスもC2と同様です。

  1. Point.ByCoordinates
    3つのデカルト座標(X,Y,Z) ※3 に値を入力してポイントを作成します。
    ※3 互いに90度に交わる直線を軸とする直交座標
  2. Code Block
    直接、値を入力できるノードです。こちらもノード名をWidthに変更しています。
  3. Cuboid.Bylengths
    指定した幅、長さ、高さで、先ほど作成した入力ポイントを中心とした立方体C1、C2、C3を作成します。
  4. Geometry Translate
    WCS(ワールド座標)※4で定義されたx,y,z方向の変位を、与えられたC1、C2、C3ボックスに変換(移動)します。
    今回はそれぞれのボックスの高さを1/2倍したz軸の変位をそれぞれのボックスに変換(移動)していきます。
    ※4 ソフトがソフト側で持っている座標空間のことです。ユーザーはその座標空間を変更することはできません。

  5. List Create
    指定された入力から新しいリストを作成します
    C1、C2、C3のジオメトリ情報が入ったリストをリスト1(C1、C2、C3)として作成していきます。
  6. Solid ByUnion
    個体の集まりを一つの個体にします。
    今回は総表面積と総体積を求めるためC1とC2,C3を結合して考える必要があります。

8. Solid Area
ジオメトリの表面積を計算します。
9. Solid Volume
ジオメトリの体積を計算します。
10. GeometryColor.ByGeometryColor
カラーノードを使用して、ジオメトリに色をつけます。
11. Color Palette
パレットからカラーを自由に選択します。
12.13. Watch
出力された値をノード上に表示します。こちらも名前を変更しています。

これでグラフが作成できました。いよいよGenerative Designを使用して解を見ていきましょう。
Revit上の管理タブに新しく赤枠が追加されております。


こちらをクリックして起動していきたいところですが、AECコレクションの契約をされていない方は起動できません。
ただ、Dynamoにも同じ項目がございますのでそちらを使って解説していきます。

先ほど作成したグラフは「ジェネレーティブデザイン用に書き出し」をクリックするとGenerative Designとして使用できるのですが
こちらのスタディサンプルはすでにDynamo上に登録されていますので、「スタディを作成」をクリックします。
3ボックスのマスが今回の作成したタイプになります。こちらをクリックするとスタディの定義が表示されます。

・異なる入力というのは先ほど記載した変数のことです。チェックをいれたものに変数の値が代入されます。
数字はフィートであらわされています。
・目標とは先ほど記載した定義のことです。
床面積を最小化し、表面積も最小化という定義にしようと思います。
・拘束とは、この場合、床面積と表面積の結果の範囲を表しています。
今回はこのままでいきます。
・生成とは、遺伝的アルゴリズムに基づいて生成されます。
こちらもこのままにし、生成ボタンをクリックします。


すると、数分で結果が表示されました。
この結果が表示されるタイミングですが、お持ちのパソコンによって時間は変わっていきます。
今回の目的は、床面積を最小化し、表面積も最小化の最適解を見つけることです。

上の赤丸のグラフの原点に近い青枠のボリューム組み合わせが今回の最適解になります。

今回は、簡単なサンプルモデルを解説しましたが、Dynamoを使用して複雑なスタディを作成することもできます。
サンプルもまだまだたくさん出ており、ひとつひとつ解説していこうと思いますので、引き続きよろしくお願いいたします。

ARTICLES