mirror of
https://git.mirrors.martin98.com/https://github.com/google/draco
synced 2025-08-12 02:09:01 +08:00
refactoring and some code optimization
This commit is contained in:
parent
42e1a46f04
commit
b22b405dc3
@ -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)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user