【Blender】Geometry Nodesでつくる建築ファサードデザイン~規則的回転 編~
Geometry Nodes、建築でもっと有効活用したいですよね。
今に限った話ではありませんが、最近は特にパラメトリックなデザインが多く、ファサードデザインなどでGometry Nodesを使わないほうがもったいないと思うことが多いです。
私のPinterestのストリームには殆どがパラメトリックを駆使したコンペのCGパース作品で埋め尽くされていますし、勢いはさらに加速しているようにも見えます。
一方で、そんなGeometry Nodesですが、ネット上の記事や動画ではランダム用途の紹介が大半で、パラメトリックな使い方をする紹介記事が圧倒的に少ないような気がします。
プロの方々はBlender 2.92リリース直後にGeometry Nodesを活用したアニメーション作品を多数公開されていたのは記憶に新しいところで、使っている方は大いに使っているんです。
色々おしゃべりしましたが、Geometry Nodesでパラメトリックなことを試してみましょう。
動画版
9/20くらいには公開予定
遊んでみよう
今回はルーバーのデザインを検討する・・・という体で進めていきます。
ゴールはこれ。当熱本社ビルあたりを。
実現手段
アイディア次第で無数にあるのでしょうが、参考サイト通りに「”あるオブジェクトとGeometry Nodesの個々のメッシュの間の距離”を変数にする」ことにしました。
こんな簡単そうなことが、ググると全然でなくて一苦労。
結局、公式マニュアルと、こちらのサイトの2つだけが頼りでした。少なすぎない?
基本図形を作る
まずは土台とするPlaneを作成。Geometry Nodesを追加します。
「あるオブジェクト」のCubeを追加。名前を「target」とかに変えておきます。
[Object Info]を追加して、[Attribute Proximity]ノードを接続して、[Points]に変更。
[Object Info]はRelativeにしましょう。
[Distance]には「distance」とか書いておきます。
「distance」は変数名で、xとかkみたいな任意の文字列を入力します。この辺だけプログラミングチックな感じ。
次に[Attribute Combine XYZ]ノードを接続。上3つは全部[Attribute]に変更します。
今回はZ軸を回したいので、[Z]にdistanceを書いて、[Result]にpositionと書きます。
最後に[Point Instance]ノードを追加。[Object]はルーバーのオブジェクト[target]です。
ルーバー(直方体)をたくさん生成したいはずなのに、立方体が出現するときの対処
なんか立方体が出てきましたけど、これはルーバーのスケールを確定していないからです。Ctrl+Aを押して、[scale]をしましょう。
[Point Instance]のとき、図形の発生源は頂点によりますから、頂点数を増やしてあげます。
Ctrl+Rのループスライドカットを使いました。すると、頂点位置にきれいにルーバーが出てきました。
しかし、あっちゃこっちゃにルーバーは回転していますが、なんか思ったようなきれいな回転とはいきません。
これは回転に対しての値が大きすぎるから飛び飛びになっているんですね。
ルーバーの発生源がなんかおかしい時
[Object Info]はRelativeにしましょう。
ルーバーを発生する度に、一定の値をrotationに加算する
rotationの単位はラジアンなので。例えば3.14で180度回転してしまう。
ということで係数をかけて値を小さくしてあげます。
[Attribute Math]ノードを[Attribute Proximity]の次に接続して、[Attribute Combine XYZ]の[Z]をdistance2に変更します。
[Attribute Proximity]はMultiplyにしましょう。
ちなみにこの状態でtargetオブジェクトを移動してみますと、targetオブジェクトの位置に連動してリアルタイムで回転するようになります。
ルーバーを多用したファサードデザインへ
ここから本題に。もう少し踏み込んでみます
ルーバーの配置場所はPlaneの頂点位置に依りますから、もっと頂点を増やして、ファサードの検討をしてみましょう。
Ctrl+Dで+Z方向に並ぶように複写していきます。
簡単な話、個々のルーバーがtargetオブジェクトとの距離かける係数(今は0.5)で回転量が決まる状態になっていますので、targetオブジェクトを色々移動して遊んでみましょう。
ある程度ランダムっぽくしたいのであれば、[Attribute Math]の[B]の値を変えればよいでしょう。
今回は見えてきませんでしたが、一定係数を与えると面白い模様が出てくることがあります。
この方法だとひとつ弱点があって、「水の波紋みたいに見えるデザインにしかならない」のです。
ということで、1列ごとにGeometry Nodesを作ってみます。
なお、この複写作業もNodeだけでうまく組めそうな気はします。
11列に別けてみました。
それぞれにtargetオブジェクトを紐付けたので、targetオブジェクトを個々に移動するだけです。
例えばこうやってくと、ほぼほぼ東熱ビルです。
回転量の値をすごい大きな値にしてみると、ほぼランダムでは有るのですが、何か意図をしたような気がしてくる絵画みたいなのが浮き出てくる瞬間があります。これはこれで寄り道でも面白い。なんか範馬勇次郎の鬼の背中みたいなかんじです。
回転軸を変えてみる (1) X軸
さらにもうちょっとやってみますか。今まではZ軸に対して回転を与えてきましたが、Z軸以外にしてみるとまた違った形が現れてきます。
X軸で回転にするともっと面白い。
Pinterestでよく見かけるねじれ棒みたいなデザインに早変わり!
回転軸を変えてみる (2) Y軸
ちなみにY軸は現実的には応用が困難な気はしていましたが、やっぱり難しい見た目になりました。
ファサードデザインではありませんが、建物の躯体に応用できそうなやり方です。
最後に
なんかこれを上手く活用してCities: Skylines向けの建築をそのうち考えてみたいなあと思っています。