皆さんオハスコリカ🎄黒城ナディアです。
本記事はBlender Advent Calendar 2023 4日目の記事です。
今回はBlenderのGeometry Nodeで林を作ってみましょう!
今回はパターンの繰り返しが起こらないようにオブジェクトを配置することを趣旨として、作例では以下のような山林を作ることができます。

対象Blenderバージョン:3.3以上
使用するアドオン
事前にBlenderメニューの[File]>[Preferences…]を選択し、[Add-ons]タブにてBlender標準アドオンの[A.N.T.Landscape]アドオンを有効にしてください。

地形を作る
地形の調整にはプロポーショナル編集またはスカルプトが適しています。
スカルプトモードにて、様々なブラシを活用して地形を整えます。

[Draw]、[Clay]系ブラシで地形の隆起を作ったり、[Flatten]ブラシで地面を均したりしてみましょう。


木を準備する
バリエーションを増やすために複数種類のパーツを用意して、Geometry Nodeで使用するためにパーツごとにコレクションにまとめておきます。
木の作り方は…様々な動画が参考になると思いますので割愛いたします。

木のパーツ

ここでマテリアルに一工夫を入れます。
[Object Info]ノードの[Random]ソケットからの出力と木のベースの色とをミックスすることで、コレクション内のオブジェクトを複製するたびに木の色がランダムに変化します。

幹のパーツ

木を植える
素材がそろったところで、いよいよ植林しましょう。
オブジェクトモードにて適当なメッシュオブジェクトを追加します。
Eキー(押し出し)や適当な頂点追加操作を行い、木を植えたい場所に頂点を配置します。
今回はGeometry Nodeだけを使わずに頂点をメッシュの表面に配置させるために、[Shrinkwrap]モディファイアを使用します。Geometry Node単体でも工夫すれば頂点を地形オブジェクトに投影可能ですが、今回は簡単にできる方法ということでShrinkwrapを使用します。

今回のShrinkwrapモディファイアのメニューからWrap Methodを[Project], Snap Modeを[On Surface]、Axisを[Z軸]に設定します
以上の設定を行うと、頂点が地面にぴったりと張り付くようになります。

続いて、先ほどの頂点オブジェクトに[GeometryNodes]モディファイアを設定します。

ノードエディタにて以下のようなノードを作成し、先ほど作成した木と幹から木を作成します。

以下のような流れでノードを組みます。
- [Instance on Points]ノードを使用することで、頂点の配置された場所にオブジェクトを配置します
- 続いて先ほどのノードに[Collection Info]ノードと[Random Value]ノードを接続することで、木と幹それぞれのコレクションの中からランダムに要素をピックアップします
- 回転・位置・大きさを変えることで、繰り返しを避けるようにします
- 最後に木と幹を結合して一つのオブジェクトにまとめます
以上のノードの組み合わせによって配置した頂点に木が生成され、また繰り返しが起こらないように配置されるようになりました。

まとめ
今回はBlenderのShrinkwrapモディファイアとGeometry Nodeを利用して、地面に木を植えてみました。
工夫をすれば市販のGeometry Node植生アドオンのようにご自身のモデルを配置することができるので、ぜひ試してみてください!