извлекать и добавлять значения вращения в Maya Matrix - PullRequest
1 голос
/ 05 февраля 2020

Я пытаюсь понять основную c математику матрицы 4x4 в программном обеспечении Maya 3d, и я не могу найти ничего, достаточно специфичного для c моего сценария, который я могу понять.

У меня в основном есть объект с такой матрицей:

1 0 0 0
0 1 0 0
0 0 1 0 
0 0 0 1

Я знаю, что нижняя строка представляет переводы, а 1 в каждой строке - это значение масштаба.

Но .. если я поверну объект в X на 30 *, то получу такую ​​матрицу:

1  0      0    0
0  0.8    0.5  0
0  -0.5   0.8  0
0  0      0    1

Во-первых, как бы я go о математическом расчете значения вращения x, зная только матрицу?

Во-вторых, как мне go вычислить значение матрицы, основываясь только на знании поворотов, перемещений и масштаба трехмерного объекта?

1 Ответ

0 голосов
/ 07 февраля 2020

Говоря об Autodesk Maya, мы можем использовать API OpenMaya:

import maya.cmds as cmds
import maya.api.OpenMaya as om

# An object of interest:
object = "pCube1"
# Get the transform matrix as a list of 16 floats
m_list = cmds.xform(object, query=True, matrix=True)
# Create the MMatrix object
m = om.MMatrix(m_list)
# Get the MTransformationMatrix
mt = om.MTransformationMatrix(m)
# Get the rotations
rot = mt.rotation()
# Rotations in radians (as if rotated in the xyz order):
print rot.x, rot.y, rot.z
# Rotations in degrees:
print om.MAngle(rot.x).asDegrees(), om.MAngle(rot.y).asDegrees(), om.MAngle(rot.z).asDegrees()
...