private void GetTransformPRS(string nameM3, out Vector3D pos, out Quaternion rot, out Matrix3x3 scale)
{
Maxscript.Command("bRot = inverse({0}.rotation)", nameM3);
Maxscript.Command("boneScTransMat = {0} * inverse({0}.rotation as matrix3)", nameM3);
Maxscript.Command("{0} = inverse({0}.rotation as matrix3) * {0}", nameM3);
Maxscript.Command("bPos = {0}.position", nameM3);
pos = new Vector3D(
Maxscript.QueryFloat("bPos.x"),
Maxscript.QueryFloat("bPos.y"),
Maxscript.QueryFloat("bPos.z"));
rot = new Quaternion(
Maxscript.QueryFloat("bRot.w"),
Maxscript.QueryFloat("bRot.x"),
Maxscript.QueryFloat("bRot.y"),
Maxscript.QueryFloat("bRot.z"));
scale = new Matrix3x3();
scale.A1 = Maxscript.QueryFloat("boneScTransMat.row1.x");
scale.A2 = Maxscript.QueryFloat("boneScTransMat.row1.y");
scale.A3 = Maxscript.QueryFloat("boneScTransMat.row1.z");
scale.B1 = Maxscript.QueryFloat("boneScTransMat.row2.x");
scale.B2 = Maxscript.QueryFloat("boneScTransMat.row2.y");
scale.B3 = Maxscript.QueryFloat("boneScTransMat.row2.z");
scale.C1 = Maxscript.QueryFloat("boneScTransMat.row3.x");
scale.C2 = Maxscript.QueryFloat("boneScTransMat.row3.y");
scale.C3 = Maxscript.QueryFloat("boneScTransMat.row3.z");
}