+ object_prototypes = {}
+ unique_objects = []
+ export_names = {}
+ used_names = set()
+ for o in objs:
+ if o.name in object_prototypes:
+ continue
+
+ clones = [o]
+ for u in objs:
+ if u is o:
+ continue
+ if u.data.name!=o.data.name:
+ continue
+ if any(m1.name!=m2.name for m1, m2 in zip(o.material_slots, u.material_slots)):
+ continue
+
+ clones.append(u)
+
+ prefix = o.name
+ for c in clones:
+ while not c.name.startswith(prefix):
+ pos = max(prefix.rfind(' '), prefix.rfind('.'))
+ if pos<0:
+ break;
+ prefix = prefix[:pos]
+
+ if prefix:
+ export_names[o.name+".object"] = prefix.strip(" .")
+ else:
+ used_names.add(o.name)
+
+ unique_objects.append(o)
+ for c in clones:
+ object_prototypes[c.name] = o
+
+ for n, e in export_names.items():
+ if e in used_names:
+ number = 1
+ while "{}_{}".format(e, number) in used_names:
+ number += 1
+ e += "_{}".format(number)
+ export_names[n] = e+".object"
+ used_names.add(e)
+
+ from .util import Progress
+ progress = Progress(self.show_progress and context)
+
+ resources = {}
+ self.export_scene_resources(context, unique_objects, resources, progress)
+ for n, r in resources.items():
+ if r.name in export_names:
+ r.name = export_names[r.name]
+
+ scene_res = self.export_scene(context, objs, progress, prototypes=object_prototypes, resources=resources)
+ refs = scene_res.collect_references()