]> git.tdb.fi Git - libs/gl.git/commitdiff
Allow flagging meshes for winding test in Blender
authorMikko Rasa <tdb@tdb.fi>
Mon, 23 Nov 2015 16:18:21 +0000 (18:18 +0200)
committerMikko Rasa <tdb@tdb.fi>
Mon, 23 Nov 2015 16:18:21 +0000 (18:18 +0200)
blender/io_mspgl/__init__.py
blender/io_mspgl/export_mesh.py
blender/io_mspgl/properties.py

index 2c9d8f721a6bb7cec65d04a9159933ffadc5ff64..c13345fafa224bdc69b1b7987ee59778f395d8ae 100644 (file)
@@ -171,7 +171,7 @@ def menu_func_export(self, context):
        self.layout.operator(ExportMspGLArmature.bl_idname, text="Msp GL armature")
        self.layout.operator(ExportMspGLScene.bl_idname, text="Msp GL scene")
 
-from .properties import MspGLProperties
+from .properties import MspGLMeshProperties, MspGLObjectProperties
 
 def register():
        bpy.utils.register_module(__name__)
index 07f457a1e36720c06ee27475fd4176924f07a669..8f86888249b86951b443f52a4f8ee27f6b8a0217 100644 (file)
@@ -230,7 +230,10 @@ class MeshExporter:
 
                mesh = None
                bmeshes = []
+               winding_test = False
                for o, m in objs:
+                       if o.data.winding_test:
+                               winding_test = True
                        bmesh = o.to_mesh(context.scene, True, "PREVIEW")
                        bmeshes.append(bmesh)
                        me = Mesh(bmesh)
@@ -387,6 +390,9 @@ class MeshExporter:
                                out_file.write("indices", l.vertices[0].index, l.vertices[1].index)
                        out_file.end()
 
+               if winding_test:
+                       out_file.write("winding", "COUNTERCLOCKWISE")
+
                if progress:
                        progress.set_task("Done", 1.0, 1.0)
 
index 30aed9a906187bf132c6319a590893e01fd07ecd..129b02e64829b125cd5ffe76e2a4f93b112d0f1d 100644 (file)
@@ -1,6 +1,22 @@
 import bpy
 
-class MspGLProperties(bpy.types.Panel):
+class MspGLMeshProperties(bpy.types.Panel):
+       bl_idname = "MESH_PT_mspgl_properties"
+       bl_label = "MspGL properties"
+       bl_space_type = "PROPERTIES"
+       bl_region_type = "WINDOW"
+       bl_context = "data"
+
+       @classmethod
+       def poll(cls, context):
+               return context.active_object.type=="MESH"
+
+       def draw(self, context):
+               mesh = context.active_object.data
+
+               self.layout.prop(mesh, "winding_test")
+
+class MspGLObjectProperties(bpy.types.Panel):
        bl_idname = "OBJECT_PT_mspgl_properties"
        bl_label = "MspGL properties"
        bl_space_type = "PROPERTIES"
@@ -20,6 +36,7 @@ class MspGLProperties(bpy.types.Panel):
                        self.layout.prop(obj, "lod_index")
 
 def register_properties():
+       bpy.types.Mesh.winding_test = bpy.props.BoolProperty(name="Winding test", description="Perform winding test to skip back faces")
        bpy.types.Object.technique = bpy.props.StringProperty(name="Technique", description="Name of the technique to use for rendering")
        bpy.types.Object.inherit_tech = bpy.props.BoolProperty(name="Inherit technique", description="Inherit from the technique to customize textures")
        bpy.types.Object.override_material = bpy.props.BoolProperty(name="Override material", description="Override material in the inherited texture as well", default=True)