X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=blender%2Fio_mspgl%2Fexport_mesh.py;h=b0f186dbc04f6d65b850871169fe1db2e13e2e38;hb=HEAD;hp=f54a05fd2a6c0b3f39844f16d294a0a57e6d0981;hpb=e8f17d44584e6d9c47f91ff7570ef839ef866b7b;p=libs%2Fgl.git diff --git a/blender/io_mspgl/export_mesh.py b/blender/io_mspgl/export_mesh.py index f54a05fd..b0f186db 100644 --- a/blender/io_mspgl/export_mesh.py +++ b/blender/io_mspgl/export_mesh.py @@ -1,23 +1,21 @@ -import itertools -import os -import bpy -import mathutils - class MeshExporter: - def export_mesh(self, context, mesh_or_obj, progress): + def export_mesh(self, ctx, mesh_or_obj): from .mesh import Mesh, create_mesh_from_object if type(mesh_or_obj)==Mesh: mesh = mesh_or_obj else: - progress.push_task("", 0.0, 0.9) - mesh = create_mesh_from_object(context, mesh_or_obj, progress) - progress.pop_task() + task = ctx.task("Preparing mesh", 0.9) + mesh = create_mesh_from_object(task, mesh_or_obj) from .datafile import Resource, Statement, Token resource = Resource(mesh.name+".mesh", "mesh") statements = resource.statements + task = ctx.task("Creating statements", 1.0) + + statements.append(Statement("winding", Token('COUNTERCLOCKWISE'))) + st = Statement("vertices", Token("VERTEX3_FLOAT")) stride = 12 if mesh.vertices[0].color: @@ -92,27 +90,14 @@ class MeshExporter: statements.append(st) - if mesh.use_strips: - for s in mesh.vertex_sequence: - st = Statement("batch", Token("TRIANGLE_STRIP")) - for i in range(0, len(s), 32): - st.sub.append(Statement("indices", *(v.index for v in s[i:i+32]))) - statements.append(st) - else: - st = Statement("batch", Token('TRIANGLES')) - for f in mesh.faces: - st.sub.append(Statement("indices", *(v.index for v in f.vertices))) + for b in mesh.batches: + st = Statement("batch", Token(b.primitive_type)) + if b.primitive_type=="PATCHES": + st.sub.append(Statement("patch_size", b.patch_size)) + for i in range(0, len(b.vertices), 32): + st.sub.append(Statement("indices", *(v.index for v in b.vertices[i:i+32]))) statements.append(st) - if mesh.lines: - st = Statement("batch", Token('LINES')) - for l in mesh.lines: - st.sub.append(Statement("indices", *(v.index for v in l.vertices))) - statements.append(st) - - if mesh.winding_test: - statements.append(Statement("winding", Token('COUNTERCLOCKWISE'))) - - progress.set_progress(1.0) + task.set_progress(1.0) return resource