Browse Source

Added exporting of group ids to Blender scene exporter.

Also fixed multimaterial ids list.
alteredq 14 years ago
parent
commit
a89ec4fede

+ 24 - 5
utils/exporters/blender/2.56/scripts/op/io_mesh_threejs/export_threejs.py

@@ -111,6 +111,7 @@ TEMPLATE_SECTION = """
 TEMPLATE_OBJECT = """\
 TEMPLATE_OBJECT = """\
     %(object_id)s : {
     %(object_id)s : {
         "geometry"  : %(geometry_id)s,
         "geometry"  : %(geometry_id)s,
+        "groups"    : [ %(group_id)s ],
         "materials" : [ %(material_id)s ],
         "materials" : [ %(material_id)s ],
         "position"  : %(position)s,
         "position"  : %(position)s,
         "rotation"  : %(rotation)s,
         "rotation"  : %(rotation)s,
@@ -828,6 +829,9 @@ def generate_hex(number):
 def generate_string(s):
 def generate_string(s):
     return TEMPLATE_STRING % s
     return TEMPLATE_STRING % s
     
     
+def generate_string_list(src_list):
+    return ", ".join(generate_string(item) for item in src_list)
+    
 def generate_section(label, content):
 def generate_section(label, content):
     return TEMPLATE_SECTION % (label, content)
     return TEMPLATE_SECTION % (label, content)
     
     
@@ -841,7 +845,16 @@ def generate_material_id_list(materials):
     for material in materials:
     for material in materials:
         chunks.append(material.name)
         chunks.append(material.name)
     
     
-    return ",".join(chunks)
+    return chunks
+    
+def generate_group_id_list(obj):
+    chunks = []
+    
+    for group in bpy.data.groups:
+        if obj.name in group.objects:
+            chunks.append(group.name)
+        
+    return chunks
     
     
 def generate_objects(data):
 def generate_objects(data):
     chunks = []
     chunks = []
@@ -857,7 +870,8 @@ def generate_objects(data):
 
 
             geometry_id = "geo_%s" % geo_name
             geometry_id = "geo_%s" % geo_name
             
             
-            material_id = generate_material_id_list(obj.material_slots)
+            material_ids = generate_material_id_list(obj.material_slots)
+            group_ids = generate_group_id_list(obj)
 
 
             #position = obj.location
             #position = obj.location
             #rotation = obj.rotation_euler
             #rotation = obj.rotation_euler
@@ -870,12 +884,17 @@ def generate_objects(data):
             scale = [obj.scale.x, obj.scale.z, obj.scale.y]
             scale = [obj.scale.x, obj.scale.z, obj.scale.y]
             
             
             material_string = ""
             material_string = ""
-            if material_id:
-                material_string = generate_string(material_id)
-                
+            if len(material_ids) > 0:
+                material_string = generate_string_list(material_ids)
+
+            group_string = ""
+            if len(group_ids) > 0:
+                group_string = generate_string_list(group_ids)
+
             object_string = TEMPLATE_OBJECT % {
             object_string = TEMPLATE_OBJECT % {
             "object_id"   : generate_string(object_id),
             "object_id"   : generate_string(object_id),
             "geometry_id" : generate_string(geometry_id),
             "geometry_id" : generate_string(geometry_id),
+            "group_id"    : group_string,
             "material_id" : material_string,
             "material_id" : material_string,
             "position"    : generate_vec3(position),
             "position"    : generate_vec3(position),
             "rotation"    : generate_vec3(rotation),
             "rotation"    : generate_vec3(rotation),