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