最近 Blender の学習もしているので、アウトプットしていこうと思います。まだ学習して浅いので、もっといい方法あるよ、とかありましたら是非コメント・SNS で DM などいただけると嬉しいです!今回は、Blender の Geometry nodes を使用して、以下の Gif 画像の様な虹色の泡を作成していこうと思います。使用するのバージョンは Blender3.1 となっております。違うバージョンだと、仕様が変わってくるかもしれないのでご注意ください。こちらのチュートリアルは動画化しております、動画の方がよい方は以下のリンクからどうぞ!
ベースとなる平面作成
- Planeを配置し、適当な大きさに拡大します。
- 作成した Plane を選択した状態でGeometry Nodeを開きます。
球の作成
- Distribute Points on Facesで作成した Plane 上に Point を作成します。Density を変えると Point の密度が変化します。今回は 10 としています。
- UV Sphereを作成します。Radius は Geometry Input で制御できるようにします。今回は 0.05 を入力しています。
- Set Shade Smoothで作成した UV Sphere を滑らかにします。
- Instance on Pointsで生成した Point に滑らかにした球を配置していきます。
作成した球の Z 座標を操作:sine 波の作成
- 作成した球の Z 座標を操作することによって、球体を上下に移動させます。まず初めに上下に行ったり来たりさせるために Sine 波を生成します。
- Geometry Input に Jumping Speed という Input を作成し、Math ノードでFrame Countに掛けます。この値を操作することで、上下移動の速度をコントロールできます。
- Math ノードのTo Radiusでラジアン変換します。
- Math ノードのAddで 0 ~ 2π までのランダムな値を足します。こうすることで、Sine 波の位相をずらし上下移動のタイミングをずらします。
- Math ノードでSine波を生成します。-1 ~ 1 までの値が生成されます。
- Math ノードでAbsoluteして絶対値を取ります。これで 0 ~ 1 までの値となります。
作成した球の Z 座標を操作:Z 座標を編集
- Z 座標を一定の高さではなく、各球体によって高さが変わるようにしていきます。
- Math ノードでMultiplyでRandom Valueを掛け算します。Geometry Input で min height と Max height を操作できるようにします。今回は 0 ~ 3 範囲でランダムな値を生成しています。
- Positionを取得し、Separate XYZで Z 成分を取り出します。
- Combine XYZで X,Y 成分はそのまま、Z 成分を先ほど作成したランダムな値を入力します。
- Set Positionで球体を作成した座標に移動させます。
- スペースを押してアニメーションを再生すると、球体がランダムな高さに上下移動したかと思います。
球体をスケーリング
- 球体の大きさを変化させていきます。上に上がるにつれて拡大していき、下がっていくにつれて縮小していくようにしていきます。
- Math ノードでAbsoluteの 0 ~ 1 の値に最大倍率を掛けます。今回は 5 倍を掛けています。
- Scale Instanceで拡大していきます。
- アニメーションを動かすと上に行くにつれて大きくなり、下がっていくにつれて小さくなっていくと思います。
色付け
- マテリアルを作成しSet Materialで作成したマテリアルを割り当てます。
- Shader Editorで作成したマテリアルを編集します。
- GeometryでPositionを取得し、Separate XYZで Z 座標を取得します。
- Map Rangeで取得した Z 座標を 0 ~ 1 の値に変換します。この時、From Max の値を制御できるようにします。この値を制御して、各色の高さを操作します。
- Roughnessを 0 にして光沢を出します。
- 後は適当に Light を配置し、黒い Plane を後ろにおいて背景とすれば完成です。
完成
以上になります。私もまだ学習し始めなので、よくわかんない部分もありますが、しっかりインプットしできるだけこの場でアウトプットしていけたらと思っております。