refactoring and some code optimization

This commit is contained in:
Duccio 2018-05-15 15:57:46 +02:00
parent 42e1a46f04
commit b22b405dc3

View File

@ -31,10 +31,22 @@ class DracoTranslator(OpenMayaMPx.MPxFileTranslator):
drc = Draco() drc = Draco()
mesh = drc.decode(fileObject.fullName()) mesh = drc.decode(fileObject.fullName())
#vertices # vertices, normals, uvs
vertices = [] vertices = []
for i in range(0, mesh.vertices_len, 3): normals = []
us = OpenMaya.MFloatArray()
vs = OpenMaya.MFloatArray()
newMesh = None
fnMesh = OpenMaya.MFnMesh()
for n in range(mesh.vertices_num):
i = 3 * n
vertices.append(OpenMaya.MPoint(mesh.vertices[i], mesh.vertices[i + 1], mesh.vertices[i + 2])) vertices.append(OpenMaya.MPoint(mesh.vertices[i], mesh.vertices[i + 1], mesh.vertices[i + 2]))
if mesh.normals:
normals.append(OpenMaya.MFloatVector(mesh.normals[i], mesh.normals[i + 1], mesh.normals[i + 2]))
if mesh.uvs:
i = 2 * n
us.append(mesh.uvs[i])
vs.append(mesh.uvs[i + 1])
#indices #indices
indices = [] indices = []
@ -42,31 +54,18 @@ class DracoTranslator(OpenMayaMPx.MPxFileTranslator):
indices.append(index) indices.append(index)
poly_count = [3] * mesh.faces_num poly_count = [3] * mesh.faces_num
fnMesh = OpenMaya.MFnMesh() #create mesh
newMesh = None
#uv
if mesh.uvs: if mesh.uvs:
us = OpenMaya.MFloatArray()
vs = OpenMaya.MFloatArray()
for i in range(0, mesh.uvs_len, 2):
us.append(mesh.uvs[i])
vs.append(mesh.uvs[i + 1])
#TODO: ensure the mesh actually uses the uvs inside maya #TODO: ensure the mesh actually uses the uvs inside maya
newMesh = fnMesh.create(vertices, poly_count, indices, uValues=us, vValues=vs) newMesh = fnMesh.create(vertices, poly_count, indices, uValues=us, vValues=vs)
else: else:
newMesh = fnMesh.create(vertices, poly_count, indices) newMesh = fnMesh.create(vertices, poly_count, indices)
#normals
if mesh.normals: if mesh.normals:
normals = []
for i in range(0, mesh.normals_len, 3):
normals.append(OpenMaya.MFloatVector(mesh.normals[i], mesh.normals[i + 1], mesh.normals[i + 2]))
fnMesh.setVertexNormals(normals, range(len(vertices))) fnMesh.setVertexNormals(normals, range(len(vertices)))
fnMesh.updateSurface() fnMesh.updateSurface()
# Assign initial shading group
slist = OpenMaya.MGlobal.getSelectionListByName("initialShadingGroup") slist = OpenMaya.MGlobal.getSelectionListByName("initialShadingGroup")
initialSG = slist.getDependNode(0) initialSG = slist.getDependNode(0)