From bc2fe1bd3e167fd8eed05f9ffeda3c255f445f70 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Mon, 23 Nov 2015 18:18:21 +0200 Subject: [PATCH] Allow flagging meshes for winding test in Blender --- blender/io_mspgl/__init__.py | 2 +- blender/io_mspgl/export_mesh.py | 6 ++++++ blender/io_mspgl/properties.py | 19 ++++++++++++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/blender/io_mspgl/__init__.py b/blender/io_mspgl/__init__.py index 2c9d8f72..c13345fa 100644 --- a/blender/io_mspgl/__init__.py +++ b/blender/io_mspgl/__init__.py @@ -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__) diff --git a/blender/io_mspgl/export_mesh.py b/blender/io_mspgl/export_mesh.py index 07f457a1..8f868882 100644 --- a/blender/io_mspgl/export_mesh.py +++ b/blender/io_mspgl/export_mesh.py @@ -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) diff --git a/blender/io_mspgl/properties.py b/blender/io_mspgl/properties.py index 30aed9a9..129b02e6 100644 --- a/blender/io_mspgl/properties.py +++ b/blender/io_mspgl/properties.py @@ -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) -- 2.45.2