フリーハンドでジオメトリノードなオブジェクトを這わせる
Geometry Nodesを使うとシンプルな手順で派手なものが作れるようですが、なかなか自分で「こうしよう」と思ったものは作れないでいます。しくみがまだまだ理解できていません。
タイトルの意味がよくわかりませんが、今回はジオメトリノードを使って、フリーハンドで描いたカーブ上にオブジェクト(インスタンス)を生やし、それを別のオブジェクトに這わすというのをやってみます。
こういうことです。
ではスタート。
かがやくオブジェクト
生やすオブジェクトを作ります。なんでもいいんですが、Blenderで作るので、Blenderロゴっぽくかがやくオブジェクトにしようと思います。名付けて「ブレンダのかがやき君」。
[Add] - [Mesh] - [UV Sphere]
でUV Sphereを作り、マテリアルを貼って、Shader Nodeで整えます。シェーダーノードは、基本的なところはわかるものの、テクスチャ座標など細かなところのしくみがまだよくわかってなかったりします。とりあえず今回は見た目がそれっぽければよしということで、こんなノードにしました。
かわいい。
カーブを準備
今作ったかがやき君は少し横によけておき、[Add] - [Curve] - [Bezier]
で新たにベジェカーブを作ります。このカーブ上にジオメトリノードを設定して配置していくことになります。長さはあとで変えるので、今はデフォルトのままにします。
かがやくジオメトリーノードカーブ
Curveのモディファイアープロパティで、[Add Modifier]-[Geometry Nodes]
を選びジオメトリノードを追加します。ここからは上部のGeometry Nodes
タブを選んで作業します。
インスタンス配置
まずは、InputとOutputの間にInstance on Point
ノードをはさみ、そこのInstance
端子にかがやき君のObject Info
ノード(かがやき君のオブジェクト名はSphere
)をつなげます。オブジェクトノードは、メニューから追加してオブジェクトを指定することもできますが、アウトライナーからドラッグ&ドロップすると簡単に追加できます。
かがやき君は、「ポイント」と呼ばれるカーブ状の位置に表示されます。そのままだとかがやき君が大きすぎたので、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度を表す単位で覚えておくと便利です。
大きさも少しランダムにします。先程、Scale
を0.2
倍に統一しましたが、Rotation
端子同様Scale
端子もRandom Value
ノードをつなげます。ここでは、0.15~0.25倍としました。少しかがやき君同士がくっつきすぎていたので、Resample Curve
ノードの値も、0.3m
に伸ばしました。
ノードはこれで完成です。パスを伸ばしたりすると長さに応じてかがやき君が増殖します。
フリーハンドでオブジェクトをかがやかせる
カーブは、フリーハンドで描ける機能があります。カーブのオブジェクトを選択した状態で、Tab
キーを押してEdit Mode
に入り、左に並ぶアイコンのDraw
を選択します。
また、別のオブジェクトの表面上に描くことができるように、オプション(右側に表示されていなければn
キーで表示)からTool
-Depth
でSurface
を選択しておきます。
この状態でマウスでドラッグすると、描いた線のうえにかがやき君がぶわーっと登場してくれます。また、別にオブジェクトを作り、その上に描くこともできます。サルを追加して、その上に描いてみました。
なかなかにキモいですね。よくできました。
ジオメトリノードは、大量のオブジェクトを効率よく生成したり、プロシージャルに複雑なことができたり、アニメーションが計算だけでできたりと、様々な可能性が感じられて楽しいです。なかなか各ノードをどう組み合わせると何ができるのかが理解しきれてないので、もっと勉強してみたいなと思います。