Maya Python:应用变换矩阵
我一直在寻找这个答案,但我似乎没有找到答案,所以我希望我能在这里得到我的答案 我在Maya Python API中,我想将变换矩阵应用于网格 这是我制作网格的方式:Maya Python:应用变换矩阵,python,matrix,maya,Python,Matrix,Maya,我一直在寻找这个答案,但我似乎没有找到答案,所以我希望我能在这里得到我的答案 我在Maya Python API中,我想将变换矩阵应用于网格 这是我制作网格的方式: mesh = om.MFnMesh() ShapeMesh = cmds.group(em=True) parentOwner = get_mobject( ShapeMesh ) meshMObj = mesh.create(NumVerts, len(FaceCount), VertArray,
mesh = om.MFnMesh()
ShapeMesh = cmds.group(em=True)
parentOwner = get_mobject( ShapeMesh )
meshMObj = mesh.create(NumVerts, len(FaceCount), VertArray, FaceCount, FaceArray ,parentOwner)
cmds.sets( ShapeMesh, e=True,forceElement='initialShadingGroup')
defaultUVSetName = ''
defaultUVSetName = mesh.currentUVSetName(-1)
mesh.setUVs ( UArray, VArray, defaultUVSetName )
mesh.assignUVs ( FaceCount, FaceArray, defaultUVSetName )
以下是我创建TFM的方式:
m = struct.unpack("<16f",f.read(64))
mm = om.MMatrix()
om.MScriptUtil.createMatrixFromList(m,mm)
mt = om.MTransformationMatrix(mm)
现在,我的最后一步是将此矩阵应用于网格,但我找不到一个好方法,有人知道如何在maya上执行此操作吗
提前感谢:
Seyren.不确定将矩阵应用于网格是什么意思,但如果您希望通过使用该矩阵变换来更新每个点的位置,则可以使用给定的MFnMesh
网格
和给定的MMatrix矩阵
:
import banana.maya
banana.maya.patch()
from maya import OpenMaya
mesh = OpenMaya.MFnMesh.bnn_get('pCubeShape1')
matrix = OpenMaya.MMatrix()
points = OpenMaya.MPointArray()
mesh.getPoints(points)
for i in range(points.length()):
points.set(points[i] * matrix, i)
mesh.setPoints(points)
如果不想直接更新网格的点,则需要通过检索其父变换并使用MFnTransform::set()
方法将矩阵应用于变换节点
请注意,我在代码片段中使用了我编写的一组扩展,如果您使用的是Maya Python API,这可能会有所帮助。代码在上提供,它还附带了一个示例,让您了解一些情况。网格没有变换,而是变换的父节点。为什么要用api命令来做这件事呢?我的意思是,cmds.xform在这方面做得很好,您不需要实现撤销。现在我们来了,您知道如何使用API从特定顶点查询矩阵吗?我知道如何获取点,以及在世界空间中的每一个转换,与MMatrix相同,我知道如何从和对象查询矩阵,但我需要从每个顶点执行,提前感谢
import banana.maya
banana.maya.patch()
from maya import OpenMaya
mesh = OpenMaya.MFnMesh.bnn_get('pCubeShape1')
matrix = OpenMaya.MMatrix()
points = OpenMaya.MPointArray()
mesh.getPoints(points)
for i in range(points.length()):
points.set(points[i] * matrix, i)
mesh.setPoints(points)