浏览代码

Added handling of custom properties to Blender exporter.

alteredq 14 年之前
父节点
当前提交
3943ca604a

+ 24 - 0
utils/exporters/blender/2.56/scripts/op/io_mesh_threejs/__init__.py

@@ -27,6 +27,30 @@ import bpy
 from bpy.props import *
 from io_utils import ExportHelper
 
+bpy.types.Object.THREE_castsShadow = bpy.props.BoolProperty()
+bpy.types.Object.THREE_meshCollider = bpy.props.BoolProperty()
+
+ 
+class OBJECT_PT_hello( bpy.types.Panel ):
+    
+    bl_label = "THREE"
+    bl_space_type = "PROPERTIES"
+    bl_region_type = "WINDOW"
+    bl_context = "object"
+ 
+    def draw(self, context):
+        layout = self.layout
+        obj = context.object
+        
+        row = layout.row()
+        row.label(text="Selected object: " + obj.name )
+
+        row = layout.row()
+        row.prop( obj, "THREE_castsShadow", text="Casts shadow" )
+
+        row = layout.row()
+        row.prop( obj, "THREE_meshCollider", text="Mesh collider" )
+        
 
 class ExportTHREEJS(bpy.types.Operator, ExportHelper):
     '''Export selected object for Three.js (ASCII JSON format).'''

+ 14 - 2
utils/exporters/blender/2.56/scripts/op/io_mesh_threejs/export_threejs.py

@@ -117,7 +117,9 @@ TEMPLATE_OBJECT = """\
         "rotation"  : %(rotation)s,
         "quaternion": %(quaternion)s,
         "scale"	    : %(scale)s,
-        "visible"   : true
+        "visible"       : true
+        "castsShadow"   : %(castsShadow)s,
+        "meshCollider"  : %(meshCollider)s
     }"""
 
 TEMPLATE_GEOMETRY = """\
@@ -856,6 +858,11 @@ def generate_group_id_list(obj):
         
     return chunks
     
+def generate_bool_property(property):
+    if property:
+        return "true"
+    return "false"
+    
 def generate_objects(data):
     chunks = []
     
@@ -891,6 +898,9 @@ def generate_objects(data):
             if len(group_ids) > 0:
                 group_string = generate_string_list(group_ids)
 
+            castsShadow = generate_bool_property(obj.THREE_castsShadow)
+            meshCollider = generate_bool_property(obj.THREE_meshCollider)            
+                
             object_string = TEMPLATE_OBJECT % {
             "object_id"   : generate_string(object_id),
             "geometry_id" : generate_string(geometry_id),
@@ -899,7 +909,9 @@ def generate_objects(data):
             "position"    : generate_vec3(position),
             "rotation"    : generate_vec3(rotation),
             "quaternion"  : generate_vec4(quaternion),
-            "scale"       : generate_vec3(scale)
+            "scale"       : generate_vec3(scale),
+            "castsShadow"  : castsShadow,
+            "meshCollider" : meshCollider
             }
             chunks.append(object_string)