使用ソフトウェア | バージョン | 備考 |
---|---|---|
Blender | 3.3.1 |
この記事はAlign Euler to Vector
ノード解説の後編になる。
前回解説しなかったRotation
の入力ソケットを重点的に解説。
このノードの重要な点は前回の記事で解説している。
まだ読んでいない場合はそちらから読んだほうが分かりやすいと思う。
Align Euler toVector(オイラーをベクトルに整列)ノードを解説:前編【Blender - Geometry Nodes】 | 謎の技術研究部
この記事では前回と同じ作例を使って解説していく。
おさらいとしてノード例と結果を掲載。
矢印のジオメトリがありAlign Euler to Vector
によってZ軸が青球にひっぱられている。
前回は上のXYZ
で指定した軸が、ゴム(Vector
)で引っ張られるイメージとした。
本題に入る前に覚えておきたい知識。
入力ソケットは前回書いた通りRotation
同士でつなげるのが基本
ラジアン(オイラー角)という少し特殊な値が入るため。
したがって、この入力によく使うノードの繋げ方は
Rotate Euler
から繋ぐパターンAlign Euler to Vector
を2連で繋ぐパターンといったケースでよく見かける。
間違えてVectorを直接繋がないように気をつけよう。
他にもパターンはある。あくまでよく使う一例。
またラジアン値と分かって使うならVector
から繋いでも良い(この記事でも一部使用)
順を追って理解していく。
このノードのVector
に0, 0, 0
を入れるとどうなるのかを知っておく。
これは簡単な話で何も起こらない = 回転しない。
これは公式Docにも記載がある。
つまりVector
に0
を入れるということは整列はしないということだ。
ではこれは無意味なのかというとそういうわけではない。
この状態でRotation
に角度を入れてみると
指定した軸で回転する。
そしてこれは、次と全く同じ回転になる。
上の例と全く同じになる。
Align Euler to Vector
の本目的を「軸を整列させる回転」とするとRotation
は「それとは別の回転処理」となる。
言い方を変えればとりあえずここに繋いだ角度がそのまま回転されるということ。
上の例で整列処理とは関係なく、入力されたRotation
だけ回転していることがわかった。
ここで重要なのがこれが「整列処理が行われる前で実行される」ということだ。
つまり内部で一旦Rotationの角度で回転させた後でXYZ
で指定した軸をVector
に向けるというアルゴリズムとなる。
では具体的にRotation
とVector
を同時に入力すると何ができるのだろうか。
結論から言えばPivotを先に回転して固定する
という効果がある。
実際に例を見てみる
まずはRotation
だけ入力する(Vector
は未接続)
当然、メッシュはY
とZ
軸で傾く。
次に青玉のLocation
をVector
に接続するとどうなるか。
ここで整列の軸 = Z
, Pivot = X
であることに注目しておこう。
青球を動かした動画が次。
右下に傾いたPivot
のX
軸が固定された状態で軸に設定しているZ
の先端が青球を追いかけている。
Pivot
に設定した軸は通常は初期位置で固定されてしまう。
しかし2つの入力を組み合わせることでPivotだけ先に回転して固定ということができるようになった。
このときPivot
をAuto
にしたらどうなるの?と思うかもしれないが、これはNG。
Auto
にしてしまうと前処理の回転が整列処理によって結局引っ張られてしまって意味がないものになる。
ここは詳しく説明すると混乱するので
RotationとVectorを同時に接続するときはPivotを必ず設定する
とひとまず覚える。
厳密にはAuto
意味がないわけではなく、わずかに回転が変わってくる。
ただし、現時点ではAuto
にしたつなぎ方に意味を感じないので覚えなくて良いと考える。
上でPivot
を必ず設定しようと書いたがそれは嘘だ。
実は例外があるので次の項で解説。
上級者の作例を見ているとAlign Euler to Vector
を連続で2つ接続するというパターンをときどき見かける。
ここからは構造が複雑になるので私が知る限りの実例掲載に留める。
どうしてそういう回転になるのか気になる場合は各自で考えてみてほしい。
例えば次の例を見てみる。
Y
軸をAuto
で整列しているだけだが
緑玉が少し動くだけでZ
軸とX
軸が大きく回転してしまう箇所が発生する。
これは例えば車のようなオブジェクトを走らせる例だと、上り坂に入ったときに横転倒しているような動きをしてしまう。
というわけで次のノードに変更すると良い。
このように数珠つなぎにすると次のような動作になる(車で考える)
動画で確認する
このように単純に一つの軸を整列すれば良いだけでなく、残りの軸の傾きも調整したい場合は数珠つなぎにすると良い。
上の例ではVector
に入ってきているソースが2つ(赤と緑)あるということに注目。
次の例ではVector
のソースを一つにする例。
上の例ではX
軸を整列した後に、Y
軸で第二の調整を行っている。
しかし、そこまで厳密な調整は必要なく「とりあえずZ
軸が上を向いてくれていれば良い」というケースがある。
これは車のような例ではなく砲台のような例が挙げられる。
Z
軸はとりあえず上をむいていれば良い。
この場合は入力のVector
は1つでよく、次のつなぎ方をする。
Align Euler to Vector
の整列軸には同じものを入れるVector
はどちらも同じものを入れる(緑玉のLocation
)Pivot
に元の位置を維持してほしい軸を入れる(Z
軸)Pivot
は上記のどちらでもない残りの軸を入れる。この組み方にすることによりZ軸は初期の方向(上向き)をできる限り維持した状態でY軸が整列される。
緑玉を適当に動かしてもZ
軸は上を向くようになっている。
次はInstancce on Points
を整列する際によく起こる例。
まず、グリッドをポイントとして先程の矢印を複製してみる。
これまでと同じように、緑玉に緑軸(Y軸)を向けている。
このノードを実行すると次のようなイメージと違う出力結果となる
ここでやりたいのはすべての矢印を別々で緑玉へ向けることだ。
これは高校数学の範囲なので覚えている人もいるかもしれないが次の計算をする。
画像でマルでかこったインスタンスについての図でAベクトル - Bベクトル = Cベクトル
となる。
Aベクトルは緑玉の座標、Bベクトルはインスタンスの座標なので、次のノードを作れば良い。
こうすれば次のように各矢印が別々で緑玉の方向を向くようになる。
上の例だとY軸は整列されたが、X軸とZ軸に整合性がなく微妙に変な角度に感じる。
そんなときは1つ前の項で解説した数珠つなぎにする方法を使うとXやZ軸も美しくなる事がある。
Spiral
を使って、まずはAlign Euler to Vector
1個だけの例だと
X軸とY軸が乱れている箇所が気になる。
というわけで数珠つなぎにすると
上の例は緑玉を動かすと不思議な動きをする。最後の例を掲載。
このノードの可能性は非常に大きく、様々な使用例が考えられる。
ひとまず私が考えられる範囲で解説したが、これら以外でにも覚えておくべき使用例があるかもしれない。
とにかく中上級者には必須級のノードなので頑張って覚えてほしい。
長い記事となった。
正直なところ数珠つなぎの例までいくと意味不明になったユーザーも多いと思う。
このあたりは暗記しないで「なんか2個繋いでる例あったなー」とおぼえておくだけでも、うまく整列できないときに「2個繋いでみよう」というアイデアにつながるはずだ。
頭の片隅に入れておくだけでも役に立つと思う。