- # TODO Export techniques as separate items in the collection
- for o in objs:
- res_out.begin("object", '"{}.object"'.format(o.name))
- object_export.export(context, res_out, [o])
- res_out.end()
+ 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()
+
+ if self.resource_collection:
+ filter = None
+ if self.skip_existing:
+ filter = lambda r: not os.path.exists(os.path.join(path, r.name))
+ scene_res.write_collection(os.path.join(path, base+"_resources.mdc"), exclude_self=True, filter=filter)