- def __init__(self):
- self.show_progress = True
- self.use_strips = True
- self.use_degen_tris = False
-
- def join_strips(self, strips):
- big_strip = []
-
- for s in strips:
- if big_strip:
- # Generate glue elements, ensuring that the next strip begins at
- # an even position
- glue = [big_strip[-1], s[0]]
- if len(big_strip)%2:
- glue += [s[0]]
-
- big_strip += glue
-
- big_strip += s
-
- return big_strip
-
- def export(self, context, out_file, obj=None, progress=None):
- if obj is None:
- obj = context.active_object
-
- from .mesh import create_mesh_from_object
- from .util import Progress
-
- if not progress:
- progress = Progress(self.show_progress and context)
- progress.push_task("", 0.0, 0.9)
-
- mesh = create_mesh_from_object(context, obj, progress)
-
- strips = []
- loose = mesh.faces
- if self.use_strips:
- strips = mesh.vertex_sequence
- if self.use_degen_tris:
- strips = [self.join_strips(strips)]
- loose = []
-
- progress.set_task("Writing file", 0.9, 1.0)
-
- from .outfile import open_output
- out_file = open_output(out_file)
-
- fmt = ["NORMAL3"]
+ 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:
+ 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)
+
+ st = Statement("vertices", Token("VERTEX3_FLOAT"))
+ stride = 12
+ if mesh.vertices[0].color:
+ st.append(Token("COLOR4_UBYTE"))
+ stride += 4