+ proto_map = {}
+ for i in itertools.chain(self.instances, self.blended_instances):
+ p = proto_map.get(i.prototype)
+ if p:
+ i.prototype = p
+ else:
+ found = False
+ for p in proto_map.values():
+ if is_same_object(i.prototype, p):
+ proto_map[i.prototype] = p
+ i.prototype = p
+ found = True
+ break
+
+ if not found:
+ proto_map[i.prototype] = i.prototype
+ self.prototypes.append(i.prototype)
+
+ def add_instance(self, instance):
+ obj = instance.prototype
+ instance_list = self.instances
+ if obj.material_slots and obj.material_slots[0].material:
+ mat = obj.material_slots[0].material
+ if mat.blend_method=='BLEND':
+ instance_list = self.blended_instances
+ if mat.image_based_lighting:
+ self.use_ibl = True
+ instance_list.append(instance)
+