瀏覽代碼

Fixing Blender exporter

David Catuhe 11 年之前
父節點
當前提交
5f0a15b5d2
共有 1 個文件被更改,包括 15 次插入5 次删除
  1. 15 5
      Exporters/Blender/io_export_babylon.py

+ 15 - 5
Exporters/Blender/io_export_babylon.py

@@ -45,8 +45,6 @@ class Export_babylon(bpy.types.Operator, ExportHelper):
 
     filename_ext = ".babylon"
     filepath = ""
-
-    alreadyExportedMeshAsInstance = []
     
     # global_scale = FloatProperty(name="Scale", min=0.01, max=1000.0, default=1.0)
 
@@ -731,7 +729,6 @@ class Export_babylon(bpy.types.Operator, ExportHelper):
         for other in [object for object in scene.objects]:
             if other.type == 'MESH' and other != object: 
                 if other.data.name == object.data.name:
-                    Export_babylon.alreadyExportedMeshAsInstance.append(object.data.name)
                     if first == False:
                         file_handler.write(",")
                     file_handler.write("{")
@@ -986,9 +983,22 @@ class Export_babylon(bpy.types.Operator, ExportHelper):
         file_handler.write(",\"meshes\":[")
         multiMaterials = []
         first = True
-        for object in [object for object in reversed(scene.objects)]:
+        for object in [object for object in scene.objects]:
             if object.type == 'MESH' or object.type == 'EMPTY':
-                if object.data and object.data.name in Export_babylon.alreadyExportedMeshAsInstance:
+                # Check if current object is an instance
+                currentFound = False
+                mustSkipThisOne = False
+                for other in [object for object in scene.objects]:
+                    if other.type == 'MESH': 
+                        if other == object:
+                            currentFound = True
+                            continue
+
+                        if currentFound and other.data.name == object.data.name:
+                            mustSkipThisOne = True
+                            break
+
+                if mustSkipThisOne:
                     continue
 
                 if first != True: