今回は下のGif画像の様に、球体のサーフェイスを動かす様に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値によって色を変えてます。
完成

以上になります。三角関数とベクトルをしっかり理解すればさほど難しくないと思います。理解すると色々応用できるかと思うので是非チャレンジしてみてください。