blender の箱を消したら

blender を覚えたい蜂砂の発見や操作メモです。オブジェクトの動かし方は覚えたので中級者を目指したい。

フリーハンドでジオメトリノードなオブジェクトを這わせる

Geometry Nodesを使うとシンプルな手順で派手なものが作れるようですが、なかなか自分で「こうしよう」と思ったものは作れないでいます。しくみがまだまだ理解できていません。

タイトルの意味がよくわかりませんが、今回はジオメトリノードを使って、フリーハンドで描いたカーブ上にオブジェクト(インスタンス)を生やし、それを別のオブジェクトに這わすというのをやってみます。

こういうことです。

f:id:beesand:20220326194925p:plain
完成形

ではスタート。

かがやくオブジェクト

生やすオブジェクトを作ります。なんでもいいんですが、Blenderで作るので、Blenderロゴっぽくかがやくオブジェクトにしようと思います。名付けて「ブレンダのかがやき君」。

[Add] - [Mesh] - [UV Sphere] でUV Sphereを作り、マテリアルを貼って、Shader Nodeで整えます。シェーダーノードは、基本的なところはわかるものの、テクスチャ座標など細かなところのしくみがまだよくわかってなかったりします。とりあえず今回は見た目がそれっぽければよしということで、こんなノードにしました。

f:id:beesand:20220326194932p:plain
シェーダーノード

かわいい。

f:id:beesand:20220326194935p:plain
単体オブジェクト

カーブを準備

今作ったかがやき君は少し横によけておき、[Add] - [Curve] - [Bezier] で新たにベジェカーブを作ります。このカーブ上にジオメトリノードを設定して配置していくことになります。長さはあとで変えるので、今はデフォルトのままにします。

f:id:beesand:20220326194937p:plain
カーブを置く

かがやくジオメトリーノードカーブ

Curveのモディファイアープロパティで、[Add Modifier]-[Geometry Nodes]を選びジオメトリノードを追加します。ここからは上部のGeometry Nodesタブを選んで作業します。

インスタンス配置

まずは、InputとOutputの間にInstance on Pointノードをはさみ、そこのInstance端子にかがやき君のObject Infoノード(かがやき君のオブジェクト名はSphere)をつなげます。オブジェクトノードは、メニューから追加してオブジェクトを指定することもできますが、アウトライナーからドラッグ&ドロップすると簡単に追加できます。

f:id:beesand:20220326194947p:plain
ジオメトリノード(途中)

かがやき君は、「ポイント」と呼ばれるカーブ状の位置に表示されます。そのままだとかがやき君が大きすぎたので、Scaleを0.2に下げてます。それとデフォルトではポイントの位置が適切でないので、カーブの長さに合わせてポイントを再配置する Resample Curveノードを挟み、かがやき君同士が少し重なる程度の密度にLengthを調整します。

回転と拡縮

かがやき君が皆同じ方向を見てしまっているので、これをランダムに回転させます。回転は、Instance on PointsノードのRotation端子にRandom ValueノードをVectorとしてつなげることでできます。Vectorを選ぶことで、値がx,y,zの3軸分出力されます。Rotation端子は、ドット付きのひし形端子なので、ポイントごとに処理が行われます。

ランダムの値は、x,y,zそれぞれの軸において、0度~360度なわけですが、ここではラジアンで入力するので、360度=2π=6.283となります。入力するときはtauあるいは2*piと打つと、自動的に変換してくれます。tauは360度を表す単位で覚えておくと便利です。

大きさも少しランダムにします。先程、Scale0.2倍に統一しましたが、Rotation端子同様Scale端子もRandom Valueノードをつなげます。ここでは、0.15~0.25倍としました。少しかがやき君同士がくっつきすぎていたので、Resample Curveノードの値も、0.3mに伸ばしました。

f:id:beesand:20220326194953p:plain
ジオメトリノード(最終形)

ノードはこれで完成です。パスを伸ばしたりすると長さに応じてかがやき君が増殖します。

f:id:beesand:20220326195029g:plain
増殖するかがやき君

フリーハンドでオブジェクトをかがやかせる

カーブは、フリーハンドで描ける機能があります。カーブのオブジェクトを選択した状態で、Tabキーを押してEdit Modeに入り、左に並ぶアイコンのDrawを選択します。

f:id:beesand:20220326195019p:plain
Drawアイコン

また、別のオブジェクトの表面上に描くことができるように、オプション(右側に表示されていなければnキーで表示)からTool-DepthSurfaceを選択しておきます。

f:id:beesand:20220326195022p:plain
Surface選択

この状態でマウスでドラッグすると、描いた線のうえにかがやき君がぶわーっと登場してくれます。また、別にオブジェクトを作り、その上に描くこともできます。サルを追加して、その上に描いてみました。

f:id:beesand:20220326200547g:plain
サルに群がるかがやき君

なかなかにキモいですね。よくできました。

ジオメトリノードは、大量のオブジェクトを効率よく生成したり、プロシージャルに複雑なことができたり、アニメーションが計算だけでできたりと、様々な可能性が感じられて楽しいです。なかなか各ノードをどう組み合わせると何ができるのかが理解しきれてないので、もっと勉強してみたいなと思います。