feat: bmesh based mesh dumper

This commit is contained in:
Swann Martinez
2019-07-08 16:19:31 +02:00
parent 06f7c2422c
commit f8d83001d0

View File

@ -668,6 +668,55 @@ def dump_image(image):
logger.error("image format not supported") logger.error("image format not supported")
return pixels return pixels
def dump_mesh(mesh, data={}):
import bmesh
mesh_data = data
mesh_buffer = bmesh.new()
mesh_buffer.from_mesh(mesh)
uv_layer = mesh_buffer.loops.layers.uv.verify()
bevel_layer = mesh_buffer.verts.layers.bevel_weight.verify()
skin_layer = mesh_buffer.verts.layers.skin.verify()
verts = {}
for vert in mesh_buffer.verts:
verts[vert.index]['co'] = vert.co.xyz
# vert metadata
verts[vert.index]['bevel'] = vert[bevel_layer]
verts[vert.index]['skin'] = vert[skin_layer]
mesh_data["verts"] = verts
edges = {}
for edge in mesh_buffer.edges:
edges[edge.index]["verts"] = [edge.verts[0].index,edge.verts[1].index]
# Edge metadata
edges[edge.index]["smooth"] = edge.smooth
mesh_data["edges"] = edges
faces = {}
for face in mesh_buffer.faces:
fverts = []
for vert in face.verts:
fverts.append(vert.index)
faces[face.index]["verts"] = fverts
# Face metadata
for loop in face.loops:
loop_uv = loop[uv_layer]
faces[face.index]["uv"]
faces[face.index]["uv"] = loop_uv.uv
print(loop_uv.uv)
return mesh_data
def init_client(key=None): def init_client(key=None):
client_dict = {} client_dict = {}