[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2141] trunk/py/scripts/addons/ io_scene_fbx/export_fbx.py: fix [#28029] Exporting linked groups to FBX to load on Unity3D

Campbell Barton ideasman42 at gmail.com
Wed Jul 20 07:28:15 CEST 2011


Revision: 2141
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2141
Author:   campbellbarton
Date:     2011-07-20 05:28:15 +0000 (Wed, 20 Jul 2011)
Log Message:
-----------
fix [#28029] Exporting linked groups to FBX to load on Unity3D

Modified Paths:
--------------
    trunk/py/scripts/addons/io_scene_fbx/export_fbx.py

Modified: trunk/py/scripts/addons/io_scene_fbx/export_fbx.py
===================================================================
--- trunk/py/scripts/addons/io_scene_fbx/export_fbx.py	2011-07-20 01:07:41 UTC (rev 2140)
+++ trunk/py/scripts/addons/io_scene_fbx/export_fbx.py	2011-07-20 05:28:15 UTC (rev 2141)
@@ -45,6 +45,7 @@
 
 # Used to add the scene name into the filepath without using odd chars
 sane_name_mapping_ob = {}
+sane_name_mapping_ob_unique = set()
 sane_name_mapping_mat = {}
 sane_name_mapping_tex = {}
 sane_name_mapping_take = {}
@@ -67,7 +68,7 @@
 
 
 # todo - Disallow the name 'Scene' - it will bugger things up.
-def sane_name(data, dct):
+def sane_name(data, dct, unique_set=None):
     #if not data: return None
 
     if type(data) == tuple:  # materials are paired up with images
@@ -97,7 +98,9 @@
 
         name = bpy.path.clean_name(name)  # use our own
 
-    while name in iter(dct.values()):
+    name_unique = dct.values() if unique_set is None else unique_set
+
+    while name in name_unique:
         name = increment_string(name)
 
     if use_other:  # even if other is None - orig_name_other will be a string or None
@@ -105,11 +108,14 @@
     else:
         dct[orig_name] = name
 
+    if unique_set is not None:
+        unique_set.add(name)
+
     return name
 
 
 def sane_obname(data):
-    return sane_name(data, sane_name_mapping_ob)
+    return sane_name(data, sane_name_mapping_ob, sane_name_mapping_ob_unique)
 
 
 def sane_matname(data):
@@ -2713,11 +2719,15 @@
     file.write('\n')
 
     # XXX, shouldnt be global!
-    sane_name_mapping_ob.clear()
-    sane_name_mapping_mat.clear()
-    sane_name_mapping_tex.clear()
-    sane_name_mapping_take.clear()
-    sane_name_mapping_group.clear()
+    for mapping in (sane_name_mapping_ob,
+                    sane_name_mapping_ob_unique,
+                    sane_name_mapping_mat,
+                    sane_name_mapping_tex,
+                    sane_name_mapping_take,
+                    sane_name_mapping_group,
+                    ):
+        mapping.clear()
+    del mapping
 
     ob_arms[:] = []
     ob_bones[:] = []



More information about the Bf-extensions-cvs mailing list