【发布时间】:2017-08-01 13:53:56
【问题描述】:
我正在尝试创建一个脚本,用于在 Maya 中跨 yz 平面镜像变换。
我能够建立一个节点网络来获得所需的结果。我在 sz 设置为 -1 的原点处取了一个节点,并从左侧取了一个源节点(用于此测试的 lf_grp),并将它们的 worldMatrix attrs 输入到 multMatrix 节点中。然后我将输出 (multMatrix.matrixSum) 通过分解矩阵传递到我的目标节点。
我真的不想创建一堆节点来做我的镜像 - 每次运行创建/连接/断开/删除周期是缓慢而痛苦的......我宁愿只是“算出废话”它”通过我的脚本,但我似乎无法弄清楚如何实际将我的两个矩阵相乘......
哦,我正在使用 MTransformationMatrix,因为它为您处理了一些 MMatrix 没有的事情 - 比如旋转顺序(至少从我读过的...)
感谢您提供的任何帮助!
import maya.cmds as mc
import maya.OpenMaya as om
src_xfm = 'lf_grp'
mir_matrix_vals = [-1.0, -0.0, -0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0]
# get src xfm matrix
#
selList = om.MSelectionList()
selList.add(src_xfm)
mDagPath = om.MDagPath()
selList.getDagPath(0, mDagPath)
src_xfmFn = om.MFnTransform(mDagPath)
src_matrix = src_xfmFn.transformation()
# construct mir xfm matrix
#
mir_matrix = om.MTransformationMatrix()
tmp_matrix = om.MMatrix()
om.MScriptUtil().createMatrixFromList(mir_matrix_vals, tmp_matrix)
mir_matrix = om.MTransformationMatrix(tmp_matrix)
# multiply matrices to get mirrored matrix
#
dst_matrix = src_matrix * mir_matrix # HOW DO YOU DO THIS????
【问题讨论】:
-
忘了说我不想使用 pymel...