使用ソフトウェア | バージョン | 備考 |
---|---|---|
Blender | 3.3.1 |
2022/12/13:後編のリンクを追加
日本語:オイラーをベクトルに整列
難しいので例を上げて解説する。
例えば次のように1と2のメッシュがある。
分かりやすくするため、1は矢印が各ローカル軸と同じ方向に向かっているメッシュを作成した。
このとき1のZ軸を2の青の玉の位置ベクトルと同じ方向に整列したい。
こういった場合にAlign Euler to Vector
ノードを使うと
このようにZ軸である青矢印を青い球の方向へ向けることができる。
動画で確認すると次のような回転ができる(後ほど解説)
この場合はY軸(緑)に変更してある
Utilities
(ユーティリティ) => Align Euler to Vector
(オイラーをベクトルに整列)
このノードは理解するのががちょっと面倒。
にも関わらず非常によく使うノードでもあるため、より良い作品を作るためにはぜひとも覚えておきたいノードの一つである。
というわけでこの記事では細かく手順を追って可能な限りわかりやすい記事を目指す。
このノードはRotation
とVector
の2つの入力によって複雑に結果が変わってくる。
Rotation
は何も入力せず使うことも多いためこの記事ではVector
入力のみ使用する。
基本的にRotation
には何も入力しないままで良い。
Rotation
に関しては次の記事を参照。
Align Euler to Vector(オイラーをベクトルに整列)ノードを解説:後編【Blender - Geometry Nodes】 | 謎の技術研究部
まず初めに確認しておきたいのが出力がRotation
(回転)であること。
なので次のように
Transform
ノードやInstance on Points
ノードのRotation
ソケットに繋いで使う事が多い。
Rotation
のソケットから出力されているデータは度数ではなくラジアンという単位で出力されている。
これはどういうことかというと
Rotation
の直接入力は度数で良いのだが、Value
やCombine
ノードから入力する場合はラジアンで入力しなければならない。
つまりこの項で言いたいことは基本的にRotationソケット同士を結びましょうということだ。
Rotation
の出力をVector
の入力などに繋いで「思ったようにならない」というケースがよくあるので覚えておく。
ラジアンについては詳しくは解説しないが「180度 = πラジアン」ということだけ知っていればなんとかなる。
つまり3.1415...をRotation
に入力すると180度回転になる。
上のようなノードで90
と入れても90度
にはならないことは覚えておこう。
Transform
ノードには使えるがSet Position
のようなノードには使えない。
どうしてもSet Position
でAlign Euler to Vector
を使いたい場合は次のノードで動作する。
Vector Rotate
のType
をEuler
に変更して使用している。
Position
の赤ノードも必須
前置きが長くなったが、今回は冒頭で示した作例を使って解説する。
次のようなノードになっている。
Align Euler to Vector
をRotation
から外すと次の状態
1は自作のノードグループ。実際はなんでも良い。
2は青球の座標を取得するためのノード。Relative
にしておくと1のジオメトリから相対座標が出る。
まずは一番上のXYZ
のボタンから確認する。
ここで選択した軸を、後に指定するベクトルに整列させるという意味だ。
これだけだとわからんのでイメージで考える。
分かりやすいのはゴムで引っ張られる軸とおぼえておくと楽だ。
上ではZが指定されているので、Z軸の矢印の先端にゴムが引っかかっており、この先端が引っ張られ次のようになる。
ということは、ここをYにしたらどうなるか。
Y軸の頭がひっぱられるので
こうなる。
覚えてしまえば簡単だ。
矢印のメッシュはBlenderの表示と同じく「青:Z軸」「緑:Y軸」「赤:X軸」と一致させてある。
この設定はローカル軸を指定している。ワールド軸ではない。
ただ、このあたりあまり深く考えると混乱するのでなんとなく理解してれば良い。
一番下のVector
には整列する目的のベクトルを入れる。
今回は青玉の座標を入れている。
つまり上のノードのまま青球を動かすと
Y軸(緑)の角度が変わった。
つまりこちら(Vector
ソケット)がゴムを引っ張る側でイメージすれば良い。
基本的にこの2つさえ分かってしまえばイメージが簡単になると思う。
かわいいイラストはIMTよりあつさん作
念のため書いておくが、このノードはあくまで回転させるためだけのノードだ。
したがって上の例では「引っ張られる」と表現しているが、矢印の中心が移動したり、メッシュの伸縮が発生することはない。
回転して上の結果となっているだけだ。
日本語:ピボット
ここにPivot
という項目がありデフォルトでAuto
となっているがXYZ
を切り替えることができる。
この設定を解説する。
ここにXYZ
軸の設定があるため上のXYZ
設定と混乱しないように注意。
少し難しいので具体例としてX
に設定変更し、何が起こるのかを見ていく。
まずはPivot=Auto
(これまでの例と同様)のままだと
このようにY軸
が青玉に引っ張られて回転するのはこれまでで理解できたと思う。
この状態でPivot
をX
に変更してみる。
Y
軸はコレまで通り青玉に引っ張られているが、X
軸は初期の状態で固定された。
まだ完全に理解できないかもしれないので動画で確認する。
Pivot = Auto
のまま青球を自由に移動すると次のようになる。
X軸(赤軸)は自由に動いている。
次の例でPivot = X
にして同じように動かしてみると
最初の例ではX軸
は自由に動いているが、後者では完全に初期の位置で固定されているのがわかる。
つまりPivot
= プロペラの軸 のように覚えておくと楽かと思う。
日本語:係数
0 ~ 1
の間で全く回転してない状態とミックスできる。
0
にすると完全に回転の効果がなくなる。
イメージが湧かない場合は球が引っ張っているゴムの強さだと考えると楽かもしれない。
今回はRotation
のソケットを全く使用しないまま解説した。
Rotation
を使うとより複雑にできるのだが、理解するのも難しくなる印象。
そもそもRotation
はあまり頻繁に使うソケットではないので、ここまで理解できていれば十分とも言える。