位置、回転、スケールを別々のオブジェクトから取り出し、合成する。
実行後の白ティーポットは赤の位置、緑の回転、青のスケールで構成されている。
ノード変換行列 = コントローラのスケール * コントローラの回転 * コントローラの位置
赤ティーポットからは位置を取得
緑ティーポットからは回転を取得
青ティーポットからはスケールを取得
変換行列 = スケール行列 × 回転行列 × 位置
白ティーポットに合成した変換行列を割り当てる
●スクリプト
iti = transMatrix $teapot01.pos --赤ティーポット kaiten = (inverse $teapot02.rotation) as matrix3 --緑ティーポット kakusyuku = scaleMatrix $teapot03.scale --青ティーポット gousei = kakusyuku * kaiten * iti $teapot04.transform = gousei --白ティーポット
●要点
・回転を取り出す際にinverseメソッドで反転している理由。
3dsMax内部では、回転は逆向きで扱われているため。
↓公式ヘルプから引用
・回転を取り出す際にinverseメソッドで反転している理由。
3dsMax内部では、回転は逆向きで扱われているため。
↓公式ヘルプから引用
内部的には 3ds Max は 左手規則 を使用して回転をノード行列に保存します。
transform および objectTransform プロパティを使用して、
直接ノード変換行列の作業をするときは、
この逆転を覚えておくことが重要になります。
3ds Max の回転と MAXScript の標準の回転を両方使用するときは、
回転を逆にする必要があります
transform および objectTransform プロパティを使用して、
直接ノード変換行列の作業をするときは、
この逆転を覚えておくことが重要になります。
3ds Max の回転と MAXScript の標準の回転を両方使用するときは、
回転を逆にする必要があります
●公式ヘルプへのリンク
AUTODESK 3DS MAX 2017 ヘルプ
ノード変換プロパティの使い方
Matrix3 値