はじめに
サンプルを見ていたら使われていたのでドキュメントを見てみる
参照元
Matrix Track To
機能
Track & Up ベクトルのセットによって定義された位置,スケール,回転が与えられると,変換行列を生成します.
Track/Up Axes “と “Track/Up Mapping “設定では、X,Y,Z 軸のうちの任意の 2 つの軸を Track 軸と Up 軸に設定し、2 つの入力ベクトル A と B のいずれか (またはそれらの負の軸) にマッピングすることができます。これらのドロップダウンリストにリストされた最初の軸は Track Axis / Vectorで、2 番目の軸は Up Axis / Vectorです。
トラック軸に選択された軸(”Track/Up Axes “選択の最初の文字=Track)はトラックベクトルに沿って正確に方向づけられ(”Track/Up mapping “に基づいてトラックベクトルがマッピングされた方がなんであれ)、アップ軸に選択された軸(”Track/Up Axes “選択の2番目の文字=Up)はアップベクトルに沿っておおよその方向づけられます(”Track/Up mapping “選択に基づいてアップベクトルがマッピングされた方が何であれ)。A と B 入力が互いに直交している場合、Track 軸と Up 軸は選択された Track/Up ベクトルに沿って正確に配向されますが、そうでなければ、 Up 軸はほぼ Up ベクトルに向かって、Track 軸に垂直で、AB 平面内に存在する方向にしかなりません。3 番目の軸(X,Y,Z)は、他の 2 つの軸との交差積によって決定され、正規直交系の右回りのXYZ 座標系を提供します。
入力
すべての入力はベクトル化されます。単一、複数の値を受け付けます。
- Location
- Scale
- A
- B
パラメータ
- Track/Up Axes どの軸をトラックとアップ軸にするかの選択
- Track/Up Mapping TrackとUpベクトルを入力されたAまたはBのどちらかまたは逆の値にマップする
- Location 出力行列の位置成分
- Scale 出力行列のスケール成分
- A 最初のベクトル(TrackまたはUpに割り当てられる)
- B 2番めのベクトル(TrackまたはUpに割り当てられる)
その他のパラメータ
プロパティパネルからアクセス可能。これらのパラメータは外部の入力を受け付けません
- Normalize Vector 出力する行列のXYZベクトルと回転要素を正規化します。Trueがデフォルトで、OFFは最適化計算が必要ない場合に使用します。
- Flat Output 最初のレベルに結合して、他のノードに差し込むことができる正規の行列リスト([M,M,…])を出力します。無効化されている場合はオリジナルの構造を保ちます。初期値は有効になっています。
出力
Matrix XYZ. すべての出力は接続された時に生成されます。
Matrixは与えられた位置、回転、スケール:m = T * R * Sで構成される4×4行列と同質です[1]
XYZはTrackとUp軸に方向づけられた直行ベクトルです。[2]
[1] プロパティパネルの”Normalize Vector“がONの時のみ回転成分は正規直行です。
[2] プロパティパネルの”Normalize Vector“がONの時のみ軸は正規直行です。OFFならただ直行です。
さらに
数学にそこまで詳しくないのでかなり難しい。という事でチュートリアル動画も見る
Matrix normalで同じ効果が得られる
まとめ
自分なりにまとめてみる
- LocationとScaleは単純で移動先とサイズの設定
- XY と ABはこのように考える
- XYと書かれたコンボボックスのうち1文字目(この場合X)がA方向に向く
- XYと書かれたコンボボックスのうち2文字目(この場合Y)がB方向を左右とする
スザンヌを配置すると顔の正面は-YにありX軸が横になっている
適当に配置したエンプティにスザンヌの顔を向かせたい場合
このようになる
ためにしBを 0, 0, 1 とした場合
- X軸はBにマッピングされ回転している事がわかる
このような対応関係がある。ドキュメントを読めばそのような事が書いてあるけどこれは難しかった。
一つ留意して置かなければならない事はエンプティーがX方向でマイナスにある時
スザンヌも反対に向いてしまう。
これを解決するためには方法は2つ。
- -A-Bとする
または
- BのVectorを (0, -1, 0) とする
最後に
すっきり
コメント
[…] オブジェクトの回転をノードから行えるものにMatrix Track To やMatrix Normalがあります。Rotation differenceも似たような事が出来そうなので理解の為にノードを見てみます […]