Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2014
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.10 KB | None | 0 0
  1. import utils.api_tools as a_utils
  2. import maya.OpenMaya as om
  3. import maya.cmds as mc
  4.  
  5. def return_points(mesh):
  6.  
  7. # Get Points Positions
  8. local_points = om.MFloatPointArray()
  9. world_points = om.MFloatPointArray()
  10. mfn = a_utils.return_mfn_mesh( mesh )
  11. obj = a_utils.return_m_obj(mesh)
  12. mfn.getPoints(local_points,om.MSpace.kWorld)
  13. mfn.getPoints(world_points,om.MSpace.kObject)
  14. returner = {'vertex_cv':{}}
  15. for i in range(0 , local_points.length() ):
  16.  
  17. returner['vertex_cv'][i] = {'local': {'x':local_points[i].x , 'y':local_points[i].y , 'z':local_points[i].z} ,
  18. 'world': {'x':world_points[i].x , 'y':world_points[i].y , 'z':world_points[i].z}
  19. }
  20.  
  21. # Get Face Vertex Connections and Connected Vertices
  22. iter = om.MItMeshPolygon(obj)
  23. i = 0
  24. returner['vertex_connect'] = {}
  25. returner['face_vertex'] = {}
  26.  
  27. while(1):
  28. returner['vertex_connect'][i] = iter.polygonVertexCount()
  29.  
  30. int_array = om.MIntArray()
  31. iter.getConnectedVertices(int_array)
  32. returner['face_vertex'][i] = int_array
  33.  
  34.  
  35. i += 1
  36. iter.next()
  37. if iter.isDone():
  38. break
  39. return returner
  40.  
  41.  
  42. def get_uvs(mesh):
  43. mfn = a_utils.return_mfn_mesh( mesh )
  44. sets = []
  45. mfn.getUVSetNames(sets)
  46. returner = {}
  47. for set in sets:
  48. returner[set] = {}
  49. x = om.MFloatArray()
  50. y = om.MFloatArray()
  51. mfn.getUVs(x,y, set )
  52.  
  53. for i in range(0, x.length()-1):
  54. returner[set][i] = {'x': x[i] , 'y': y[i]}
  55.  
  56. return returner
  57.  
  58.  
  59. if __name__ == "__main__" or __name__.find("eclipsePython") != -1:
  60. get_uvs('pSphereShape1')
  61. points = return_points('pSphereShape1')
  62.  
  63.  
  64.  
  65. import pprint
  66. pprint.pprint(points)
  67.  
  68. num_vertices = len( points['vertex_cv'] )
  69. num_polygon = len( points['face_vertex'] )
  70. m_points = om.MPointArray()
  71. poly_counts = om.MIntArray()
  72. polygon_connects = om.MIntArray()
  73.  
  74. for i in sorted(points['vertex_cv']):
  75. m_points.append(
  76. points['vertex_cv'][i]['world']['x'],
  77. points['vertex_cv'][i]['world']['y'],
  78. points['vertex_cv'][i]['world']['z']
  79. )
  80. for i in sorted(points['vertex_connect']):
  81. #print points['vertex_connect'][i]
  82. poly_counts.append( points['vertex_connect'][i] )
  83.  
  84. for i in sorted(points['face_vertex']):
  85. for x in points['face_vertex'][i]:
  86. polygon_connects.append(x)
  87.  
  88. obj = a_utils.return_m_obj( 'null1' )
  89. dag = om.MFnMesh()
  90. print "num_vertices",num_vertices
  91. print "num_polygon",num_polygon
  92. print "m_points",m_points.length()
  93.  
  94. dag.create(
  95. num_vertices,
  96. num_polygon,
  97. m_points,
  98. poly_counts,
  99. polygon_connects,
  100. obj
  101. )
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109. print "fin"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement