[3dsMax]ノード変換行列について


位置、回転、スケールを別々のオブジェクトから取り出し、合成する。
実行後の白ティーポットは赤の位置、緑の回転、青のスケールで構成されている。

 ノード変換行列 = コントローラのスケール * コントローラの回転 * コントローラの位置

赤ティーポットからは位置を取得
緑ティーポットからは回転を取得
青ティーポットからはスケールを取得

変換行列 = スケール行列 × 回転行列 × 位置

白ティーポットに合成した変換行列を割り当てる

●スクリプト

iti = transMatrix $teapot01.pos --赤ティーポット
kaiten = (inverse $teapot02.rotation) as matrix3 --緑ティーポット
kakusyuku = scaleMatrix $teapot03.scale --青ティーポット

gousei =  kakusyuku * kaiten * iti
$teapot04.transform = gousei --白ティーポット
●要点
・回転を取り出す際にinverseメソッドで反転している理由。
3dsMax内部では、回転は逆向きで扱われているため。
↓公式ヘルプから引用

内部的には 3ds Max は 左手規則 を使用して回転をノード行列に保存します。
transform および objectTransform プロパティを使用して、
直接ノード変換行列の作業をするときは、
この逆転を覚えておくことが重要になります。
3ds Max の回転と MAXScript の標準の回転を両方使用するときは、
回転を逆にする必要があります

●公式ヘルプへのリンク
AUTODESK 3DS MAX 2017 ヘルプ
ノード変換プロパティの使い方
Matrix3 値

広告

コメントを残す

メールアドレスが公開されることはありません。

スパム対策用の計算式と画像認証です。↓の欄を入力しないとコメントが出来ません。 *

*