ジオメトリノードを使用して高層ビル群作ってみた🌃

# はじめに
Blenderを触っていて「もっとスキルを広げたい…！」と感じたため、
ジオメトリノードを使用してビルを作ってみました:v_tone1:
Blender初心者向けの記事になります。

# ジオメトリノードとは？
 Blenderのジオメトリノードは、3Dモデルの形状や構造に関する情報を取り扱うノードのことを指す。

例えばモデルの頂点、エッジ、ポリゴン、UV座標、法線情報などを操作するためのノードを提供する。これらのノードを使用することで、モデルの形状や構造を変更したり、マテリアルのUV座標を操作したりすることができる。

また、ジオメトリノードは、モデルの形状や構造をより高度に操作するための機能も提供している。例えば、サブディビジョンサーフェスやモディファイアなどを使用して、モデルを滑らかにしたり、複製したり、変形したりすることができる。

ジオメトリノードは、Blenderのノードベースのユーザーインターフェイスに統合されており、直感的に操作することができる。このため、モデリングやアニメーションなどの3D制作において、非常に重要なツールの一つとなっている。

エディターモードで直感的にモデリングするのとは反対に、ノードを組んで数字をいじって数学的にモデリング、といったところ。
数字をいじれば見た目がかわるので、アニメーションとの相性はかなりいい。

人知を超えるレベル（？）で奥が深いので、この記事では概念となんとなくの使い方がわかればいいかなという感じ。
# ノードの種類
公式ドキュメント参照

https://docs.blender.org/manual/ja/latest/modeling/geometry_nodes/index.html

もうちょっと一覧的に見れるQiitaの記事

https://qiita.com/yukimituki11/items/c81645ce7920ae4822dc

# 実践
今回は手身近にできるビル群を作ってみる。

環境：Blender 3.5.0 英語版

1. 最初の四角が出ている状態から水平画面分割→下の画面をGeometryNodeEditorに変更
2. 「＋New」もしくはサイドメニューのAdd Modifierから「GeometryNodes」を選択
3. 出てきた二つのノードのうち、「GroupInput」を削除、Shift+Aで「Grid」と検索しノード追加・GroupOutputと接続→四角が消えてプレーンが登場！このノードが1m2、XYそれぞれに3分割されたプレーンの情報を持っているんだね。

　　　　　![image](https://firebasestorage.googleapis.com/v0/b/ciita-c6ea6.appspot.com/o/user%2Fimages%2F3LoJPlOPZkvL6CFk?alt=media&token=5cd73725-ff50-44ae-aaa1-448137bfb8c7)
4. SizeX/Yをそれぞれ10くらいにしておく
5. Shift+Aで「Instance on Points」と検索しノード追加…メッシュを複製して置いていくノード
6. Shift+Aで「Distribute Points on Faces」と検索しノード追加…ポイントたちを面の上に配置するノード
7. Shift+Aで「Join Geometry」と検索しノード追加…いろいろなノードを統合するのに必要
8. 図のように繋げていく　ここまでで面の上にいろいろ生やすための準備段階となる

　　　　　![image](https://firebasestorage.googleapis.com/v0/b/ciita-c6ea6.appspot.com/o/user%2Fimages%2F4Y3x3681s0WoQ8CA?alt=media&token=45b52e71-46f0-4b16-bf5a-770b8cf712e4)
9. ビルの原型を作っていく。3D Viewport画面上でShift+A→Cubeを追加、3つキューブがある状態にする
10. それぞれのキューブをベベルしたり差し込んで押し出したりしていい感じにビルっぽくしてコレクションに纏めておく。コレクション名はわかりやすくしておこう

　　　　　![image](https://firebasestorage.googleapis.com/v0/b/ciita-c6ea6.appspot.com/o/user%2Fimages%2FTI8jXwKH5o3nxyzJ?alt=media&token=398cd2df-0e6f-4d70-9a1b-3f4a10b324a4)
11. 低層階ビル群を作っていく。GeometryNodeEditorに戻り、Shift+Aで「Collection Info」と検索しノード追加、Collection部分を先ほどビル群をまとめたコレクション名を選択しておく
12. Shift+Aで「Transform Geometry」と検索しノード追加
13. Shift+Aで「Ramdom Value」と検索しノード追加
14. 図のようにつなぎ、いろいろ数字をいじってみる（位置だったりスケールだったり密度だったり…いろいろ触ってみてどこに何が影響するのか見てみてください）

　　　　　 ![image](https://firebasestorage.googleapis.com/v0/b/ciita-c6ea6.appspot.com/o/user%2Fimages%2F98HK3PyOmprcuAKR?alt=media&token=0ac58fea-8073-4644-b3ed-213df9a64131)
15. 高層階ビル群を作っていく。「Grid」「Join Geometry」「Group Output」以外のノードを複製し画像のように繋げる。またいろいろ数字をいじっていみる。高さと密度がポイント。

　　　　　 ![image](https://firebasestorage.googleapis.com/v0/b/ciita-c6ea6.appspot.com/o/user%2Fimages%2FQ8tFB5HBexPKR9YK?alt=media&token=320b6ab7-f068-4a87-8e5a-fa3e53562e33)
16. あとは原形のビルたちに好きなmaterialを設定してあげる。発光させるときれい
17. ライティングをいい感じにしたり霧をかけて見たりして完成～～～～！！！

　　　　　 ![image](https://firebasestorage.googleapis.com/v0/b/ciita-c6ea6.appspot.com/o/user%2Fimages%2FJr7m2h4EQ7hc6uc5?alt=media&token=0a529c53-4f64-4908-a918-a7ce5862e996)

レンダリング進まなかったので途中のものをスクショ。

# 補足
Blender内特有の制御となるためエクスポートできないものがある。致命的。
なのでいくらBlenderでがんばってノードを組んでもUnityには持っていけない…。
持っていける方法を見つけたらまた記事投稿します。

# おわりに
いかがだったでしょうか？覚えれば覚えるほど表現の幅が広がるジオメトリノード。
ただ覚えることがありすぎて、実際に現場で3Dを扱っている人自身も「ジオメトリノードを教えてほしい…」とこぼしてしまうほどの高度な技術…。

今回は初歩的な「決まった位置にたくさんオブジェクトを増やす！」といった部分の解説でした。
時間のあるときに触ってみて、そのすごさを体感してみては。
いろいろチュートリアルやってみるのが一番:muscle_tone1:！

記事を読んでくださった方は、是非弊社開発課のXもフォローしてね:relaxed:
毎日エンジニアに向けた情報発信を行っています:raising_hand_tone1:

https://twitter.com/tech_cin