| 使用ソフトウェア | バージョン | 備考 |
|---|---|---|
| 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と組み合わせて使うケースも時々あるとは思う。
ただ「そういうときはコレ!」という作例がなかったので残念ながら見送り。
私も色々意識して研究していきたい。
