今回は球体のを生成する表面のサーフェイスを動かす様に Node を組んでいこうと思います。Blender のバージョンは 3.1 を使用しています。こちらのチュートリアルは動画化しております、動画の方がよい方・また実装するジオメトリを確認したい方は以下のリンクからどうぞ!
ベースとなる球体を生成
- Blender を立ち上げた際にある、Cube に対して Geometry Nodes を開きます。
- Group Input ノードを消します。
- Ico Sphere ノードを用意し、Subdivision を 5 にします。
- Dual Mesh ノードでメッシュを六角形分割します。
- Split Edges ノードで六角形で分割したものを個々の Face に分割します。
Attribute を取得
- Capture Attribute ノードで Vectore 型、Face から法線ベクトルを取得します。
- Set Position ノードを接続します。次項で各六角形を動かしていきます。
Face を動かす
- 各六角形 Face を動かしていきます。Scene Time ノードから Frame Count を取得します。この時、Timeline で Frame を Start0、End360 としておきます。
- Math ノードで Radians を選び、Frame Count をラジアン変換します。
- Math ノードでラジアン化した値から、Sine 波を取得します。これで-1~1までの値が取得できました。
- Map Range ノードで取得したー1~1までの値を 0 ~1に変換します。
- Vector Math ノードで Multiply を選び、Capture Attribute ノードで取得した Normal ベクトルと掛けます。
- Set Position ノードに接続し、各六角形を法線方向に移動させます。TimeLine を動かすと円の中心から離れる方向に移動するかと思います。
法線ベクトルを使って各六角形の移動を操作す
る
- Math ノードで Multiply を選択し、Scene Time ノードと Math ノード(To Radians)の間にいれます。ここで FrameCount を 4 倍することで周波数を細かくします。Sine 波が 4 波入ることになり、移動スピードが 4 倍になったかと思います。
- Math ノードで add を選択し、Math ノード(To Radians)の前に入れます。各六角形に対する Sine 波の位相をずらします。
- Math ノードで Multiply を選択し、Capture Attribute ノードで取得した Normal を接続します。Normal は Vector 型なので{x,y,z}成分があるのですが、Math ノードに接続すると Float 型になります。こと時の値は x,y,z 成分を足して 3 で割った値が取得できます。
- 上で取得した値を適当に 200 倍し、Add ノードに足します。TimeLine を動かすと上画像の様な面白い変形をするかと思います。
Index 番号を使って各六角形の移動を操作する
- 今度は Index 番号を使って Sine 波の位相をずらしてみましょう。Capture Attribute ノードで Integer 型で Face の Index 番号を取得します。
- 先ほど法線ベクトルをつないでいた Math ノードに今度は Index 番号を接続してみます。上画像の様に、各々が持つ Index 番号(×200 倍)度だけ位相がずれ上画像の様な変形をするかと思います。
Index 番号と法線ベクトル両方使って移動させてみる
- それでは両方の値を使用して変形させてみます。2 つの値を掛けてみます。すると上画像の Gif の様な変形をします。
スケールと厚みを持たせる
- それでは六角形を Scale していきます。Scale Elements ノードを接続します。
- Map Range ノードで Sine 波の‐1 ~ 1 までの値を倍率に変換します。今回は最内で 0.6 倍~最外 2.5 倍としています。これでスケールは完了です。
- Extrude Mesh ノードで六角形に厚みを持たせます。0.08 だけ厚みを持たせています。
Attribute をアウトプット
- 先ほど取得した scale の値を Shading で使いたいのでアウトプットしておきます。scale という名前でアウトプットしておきます。
マテリアルの設定
- マテリアルを設定していきます。
- Render Engine は Eevee を使用します。Bloom にチェックを入れておいてください。
- Geometry Nodes で Set Material ノードをかまします。
- マテリアルは上画像の感じです。先ほどアウトプットした Scale 値によって色を変えてます。
完成
以上になります。三角関数とベクトルをしっかり理解すればさほど難しくないと思います。理解すると色々応用できるかと思うので是非チャレンジしてみてください。