使用ソフトウェア | バージョン | 備考 |
---|---|---|
Blender | 3.3.1 |
日本語:ベクトル回転
回転を扱うノードではこれまでRotate Euler
やAlign Vector to Vector
を扱った。
これらのノードはあくまでRotation
という角度を出力として扱うノードだ。
一方で今回のVector Rotate
は出力がVector
となっている。
これは回転後の各頂点の座標が入っていると思えば良い。
回転を扱うノードは混乱しやすいため、この記事でわかりやすく解説したい。
Vector
(ベクトル) => Vector Rotate
(ベクトル回転)
Rotate Euler
やAlign Vector to Vector
はUtility
に分類されるが、これはVector
の中にある。
このノードはマテリアルノードでも呼び出せる。
マテリアルにはMapping
ノードがあるのでこちらは少しマニアックなノード?
似たようなノードがいくつもあるので他の記事で扱っている。
Align Euler to Vector(オイラーをベクトルに整列)ノードを解説:前編【Blender - Geometry Nodes】 | 謎の技術研究部
Rotate Euler(オイラー回転)ノードを解説【Blender - Geometry Nodes】 | 謎の技術研究部
このノードはSet Position
ノードで使うケースが最も多いと思う。
Set Position
に回転を扱う入力が無いからというのが1つの理由になっている。
おそらく最もよくある接続例。
こんな風に回転できる。
この記事ではこの矢印のメッシュ(自作モデル)を使って解説する。
ローカル軸の方向と色がBlende標準と同じになっている(例:赤はX軸)
ノードの解説に入る前にまず理解しておく項目。
なぜ上のノード例でPosition
がつながっているのか。
コレを外すと回転しなくなる。なぜか。
「回転」は言い換えれば頂点の「移動」である。
このノードは各頂点を移動することで回転を表現するものだ。
したがって点1個ずつの座標を先に入力しておき、それをどこに移動するのか、という情報を出力している。
このためPosition
の情報がなければ、回転元の座標が取れないためこのノードは意味がなくなる。
少々難しいかもしれない。
全く理解できなくても暗記してしまえば使えなくもないのでとにかくPosition
は絶対必要ということは覚えておく。
あれ、こういう時ってSet Position
側からフィールドの概念により元の座標が逆流するのでPosition
いらないんじゃ?
と思った人は鋭い。私もそう思う。
しかしこのノードに限りそうではないようだ。
通常何も繋がない場合はデフォルト値が使われ、この場合Position
になっていてもおかしくない。
デフォルト値が設定されていないのはここにPosition
以外の様々な座標が入ってくることを想定しているのだと思う。
「そもそもPosition
ノード自体に入力ソケットが無く、どこのPosition
かわからないじゃん!」という方はフィールドという概念を知らないと思うので次の記事を参照。
【Geometry Nodes】フィールドって何?PositionやIndexの使い方【Blender】 | 謎の技術研究部
Position
ノードをVector
に使う意外にNormal
やTangent
方向を変える用途で使っているケースもあるようだ。
この場合はAlign Euler to Vector
ノードに繋ぐ例のような場合だと思われるが、私も具体的な使い道を見つけられていないため参考までの掲載とする。
日本語:軸の角度
このノードは回転のモードを何種類か選べる。
まずはデフォルトのAxis Angle
モード。
回転の中心であるCenter
と回転軸Axis
を設定してからAngle
で回転する。
例を見たほうが理解が早い。
Center
のy=1
、Axis
をZ=1
にした場合。
赤い点がCenter
, 赤い縦線はAxis
の延長線だ。
動かすと次のような回転になる。
Axis
を軸として回転している。
Invert
オプションは回転を反転するだけなので解説は省略する。
上の例ではAxis
にベクトルを直接入れたが、こちらはもっと簡単。
例えばX Axis
モードにするとX
を軸として回転する。
これらのモードにもCenter
ソケットがあるが、基本は上で述べたのと同じ。
Axis
の位置をこのCenter
分ずらすと考えると分かりやすいかも。
例えばZ=2
にすると
X
軸がZ方向(上)に2ズレているのが分かる。
日本語:オイラー
このモードになるとAngle
の代わりにRotation
が増える。
Rotation
の設定はよく使うTransform
と同じでXYZ
軸ごとに角度を入力できる。
これに関しては解説は不要だと思う。
以前にAlign Euler to Vector
を紹介したがSet Position
には直接使えない。
そこでこのVector Rotate
を間に挟むという手法はとてもよくある例。
Align Euler to Vector
の解説は次の記事。
Align Euler to Vector(オイラーをベクトルに整列)ノードを解説:前編【Blender - Geometry Nodes】 | 謎の技術研究部
例えばローカルのZ
軸を特定の方向に向けたいという例。
わかりやすく別オブジェクトで青玉を用意して、次のように接続する。
この状態で青球を自由に動かしてみると
Set Position
を使って整列の回転ができた。
この動きはオブジェクトモード中キーボードのRR
(2回押し)の回転と同じような回転。
Transform
ノードではなくSet Position
ノードが使いたいときはこれを覚えておくと良い。
このノードを使ってブランコの簡単な動きを作ってみた。
単純な例なので重力による加速は考慮していない。
Sine
を入れただけだと-1 ~ 1度
しか回転しないんじゃないか。なぜ大きく振っているのか。
答えはAngle
ソケットに入ってくる値はラジアン値として扱われるから。
最大の出力は1ラジアン=約57度。
次の箇所で簡易解説しているので、気になればぜひ。
Align Euler to Vector(オイラーをベクトルに整列)ノードを解説:前編【Blender - Geometry Nodes】 | 謎の技術研究部
実は個人的にこのノードはあまり使わない。
Align Euler to Vector
やRotate Euler
と組み合わせて使うケースも時々あるとは思う。
ただ「そういうときはコレ!」という作例がなかったので残念ながら見送り。
私も色々意識して研究していきたい。