[Maya API] lesson25_MayaAPIでのポリゴン処理-MFnMesh / MItMesh

MFnMesh

関数:最も一般的に使用されるオブジェクトタイプの基本関数クラスとして、MFnMeshにはすべてのポリゴン操作メソッドが含まれています

機能:すべてのポリゴン情報を収集し、ポリゴンを編集できます

主にMFnMeshを使用してポリゴンのクエリと編集を行い、すべてのポリゴンで彼の方法を使用できます

ヘルプドキュメントから次のことがわかります。

パラメータを渡さずにMFnMeshを作成できます。次に、既存のポリゴンを渡してからMFnMeshを生成することもできます。

次に、空のポリゴンを渡します。実際には何も表示されません。また、createメソッドを使用してこのポリゴンを作成する必要があります。実際、既存のシーンでは、直接渡すことができます。 MObjectまたは彼のMDagPathを渡します。

最も基本的な球体を使用します。最初にpymelとOpenMayaをインポートします。

mfn = OpenMaya.MFMeshを定義します

import maya.OpenMaya as OpenMaya
import pymel.core as pm

mfn = OpenMaya.MFnMesh(pm.PyNode('pSphere1').__apiobject__())
# 生成一个MFnMesh,我们定义了这个实例,实力就与这个物体已经绑定上了,就可以对他进行查询和编辑了

mfn.numVertices()  # 查询他有多少个点,一个基本的球,就有382个点

mfn.numEdges() # 查询他有多少根线

mfn.numPolygon  # 查询他有多少个面

point = OpenMaya.MPoint(0, 2, 0)  #定义一个MPoint,存放点的坐标

mfn.setPoint(100, point)  # 需要一个ID和MPoint 设置索引为100的点的坐标为MPoint里面的数值


print(point.x, point.y, point.z)

MItMesh

ポリゴンの反復子にはいくつかのタイプがあります。

MItMeshVertex、MItMeshEdge、MItMeshFaceVertexを使用できます。実際、最も使用するのはVertex、Polygon、Edgeです。

ポイント、ライン、サーフェスを操作できます。これは実際にはニーズに十分です。

ポイントイテレーターを生成する場合は、MDagPathではなくMObjectのみを渡すことができるため、ここではオブジェクトからMObjectを生成し、それを彼女に渡す必要があります。そのメソッドを使用できます。

import maya.OpenMaya as OpenMaya
import pymel.core as pm


iterator = OpenMaya.MItMeshVertex(pm.PyNode('pSphereShape1').__apimobject__())

while not iterator.isDone():
    
    point = iterator.position()
    
    print point.x, point.y, point.z
    
    point = OpenMaya.MPoint(0, 0, 0)
    
    iterator.setPosition(point)
    iterator.next()

ここで、pSphere1は変換であり、実際には彼の形状を渡す必要があります。pSphereShape1は、__ apiobject__を直接使用してMDagPathを生成し、次にMObjectを直接追加してから、OpenMaya.MObejct、反復子を生成します。 .countが返すのはポイントの数です。これは、イテレーターでは実際に特定のポイントをターゲットにしているため、常に彼の総数、setpositionを要求するためです。

 

MItMesh

さまざまなコンポーネントを反復するために使用できる4つの異なる反復子があります

MItMeshEdge

MItFaceVertex

MItMeshPloygon

MItMeshVertex

 

おすすめ

転載: blog.csdn.net/weixin_41363156/article/details/104506626