使用ソフトウェア | バージョン | 備考 |
---|---|---|
Blender | 3.6.0 |
2023/07/08: なぜインスタンスのままだと変形が上手くいかないかを追記
今回はインスタンスごとに別々の変形を加えてやる方法を解説する。
矢印のサルだけ大きさを2倍にしたい例で解説すると
ノード例 | 実行結果 |
---|---|
上のノードを下に変えてみるが...
ノード例 | 実行結果 |
---|---|
インデックスで指定したサルは大きくなっていない。
これを解決するノードが今回の題材。
厳密にはRealize Instance
した後に少し複雑な変形ノードを組んでやれば出来なくはないが、非効率なので割愛する。
また、上のノードは指定したインデックスのサルを大きくしているように見えるが、実は特定の面1個を拡大している全く別の処理だ。
【Geometry Nodes】Scale Elements(要素スケール)ノード【Blender】 | 謎の技術研究部
インスタンスというのは元メッシュの一時的なコピーが配置されているだけのもの。
したがって通常のノードでは個別に変更するという事はできない。
元メッシュに変更を加えたところで全てのインスタンスが変形されてしまう。
この記事では「フィールド」(ひし形ソケット)の理解が必要なので次の記事も参照。
【Geometry Nodes】フィールドって何?PositionやIndexの使い方【Blender】 | 謎の技術研究部
今回紹介するノードはインスタンスを維持したままでもできる簡単な変形を扱うノードだ。
次の3つ存在する。
日本語:インスタンス拡大縮小
このノードはインスタンスのまま「サイズを変化」させるノードだ。
さらにSelectionを使ってやることで特定のインスタンスだけ変化させることができる。
ノード例 | 実行結果 |
---|---|
このSelection
利用し特定のIndex
を持つインスタンスだけScale
値を変化させる。
これで冒頭の目的である左上の一つだけサイズを変えることが出来た。
Selection
ソケットがわからない場合は次の記事を参照
日本語:インスタンス回転
こちらは回転を扱うノード。
上と同じような接続で特定の一つだけ回転させるといったことが可能。
日本語:インスタンス移動
こちらは移動するだけのノード。
インスタンスごとに別々の移動が可能になる。
上の画像では狙った一つだけを変化させている。
これら3種類のノードをよく見ると全てが「フィールド」となっているため個々のインスタンスごとに違った値を入れることができる。
ランダムに変化させる次のような例はよく利用する。
このようにフィールドの概念を利用することで全てのインスタンスが別々の変形をする。
Rotate Instances
を使って理解すると
Local Space
がオンの場合は、各モンキーごとの原点で回転する。
オフの場合はInstance on Points
のPoints
に入力したメッシュの原点を起点にする。
更にこのソケット自体もフィールドであるため、それぞれのインスタンスで違った値を設定することも可能。
ここまでで解説していないソケットを乗せておく。
Rotate Instances
のPivot Point
は単純に回転の軸となっている点をこの数値だけズラすものだと思えば良い。
Local Space
との兼ね合いもあるので合わせて使用する。
この数値を調整するとシンプルに拡大後の位置が変化するのみ。
Set Position
のようにソケットを利用してメッシュをぐにゃぐにゃに曲げるといったことは出来ず、単純に位置がかわる。
正直なところこれが有用なケースははよく分かっていない。
この3種のノードはRealize Instances
の前に使用する。
こうしないとエラーとなるので注意。
最後に動画の作例。
たったこれだけのノードでランダムなようで不思議と流れを感じる動きを作ることができた。
Instance on Points
はとにかくよく使うノードだが「あれ、個別に変形したいんだけど出来ない...」と思っているユーザーが多いと思い慌てて記事を書いている。
調べたところBlender 3.0
(2021/12)から追加されていたノードだったようだ。
実は私もこれに気づくのが少し遅かった。
地味で簡単だが、引き出しの幅が大きく広がるノードなので是非覚えてもらえたらと思う。
トップに使った画像はRotate, Scale
をランダムにして赤に塗っただけのキューブ