2023-07-08(更新)

インスタンスを個別に変形する3つのノード!【Blender - Geometry Nodes】

インスタンスごとに別々の値で変形できるScale, Rotate, Translateの三種類のノードを解説!!

Article Image
使用ソフトウェアバージョン備考
Blender3.6.0

2023/07/08: なぜインスタンスのままだと変形が上手くいかないかを追記

この記事でわかること

今回はインスタンスごとに別々の変形を加えてやる方法を解説する。

目的

矢印のサルだけ大きさを2倍にしたい例で解説すると

ノード例 実行結果
instance on pointsのノード例 これだけ大きくしたい

上のノードを下に変えてみるが...

ノード例 実行結果
アイデア例 変化しない結果

インデックスで指定したサルは大きくなっていない。

これを解決するノードが今回の題材。

厳密にはRealize Instanceした後に少し複雑な変形ノードを組んでやれば出来なくはないが、非効率なので割愛する。

また、上のノードは指定したインデックスのサルを大きくしているように見えるが、実は特定の面1個を拡大している全く別の処理だ。

【Geometry Nodes】Scale Elements(要素スケール)ノード【Blender】 | 謎の技術研究部

なぜ変形出来ないの?

インスタンスというのは元メッシュの一時的なコピーが配置されているだけのもの。

したがって通常のノードでは個別に変更するという事はできない。

元メッシュに変更を加えたところで全てのインスタンスが変形されてしまう。

前提条件

この記事では「フィールド」(ひし形ソケット)の理解が必要なので次の記事も参照。

【Geometry Nodes】フィールドって何?PositionやIndexの使い方【Blender】 | 謎の技術研究部

3つのノードで変形

今回紹介するノードはインスタンスを維持したままでもできる簡単な変形を扱うノードだ。

次の3つ存在する。

Scale Instancesノード

日本語:インスタンス拡大縮小

Scale Instancesノード外観

このノードはインスタンスのまま「サイズを変化」させるノードだ。

さらにSelectionを使ってやることで特定のインスタンスだけ変化させることができる。

ノード例 実行結果
ノード例 実行結果

このSelection利用し特定のIndexを持つインスタンスだけScale値を変化させる。

これで冒頭の目的である左上の一つだけサイズを変えることが出来た。

Selectionソケットがわからない場合は次の記事を参照

【Geometry Nodes】Selection(選択)って何【Blender】 | 謎の技術研究部

Rotate Instancesノード

日本語:インスタンス回転

Rotate Instancesノード外観

こちらは回転を扱うノード。

一つだけ回転

上と同じような接続で特定の一つだけ回転させるといったことが可能。

Translate Instancesノード

日本語:インスタンス移動

Translate Instancesノード外観

こちらは移動するだけのノード。

一つだけ移動

インスタンスごとに別々の移動が可能になる。

ソケットに別々の値を入力

上の画像では狙った一つだけを変化させている。

これら3種類のノードをよく見ると全てが「フィールド」となっているため個々のインスタンスごとに違った値を入れることができる

全てをランダムに変化させる

ランダムに変化させる次のような例はよく利用する。

フィールドソケットの外観

それぞれ違う方向に回転したサル

このようにフィールドの概念を利用することで全てのインスタンスが別々の変形をする。

Local Spaceって何

Rotate Instancesを使って理解すると

Local Space外観

Local Spaceがオンの場合は、各モンキーごとの原点で回転する。

オフの場合はInstance on PointsPointsに入力したメッシュの原点を起点にする。

更にこのソケット自体もフィールドであるため、それぞれのインスタンスで違った値を設定することも可能。

その他のソケット

ここまでで解説していないソケットを乗せておく。

Rotate Instances: Pivot Point

Rotate Instances: Pivot Point外観

Rotate InstancesPivot Pointは単純に回転の軸となっている点をこの数値だけズラすものだと思えば良い。

Local Spaceとの兼ね合いもあるので合わせて使用する。

Scale Instances: Center

Scale Instances: Center外観

この数値を調整するとシンプルに拡大後の位置が変化するのみ。

Set Positionのようにソケットを利用してメッシュをぐにゃぐにゃに曲げるといったことは出来ず、単純に位置がかわる。

正直なところこれが有用なケースははよく分かっていない。

注意:Realize Instancesの前に使うこと

この3種のノードはRealize Instancesの前に使用する。

前に差したノード

こうしないとエラーとなるので注意。

作例

最後に動画の作例。

ノード例

たったこれだけのノードでランダムなようで不思議と流れを感じる動きを作ることができた。

さいごに

Instance on Pointsはとにかくよく使うノードだが「あれ、個別に変形したいんだけど出来ない...」と思っているユーザーが多いと思い慌てて記事を書いている。

調べたところBlender 3.0(2021/12)から追加されていたノードだったようだ。

実は私もこれに気づくのが少し遅かった。

地味で簡単だが、引き出しの幅が大きく広がるノードなので是非覚えてもらえたらと思う。

トップ画像につかったキューブ

トップに使った画像はRotate, Scaleをランダムにして赤に塗っただけのキューブ



この記事をシェア


謎の技術研究部 (謎技研)