]> git.tdb.fi Git - libs/gl.git/commitdiff
Add an object property for inheriting the specified technique
authorMikko Rasa <tdb@tdb.fi>
Mon, 15 Sep 2014 10:23:11 +0000 (13:23 +0300)
committerMikko Rasa <tdb@tdb.fi>
Mon, 15 Sep 2014 10:23:11 +0000 (13:23 +0300)
This allows using object-specific textures while still sharing material
and shaders.

blender/io_mspgl/export_object.py
blender/io_mspgl/properties.py

index 00410a23ff0d071ea9b500967f406ef1daed2393..a12474af94bbfe5505a0d7e8d2fd016b1774aebf 100644 (file)
@@ -50,7 +50,20 @@ class ObjectExporter:
                        out_file.end()
 
                if self.external_tech and obj.technique:
-                       out_file.write("technique", '"{}"'.format(obj.technique))
+                       if obj.inherit_tech and mesh.materials[0].texture_slots:
+                               out_file.begin("technique")
+                               out_file.begin("inherit", '"{}"'.format(obj.technique))
+                               for slot in mesh.materials[0].texture_slots:
+                                       if slot and slot.texture.type=="IMAGE":
+                                               name = image_name(slot.texture.image)
+                                               if slot.use_map_color_diffuse:
+                                                       out_file.write("texture", '"diffuse_map"', '"{}"'.format(name))
+                                               elif slot.use_map_normal:
+                                                       out_file.write("texture", '"normal_map"', '"{}"'.format(name))
+                               out_file.end()
+                               out_file.end()
+                       else:
+                               out_file.write("technique", '"{}"'.format(obj.technique))
                elif self.separate_tech:
                        path, base = os.path.split(out_file.filename)
                        if self.shared_tech and mesh.materials:
index dcc8cc34d55a81b0fd38c16c9bf43a6f6dca5add..f6de7a36acdb543fa6b2446eb28d08b8e14f32db 100644 (file)
@@ -11,8 +11,10 @@ class MspGLProperties(bpy.types.Panel):
                obj = context.active_object
 
                self.layout.prop(obj, "technique");
+               self.layout.prop(obj, "inherit_tech");
                self.layout.prop(obj, "compound");
 
 def register_properties():
        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.compound = bpy.props.BoolProperty(name="Compound with parent", description="Join this object to its parent when exporting")