見出し画像

文系の blender 4.0 はじめての Geometry Node | お手軽モダンアート

数字に弱いわれわれには少し敷居の高そうなジオメトリノードだが、手作業ではむつかしいモデリングができるなど魅力的な側面も多い。ここでは、できるだけ簡単なノードを使い、モダンアート風の図形やオブジェクトの作成を試みた。

ジオメトリノードは英語での情報も多く、python との共通性もあるため、ここでは言語を英語としている。ただし訳語も可能なかぎり併記した。


環境 Blender 4.0.2 , Mac Mini M1 OS 14.2


そもそも Geometry Node とは?
ジオメトリノードは、ひとことでいえば、オリジナルのモディファイアだ。普段、ミラーモディファイアなどの便利な機能を使ってモデリングをしているが、加えて、自分独自のモディファイアを構築できるツールと考えてよいだろう。


準備


最初に、直径 0.05 m の平らな円のオブジェクトを作成し、黒色のマテリアルを適用して、名前を Circle とした。

Scale が 1.0 でない場合はメニュー Object > Apply > Rotation & Scale を適用する。
(オブジェクト >  適用 > 回転・スケール) 


Geometry Node

  • 上部メニューの Geometry Nodes を選択

  • 平面など任意のオブジェクトを追加

  • New(新規)ボタンをクリック

  • 作成されたモディファイアを、myFirstNode とした(必須ではない)

操作の流れは、シェーダーノードやコンポジットノードと同様。


Nodeの作成


Group Input (グループ入力)ノードはここでは必要ないので削除し、下のノードを組む

ノードは大量にあるので、単語を検索して追加するのがはやい

Grid | グリッド

方眼紙のようなマス目(グリッド)を作成できる。ここでは 1 x 1 mの広さに、20 x 20 計 400 のグリッドを設定した。

Object Info | オブジェクト情報

すでに作成されているオブジェクトの情報を取得できる。最初に作成した Circle オブジェクトを指定した。

Instance on Points | ポイントにインスタンス

Grid に設定した各ポイント(グリッド)上に、Circle オブジェクトを配置している。ここでは Instance とは「オブジェクト」とみなしていい。


結果

真上からの視点で、マテリアルプレビューで表示。


ノイズ


それぞれの円のサイズ(Scale)を Random Value(ランダム値) を使用し、0〜100%までランダムに変更してみる。

Random Valueから、Min 0 〜 Max 1.000 までの乱数を生成している

無作為なランダムによる配置だが、比較的おもしろい雰囲気だ。続いて、シェーダーノードなどで馴じみのあるノイズテクスチャを適用する。

Noise Texture | ノイズテクスチャ

まったくのランダムではなく、ある程度の規則性のある、0.000〜1.000..までの数値が生成される。

Map Range | 範囲マッピング

ノイズテクスチャが生成する 0〜1 までの数値では、すこし変化に乏しいため、Map Range を使い、-0.5 〜 1.5 まで範囲を拡大している。

すこし意味のあるパターンになった。どちらもアートだと言い張れないこともない。以降、おもにこれらのノードを利用し、もう少しそれらしいパターンを作成する。


パターン 1


上の円の代わりに、下のような四角形を作成し、縁のみ黒のマテリアルを適用した。大きさはグリッドの 10cm よりも大きい 18 cm。

オブジェクト名は「rectangle」とした。


初期状態


構成は上とほぼ同じ。グリッドは 2 x 1 m をそれぞれ 10 分割し、上の rectangle オブジェクトをインスタンスに指定した。


Noise

上の円のときと同様、ノイズテクスチャを使い、四角オブジェクトのサイズを変化させた。

Map Range で拡大率を 1.5 倍にやや大きくした


Musgrave


ノイズテクスチャに代わり、マスグレイブテクスチャを使用。

Musgrave テクスチャは、4.1 から Noise テクスチャのオプションのひとつとして統合された。機能は同じ。

Wave

マスグレイブテクスチャに変わり、波テクスチャを使用。

どれもかなりアートに近づいているのではないか。

ただ、これらは2Dなので、3DCGソフトウェアであることを活かし、次は3Dでの表現を試みる。


パターン 2


平面のオブジェクトの代わりに、下の形状のオブジェクトを作成し、オブジェクト名を tris とした。サイズは以下の通り。

作成後は、メニュー Object > Apply > Rotation & Scale を適用する。


初期状態


今回も、グリッドのサイズと分割数、インスタンスに指定するオブジェクト以外は、前回と同様。

左からのサンライト 1 灯のみでレンダリング。


Noise


ノイズテクスチャと Map Range を使った値の生成は前回同様だが、Combine XYZ ノードを経由して、オブジェクトを Y 軸のみ、ノイズからの値によって回転させている。

Combine XYZ |XYZ合成

X、Y、Z 軸のいずれか、あるいは複数の値をそれぞれ別個に受け取り、ベクトルにまとめることができる。上では、Y のみ変化させ、X、Z はゼロのまま固定している。


Voronoi

ノイズテクスチャに代わり、ボロノイテクスチャを使用。

Magic

ボロノイテクスチャに代わり、マジックテクスチャを使用。

あくまでモダンアートであると言い張れば、きちんと通用するのではないか。


まとめ


使ったジオメトリノードは、多くても7、8ノード程度ですが、それなりに複雑なオブジェクトを作成できています。

今回は、ジオメトリノードの威力というよりは、プロシージャル(生成)テクスチャの力を借りている側面は大きいといえますが、従来では python で組まなくてはならなかった生成モデリングの手法が、かなり手軽に実現できることがわかります。

アイデアを応用させたり、マテリアルやライティングを組み合わせることで、ほぼ無限のバリエーションの「モダンアート作品」ができそうです。

Generative Arts

数学的な法則や関数を使ってアート作品を描く手法はコンピューター普及以前にすでにあり、それらはジェネラーティブアートなどと呼ばれている。

pythonを使ってジェネラーティブアートを生成する Processing というアプリケーションもあり、もともとは図形を描きながらpythonを学ぶ、という趣旨なので、プログラミング初心者にも最適。興味のある方はどうぞ。

Welcome to Processing!
home | p5.js( javascript 移植版)

いいなと思ったら応援しよう!