2022-11-06

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

ローカル軸のXYZいずれかを、入力ベクトルと同じ「方向」へ向けるノード後編。Rotationの入力ソケットに限定して解説。

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

Align Euler to Vectorノード(後編)

この記事はAlign Euler to Vectorノード解説の後編になる。

前回解説しなかったRotationの入力ソケットを重点的に解説。

Rotationソケット外観

この記事は後編

このノードの重要な点は前回の記事で解説している。

まだ読んでいない場合はそちらから読んだほうが分かりやすいと思う。

Align Euler toVector(オイラーをベクトルに整列)ノードを解説:前編【Blender - Geometry Nodes】 | 謎の技術研究部

前回と同じ作例を使用

この記事では前回と同じ作例を使って解説していく。

おさらいとしてノード例と結果を掲載。

ノード例

矢印のジオメトリがありAlign Euler to VectorによってZ軸が青球にひっぱられている。

Z軸がひっぱられている

前回は上のXYZで指定した軸が、ゴム(Vector)で引っ張られるイメージとした。

前提知識:入力の型

本題に入る前に覚えておきたい知識。

入力ソケットは前回書いた通りRotation同士でつなげるのが基本

ラジアン(オイラー角)という少し特殊な値が入るため。

したがって、この入力によく使うノードの繋げ方は

繋ぐ例

  • Rotate Eulerから繋ぐパターン
  • Align Euler to Vectorを2連で繋ぐパターン

といったケースでよく見かける。

間違えてVectorを直接繋がないように気をつけよう。

他にもパターンはある。あくまでよく使う一例。

またラジアン値と分かって使うならVectorから繋いでも良い(この記事でも一部使用)

基本の理解

順を追って理解していく。

Vectorに0を入れると?

このノードのVector0, 0, 0を入れるとどうなるのかを知っておく。

これは簡単な話で何も起こらない = 回転しない

Vector=0

元のママ

これは公式Docにも記載がある。

つまりVector0を入れるということは整列はしないということだ。

ではこれは無意味なのかというとそういうわけではない。

上の状態でRotationに値を入れてみる

この状態でRotationに角度を入れてみると

Rotationになにか入れてみる

回転した

指定した軸で回転する。

そしてこれは、次と全く同じ回転になる。

Transformに繋いだ例

上の例と全く同じになる。

回転した

何が起こった?

Align Euler to Vectorの本目的を「軸を整列させる回転」とするとRotationは「それとは別の回転処理」となる。

言い方を変えればとりあえずここに繋いだ角度がそのまま回転されるということ。

Rotationは前処理

上の例で整列処理とは関係なく、入力されたRotationだけ回転していることがわかった。

ここで重要なのがこれが「整列処理が行われる前で実行される」ということだ。

つまり内部で一旦Rotationの角度で回転させた後XYZで指定した軸をVectorに向けるというアルゴリズムとなる。

処理手順

同時接続すると何ができる?

では具体的にRotationVectorを同時に入力すると何ができるのだろうか。

同時接続

結論から言えばPivotを先に回転して固定する

という効果がある。

実際に例を見てみる

Rotationだけ入れてみる

まずはRotationだけ入力する(Vectorは未接続)

ノード例

当然、メッシュはYZ軸で傾く。

右斜め前に傾いた

青玉をVectorに入力

次に青玉のLocationVectorに接続するとどうなるか。

ここで整列の軸 = Z, Pivot = Xであることに注目しておこう。

青球を動かした動画が次。

右下に傾いたPivotX軸が固定された状態で軸に設定しているZの先端が青球を追いかけている。

つまりPivotを先に回転させて固定

Pivotに設定した軸は通常は初期位置で固定されてしまう。

しかし2つの入力を組み合わせることでPivotだけ先に回転して固定ということができるようになった。

Pivotは必ず指定する

このときPivotAutoにしたらどうなるの?と思うかもしれないが、これはNG。

Autoにしてしまうと前処理の回転が整列処理によって結局引っ張られてしまって意味がないものになる。

ここは詳しく説明すると混乱するので

RotationとVectorを同時に接続するときはPivotを必ず設定する

とひとまず覚える。

Pivotを設定することを忘れないように

厳密にはAuto意味がないわけではなく、わずかに回転が変わってくる。

ただし、現時点ではAutoにしたつなぎ方に意味を感じないので覚えなくて良いと考える。

ただし、例外がある

上でPivotを必ず設定しようと書いたがそれは嘘だ。

実は例外があるので次の項で解説。

上級:数珠つなぎにする

上級者の作例を見ているとAlign Euler to Vectorを連続で2つ接続するというパターンをときどき見かける。

ここからは構造が複雑になるので私が知る限りの実例掲載に留める。

どうしてそういう回転になるのか気になる場合は各自で考えてみてほしい。

異常に回転してしまう時

例えば次の例を見てみる。

Y軸を整列

Y軸をAutoで整列しているだけだが

緑玉が少し動くだけでZ軸とX軸が大きく回転してしまう箇所が発生する。

これは例えば車のようなオブジェクトを走らせる例だと、上り坂に入ったときに横転倒しているような動きをしてしまう。

というわけで次のノードに変更すると良い。

二連続で繋ぐ

このように数珠つなぎにすると次のような動作になる(車で考える)

  • 赤玉で車の進行方向を決定する
  • 緑玉で車の左右の傾きを調整する

動画で確認する

このように単純に一つの軸を整列すれば良いだけでなく、残りの軸の傾きも調整したい場合は数珠つなぎにすると良い。

上の例ではVectorに入ってきているソースが2つ(赤と緑)あるということに注目。

次の例ではVectorのソースを一つにする例。

とりあえずZ軸は上を向いていてほしい例

上の例ではX軸を整列した後に、Y軸で第二の調整を行っている。

しかし、そこまで厳密な調整は必要なく「とりあえずZ軸が上を向いてくれていれば良い」というケースがある。

Z軸が下を向いている

これは車のような例ではなく砲台のような例が挙げられる。

Z軸はとりあえず上をむいていれば良い。

この場合は入力のVectorは1つでよく、次のつなぎ方をする。

ノード例

  • 2つのAlign Euler to Vectorの整列軸には同じものを入れる
  • 2つのノードのVectorはどちらも同じものを入れる(緑玉のLocation)
  • 先のノードのPivotに元の位置を維持してほしい軸を入れる(Z軸)
  • 後のノードのPivotは上記のどちらでもない残りの軸を入れる。

この組み方にすることによりZ軸は初期の方向(上向き)をできる限り維持した状態でY軸が整列される。

緑玉を適当に動かしてもZ軸は上を向くようになっている。

上級:複数インスタンスを整列する時

次はInstancce on Pointsを整列する際によく起こる例。

まず、グリッドをポイントとして先程の矢印を複製してみる。

ノード例

これまでと同じように、緑玉に緑軸(Y軸)を向けている。

このノードを実行すると次のようなイメージと違う出力結果となる

向きが同じ

それぞれで角度を変化させたい

ここでやりたいのはすべての矢印を別々で緑玉へ向けることだ。

これは高校数学の範囲なので覚えている人もいるかもしれないが次の計算をする。

わかりやすい図

画像でマルでかこったインスタンスについての図でAベクトル - Bベクトル = Cベクトルとなる。

Aベクトルは緑玉の座標、Bベクトルはインスタンスの座標なので、次のノードを作れば良い。

演算例

こうすれば次のように各矢印が別々で緑玉の方向を向くようになる。

ZやX軸がバラバラなので直したい

上の例だとY軸は整列されたが、X軸とZ軸に整合性がなく微妙に変な角度に感じる。

そんなときは1つ前の項で解説した数珠つなぎにする方法を使うとXやZ軸も美しくなる事がある。

Spiralを使って、まずはAlign Euler to Vector1個だけの例だと

乱れているX軸、Y軸

X軸とY軸が乱れている箇所が気になる。

というわけで数珠つなぎにすると

数珠つなぎノード

整列された

おまけ:動かすと面白い

上の例は緑玉を動かすと不思議な動きをする。最後の例を掲載。

もっと例があるかも

このノードの可能性は非常に大きく、様々な使用例が考えられる。

ひとまず私が考えられる範囲で解説したが、これら以外でにも覚えておくべき使用例があるかもしれない。

とにかく中上級者には必須級のノードなので頑張って覚えてほしい。

さいごに

長い記事となった。

正直なところ数珠つなぎの例までいくと意味不明になったユーザーも多いと思う。

このあたりは暗記しないで「なんか2個繋いでる例あったなー」とおぼえておくだけでも、うまく整列できないときに「2個繋いでみよう」というアイデアにつながるはずだ。

頭の片隅に入れておくだけでも役に立つと思う。



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