当前位置:   article > 正文

[Maya API] lesson25_Maya API 中的多边形处理 - MFnMesh/MItMesh_maya api mesh

maya api mesh

MFnMesh

功能:作为最常用物体类型的基础函数类,MFnMesh包含了所有的polygon操作方法

特性:可以采集所有的polygon信息以及编辑polygon

我们主要使用MFnMesh进行查询和编辑多边形,所有的多边形都可以使用他的方法

从帮助文档中可以看到:

我们可以不传入任何参数,创建一个MFnMesh,那么我们也可以把现有的多边形传进去,然后来生成一个MFnMesh。

那么我们传进去一个空的呢,实际上是没有任何的东西出现的,我们还需要使用create方法,来把这个多边形创建出来,实际上对于我们现有的场景,我们呢直接就可以传入他的MObject或者传入他的MDagPath就可以了

我们使用最基本的一个球体,首先导入pymel和OpenMaya,

定义mfn = OpenMaya.MFMesh

  1. import maya.OpenMaya as OpenMaya
  2. import pymel.core as pm
  3. mfn = OpenMaya.MFnMesh(pm.PyNode('pSphere1').__apiobject__())
  4. # 生成一个MFnMesh,我们定义了这个实例,实力就与这个物体已经绑定上了,就可以对他进行查询和编辑了
  5. mfn.numVertices() # 查询他有多少个点,一个基本的球,就有382个点
  6. mfn.numEdges() # 查询他有多少根线
  7. mfn.numPolygon # 查询他有多少个面
  8. point = OpenMaya.MPoint(0, 2, 0) #定义一个MPoint,存放点的坐标
  9. mfn.setPoint(100, point) # 需要一个ID和MPoint 设置索引为100的点的坐标为MPoint里面的数值
  10. print(point.x, point.y, point.z)

MItMesh

关于多边形的迭代器,有好几种:

我们可以使用MItMeshVertex、MItMeshEdge、MItMeshFaceVertex,实际上我们用的最多的就是Vertex、Polygon、Edge

点线面我们都可以操作了,实际上已经够我们的需求了

我们要生成一个点的迭代器,我们就只能传入一个MObject,就不能传入MDagPath,所以在这里我们要把我们的物体生成一个MObject,然后再传给她,可以使用它的方法

  1. import maya.OpenMaya as OpenMaya
  2. import pymel.core as pm
  3. iterator = OpenMaya.MItMeshVertex(pm.PyNode('pSphereShape1').__apimobject__())
  4. while not iterator.isDone():
  5. point = iterator.position()
  6. print point.x, point.y, point.z
  7. point = OpenMaya.MPoint(0, 0, 0)
  8. iterator.setPosition(point)
  9. iterator.next()

在这里pSphere1是一个transform,实际上我们要传入他的shape了:pSphereShape1,我们直接使用__apiobject__生成的是一个MDagPath,那么我们直接加上MObject,那么他生成的就是一个OpenMaya.MObejct,iterator.count返回的的就是点的数量,因为在迭代器里面,我们实际上是针对的某一个点,所以说我们一直求他的总数量,setposition

 

MItMesh

共有四种不同的迭代器可以使用,可以迭代不同的组件

MItMeshEdge

MItFaceVertex

MItMeshPloygon

MItMeshVertex

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/418523
推荐阅读
相关标签
  

闽ICP备14008679号