2022-10-30

Align Euler to Vector(オイラーをベクトルに整列)ノードを解説:前編【Blender - Geometry Nodes】

ローカル軸のXYZいずれかを、入力ベクトルと同じ「方向」へ向けるノード前編。まずはVector入力に絞って解説する。

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

Align Euler to Vectorノード

日本語:オイラーをベクトルに整列

ノード外観

概要

難しいので例を上げて解説する。

例えば次のように1と2のメッシュがある。

2つのオブジェクト

分かりやすくするため、1は矢印が各ローカル軸と同じ方向に向かっているメッシュを作成した。

このとき1のZ軸を2の青の玉の位置ベクトルと同じ方向に整列したい。

目的の図

こういった場合にAlign Euler to Vectorノードを使うと

目的達成

このようにZ軸である青矢印を青い球の方向へ向けることができる。

動画で確認すると次のような回転ができる(後ほど解説)

この場合はY軸(緑)に変更してある

出し方

Utilities(ユーティリティ) => Align Euler to Vector(オイラーをベクトルに整列)

ちょっと複雑なノード

このノードは理解するのががちょっと面倒。

にも関わらず非常によく使うノードでもあるため、より良い作品を作るためにはぜひとも覚えておきたいノードの一つである。

というわけでこの記事では細かく手順を追って可能な限りわかりやすい記事を目指す

Rotationは解説しない

このノードはRotationVectorの2つの入力によって複雑に結果が変わってくる。

Rotationは何も入力せず使うことも多いためこの記事ではVector入力のみ使用する。

本記事で扱わないソケット

Rotationに関しては別途記事を用意する予定。

基本的にRotationには何も入力しないままで良い。

出力のRotationに注意

まず初めに確認しておきたいのが出力がRotation(回転)であること。

Rotation出力の外観

なので次のように

接続先の例

TransformノードやInstance on PointsノードのRotationソケットに繋いで使う事が多い。

Rotationからはラジアンが出ている

Rotationのソケットから出力されているデータは度数ではなくラジアンという単位で出力されている。

ラジアンが出ている

これはどういうことかというと

ノード例

Rotationの直接入力は度数で良いのだが、ValueCombineノードから入力する場合はラジアンで入力しなければならない。

つまりこの項で言いたいことは基本的にRotationソケット同士を結びましょうということだ。

Rotationの出力をVectorの入力などに繋いで「思ったようにならない」というケースがよくあるので覚えておく。

参考:ラジアンって何

ラジアンについては詳しくは解説しないが「180度 = πラジアン」ということだけ知っていればなんとかなる。

つまり3.1415...をRotationに入力すると180度回転になる。

外部からはラジアンで入力

上のようなノードで90と入れても90度にはならないことは覚えておこう。

参考:Set Positionには使えない

Transformノードには使えるがSet Positionのようなノードには使えない。

ダメな例

どうしてもSet PositionAlign Euler to Vectorを使いたい場合は次のノードで動作する。

Set Positionノード例

Vector RotateTypeEulerに変更して使用している。

Positionの赤ノードも必須

今回の作例

前置きが長くなったが、今回は冒頭で示した作例を使って解説する。

次のようなノードになっている。

ノード例

Align Euler to VectorRotationから外すと次の状態

2つのオブジェクト

1は自作のノードグループ。実際はなんでも良い。

2は青球の座標を取得するためのノード。Relativeにしておくと1のジオメトリから相対座標が出る。

引っ張られる側の軸

まずは一番上のXYZのボタンから確認する。

ノード上のXYZ

ここで選択した軸を、後に指定するベクトルに整列させるという意味だ。

なるほど、わからん

これだけだとわからんのでイメージで考える。

分かりやすいのはゴムで引っ張られる軸とおぼえておくと楽だ。

上ではZが指定されているので、Z軸の矢印の先端にゴムが引っかかっており、この先端が引っ張られ次のようになる。

Z軸がひっぱられている

ということは、ここをYにしたらどうなるか。

Yに変更

Y軸の頭がひっぱられるので

Y軸がひっぱられている

こうなる。

覚えてしまえば簡単だ。

矢印のメッシュはBlenderの表示と同じく「青:Z軸」「緑:Y軸」「赤:X軸」と一致させてある。

この設定はローカル軸を指定している。ワールド軸ではない。

ただ、このあたりあまり深く考えると混乱するのでなんとなく理解してれば良い。

引っ張る側:Vector

一番下のVectorには整列する目的のベクトルを入れる。

今回は青玉の座標を入れている。

Vectorソケットに繋いだノード

つまり上のノードのまま青球を動かすと

角度が変わる

Y軸(緑)の角度が変わった。

イメージ

つまりこちら(Vectorソケット)がゴムを引っ張る側でイメージすれば良い。

基本的にこの2つさえ分かってしまえばイメージが簡単になると思う。

イメージ

あくまで回転しただけ

念のため書いておくが、このノードはあくまで回転させるためだけのノードだ。

したがって上の例では「引っ張られる」と表現しているが、矢印の中心が移動したり、メッシュの伸縮が発生することはない。

回転して上の結果となっているだけだ。

Pivot

日本語:ピボット

ピボット設定の外観

ここにPivotという項目がありデフォルトでAutoとなっているがXYZを切り替えることができる。

この設定を解説する。

混乱しやすい

混乱しやすい外観

ここにXYZ軸の設定があるため上のXYZ設定と混乱しないように注意。

使い方

少し難しいので具体例としてXに設定変更し、何が起こるのかを見ていく。

まずはPivot=Auto(これまでの例と同様)のままだと

Y + Auto

今までと同じ例

このようにY軸が青玉に引っ張られて回転するのはこれまでで理解できたと思う。

この状態でPivotXに変更してみる。

Pivotを変更

実行結果

Y軸はコレまで通り青玉に引っ張られているが、X軸は初期の状態で固定された。

動画で確認

まだ完全に理解できないかもしれないので動画で確認する。

Pivot = Autoのまま青球を自由に移動すると次のようになる。

X軸(赤軸)は自由に動いている。

次の例でPivot = Xにして同じように動かしてみると

最初の例ではX軸は自由に動いているが、後者では完全に初期の位置で固定されているのがわかる。

わかりやすく覚える

つまりPivot = プロペラの軸 のように覚えておくと楽かと思う。

プロペラ

Factor

日本語:係数

Factor外観

0 ~ 1の間で全く回転してない状態とミックスできる。

0にすると完全に回転の効果がなくなる。

イメージが湧かない場合は球が引っ張っているゴムの強さだと考えると楽かもしれない。

ここまで

今回はRotationのソケットを全く使用しないまま解説した。

Rotationを使うとより複雑にできるのだが、理解するのも難しくなる印象。

そもそもRotationはあまり頻繁に使うソケットではないので、ここまで理解できていれば十分とも言える。



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