| 使用ソフトウェア | バージョン | 備考 |
|---|---|---|
| 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 Vector1個だけの例だと
X軸とY軸が乱れている箇所が気になる。
というわけで数珠つなぎにすると
上の例は緑玉を動かすと不思議な動きをする。最後の例を掲載。
このノードの可能性は非常に大きく、様々な使用例が考えられる。
ひとまず私が考えられる範囲で解説したが、これら以外でにも覚えておくべき使用例があるかもしれない。
とにかく中上級者には必須級のノードなので頑張って覚えてほしい。
長い記事となった。
正直なところ数珠つなぎの例までいくと意味不明になったユーザーも多いと思う。
このあたりは暗記しないで「なんか2個繋いでる例あったなー」とおぼえておくだけでも、うまく整列できないときに「2個繋いでみよう」というアイデアにつながるはずだ。
頭の片隅に入れておくだけでも役に立つと思う。
