Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import utils.api_tools as a_utils
- import maya.OpenMaya as om
- import maya.cmds as mc
- def return_points(mesh):
- # Get Points Positions
- local_points = om.MFloatPointArray()
- world_points = om.MFloatPointArray()
- mfn = a_utils.return_mfn_mesh( mesh )
- obj = a_utils.return_m_obj(mesh)
- mfn.getPoints(local_points,om.MSpace.kWorld)
- mfn.getPoints(world_points,om.MSpace.kObject)
- returner = {'vertex_cv':{}}
- for i in range(0 , local_points.length() ):
- returner['vertex_cv'][i] = {'local': {'x':local_points[i].x , 'y':local_points[i].y , 'z':local_points[i].z} ,
- 'world': {'x':world_points[i].x , 'y':world_points[i].y , 'z':world_points[i].z}
- }
- # Get Face Vertex Connections and Connected Vertices
- iter = om.MItMeshPolygon(obj)
- i = 0
- returner['vertex_connect'] = {}
- returner['face_vertex'] = {}
- while(1):
- returner['vertex_connect'][i] = iter.polygonVertexCount()
- int_array = om.MIntArray()
- iter.getConnectedVertices(int_array)
- returner['face_vertex'][i] = int_array
- i += 1
- iter.next()
- if iter.isDone():
- break
- return returner
- def get_uvs(mesh):
- mfn = a_utils.return_mfn_mesh( mesh )
- sets = []
- mfn.getUVSetNames(sets)
- returner = {}
- for set in sets:
- returner[set] = {}
- x = om.MFloatArray()
- y = om.MFloatArray()
- mfn.getUVs(x,y, set )
- for i in range(0, x.length()-1):
- returner[set][i] = {'x': x[i] , 'y': y[i]}
- return returner
- if __name__ == "__main__" or __name__.find("eclipsePython") != -1:
- get_uvs('pSphereShape1')
- points = return_points('pSphereShape1')
- import pprint
- pprint.pprint(points)
- num_vertices = len( points['vertex_cv'] )
- num_polygon = len( points['face_vertex'] )
- m_points = om.MPointArray()
- poly_counts = om.MIntArray()
- polygon_connects = om.MIntArray()
- for i in sorted(points['vertex_cv']):
- m_points.append(
- points['vertex_cv'][i]['world']['x'],
- points['vertex_cv'][i]['world']['y'],
- points['vertex_cv'][i]['world']['z']
- )
- for i in sorted(points['vertex_connect']):
- #print points['vertex_connect'][i]
- poly_counts.append( points['vertex_connect'][i] )
- for i in sorted(points['face_vertex']):
- for x in points['face_vertex'][i]:
- polygon_connects.append(x)
- obj = a_utils.return_m_obj( 'null1' )
- dag = om.MFnMesh()
- print "num_vertices",num_vertices
- print "num_polygon",num_polygon
- print "m_points",m_points.length()
- dag.create(
- num_vertices,
- num_polygon,
- m_points,
- poly_counts,
- polygon_connects,
- obj
- )
- print "fin"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement