今回、Blender3.1 Geometry Nodesを使用して、以下のGIF画像の様な、プラズマボールを作成していきます。Blenderのバージョンが違うと仕様が違ってくるかもしれませんのでご注意ください。こちらのチュートリアルは動画化しております、動画の方がよい方は以下のリンクからどうぞ!

球体に直線を配置

- 初期配置されている立方体に対してGeometry Nodesを開きます。
- Geometry Inputを消去し、Ico Sphereを用意します。Subdivisionsを4にします。
- Distribute Points on FacesでIco Sphere上にPointを生成します。
- Instance on Pointsで生成したPointにInstanceを配置していきます。
- Curve LineとCombine XYZでZ方向に3の長さの直線を作成します。
- Resample Curveで生成した直線を分割します。今回は40分割にしました。
- 生成した直線をInstance on Pointsに接続し、Distribute Points on FacesのRotationをInstance on PointsのRotationに接続します。
- 上画像の様になっていればOKです。
生成した直線をNoiseで変形

- Realize InstancesでInstanceを実体化します
- Capture AttributeにSpline Parameterを接続し、40分割した各頂点を始点を0、終点を1とした時の値を取得します。
- Capture Attributeをもう1つ用意し、Vector型としPositionを取得します。
- Noise Textureを使用します。4Dnoisにします。
- Scene Timeを用いて、Frame Countを取得します。Mathで10で割り、Noise TextureのWに接続します。
- Frame CountをMap Rangeで2~4に変換し、Noise TextureのScaleに接続します。
- Vector MathでNoise TextureのColor端子から取得できる値から各成分0.5を引きます。
- Frame CountをMap Rangeで3~14に変換し、Vector Mathで先ほど0.5を引いた値に掛けます。
- Vector Mathで元のPositionに生成した値を足し、Set PositionのOffset端子に接続します。上画像の様に、直線が変形したかと思います。

- Capture AttributeでPositionを取得しておきます。こちらは後々使用しますが、今は特に関係ありません。
- Set Curve Radiusを用意します。
- 前項で取得したSpline Parameterの値(0~1)を0~πに変換し、MathのSineを接続し、0⇒1⇒0の値に変換します。
- MathのMultiplyでSineで取得した値に0.05を掛けて、Set Curve RadiusのRadiusに接続します。
- Curve to Meshで変形した曲線に厚みを持たせていきます。Profile CurveにCurve Circleを接続します。
- 上画像の様に、始点と終点の半径が小さく、中間部で太いようなジオメトリが生成されました。
中心部の球体の生成

- Set Shade Smoothで最初に生成したIco Sphereを滑らかにします。
- Scale Elementsで拡大していきます。Scene TimeでFrame Countを取得し、Map Rangeで1~4.5に変換します。この値でScaleしていくことで、Frame Countが大きくなるにつれて球体が大きくなります。
- Join Geometryでアウトプットしておきます。
球体を変形

- Capture AttributeでPositionを取得します。取得する型をVector型にするのを忘れないようにしてください。
- 前回と同様、Noise Textureを使用し、4DNoiseで球体を変形させます。
- Frame Countを取得し、Map Rangeで0~5に直したものをWに、0~2に直したものをScaleに接続します。
- Vector MathのAddで各成分に-0.5を足します。
- Vector MathのMultiplyで変形の強さを調節します。今回は1.5を掛けています。この値を大きくすると変形が大きくなります。
- Vector MathのAddで元のPositonに生成した値を足します。
- Set PositionのPositonに接続します。
- Frame Countが大きくなるにつれて、球体が大きくなりながら、Noiseで変形していきます。
マテリアルの設定

- 太さを持たせた曲線部分と変形させた球体、それぞれにマテリアルを割り当てます。PlasmaとCoreという名前でマテリアルを割り当てています。
Attributeをアウトプット

- マテリアルの設定で使用したいAttributeをアウトプットしておきます。
- まずは、曲線に太さを持たせるまえのCapture AttributeからPositonを取得し、Vector MathのDistanceで中心からの距離を取得します。PlasmaDistという名前でアウトプットしておきます。
- AttributeDomainはFaceにします。
- 次に、球体をスケールさせる際に使用したCapture AttributeのPositionと中心の距離を取得します。CoreDistという名前でアウトプットし、AttributeDomainはFaceとします。
マテリアルの設定 Plasma部分

- Attributeを用意し、NameにPlasmaDistを入力します。
- Map RangeでAttributeの値を0~1に変換します。
- Color Rampで好きな色に設定しまます。今回は中心部付近が白、外側に行くにつれて青くしていきます。
- Principled BSDFのSubsurface ColorとEmissionに接続します。Emission Strengthは2にしています。
- Render PropertyのBloomにチェックを入れておきます。
マテリアルの設定 Core部分

- Core部分のマテリアルも設定していきます。先ほどと同様の方法で設定していきます。Attributeの値はCoreDistをで設定していきます。
完成

TimeLineを動かすと最初のGif画像の様に変形していくと思います。パラメーターを変化させて自分の気に入った具合にしてみてください。