self.use_strips = True
self.use_degen_tris = False
self.use_textures = True
+ self.export_all = False
self.collection = False
self.shared_resources = True
self.export_lods = True
return material_map_export
def export_to_file(self, context, out_fn):
- obj = context.active_object
+ if self.export_all:
+ objs = [o for o in context.selected_objects if o.type=="MESH"]
+ else:
+ objs = [context.active_object]
from .util import Progress
progress = Progress(self.show_progress and context)
path, base = os.path.split(out_fn)
- base = os.path.splitext(base)[0]
+ base, ext = os.path.splitext(base)
resources = {}
- self.export_object_resources(context, obj, resources, progress)
-
- obj_res = self.export_object(context, obj, progress, resources=resources)
- refs = obj_res.collect_references()
- if not self.shared_resources:
- numbers = {}
- for r in refs:
- ext = os.path.splitext(r.name)[1]
- n = numbers.get(ext, 0)
- if n>0:
- r.name = "{}_{}{}".format(base, n, ext)
- else:
- r.name = base+ext
- numbers[ext] = n+1
+ for i, obj in enumerate(objs):
+ if self.export_all:
+ out_fn = os.path.join(path, obj.name+ext)
- if self.collection:
- obj_res.write_collection(out_fn)
- else:
- for r in refs:
- r.write_to_file(os.path.join(path, r.name))
- obj_res.write_to_file(out_fn)
+ progress.push_task_slice(obj.name, i, len(objs))
+ self.export_object_resources(context, obj, resources, progress)
+
+ obj_res = self.export_object(context, obj, progress, resources=resources)
+ refs = obj_res.collect_references()
+ if not self.shared_resources:
+ numbers = {}
+ for r in refs:
+ res_ext = os.path.splitext(r.name)[1]
+ n = numbers.get(res_ext, 0)
+ if n>0:
+ r.name = "{}_{}{}".format(base, n, res_ext)
+ else:
+ r.name = base+res_ext
+ numbers[res_ext] = n+1
+
+ if self.collection:
+ obj_res.write_collection(out_fn)
+ else:
+ for r in refs:
+ r.write_to_file(os.path.join(path, r.name))
+ obj_res.write_to_file(out_fn)
+
+ progress.pop_task()
def export_object_resources(self, context, obj, resources, progress, material_maps=None):
if material_maps is None:
if l.material_slots:
material = l.material_slots[0].material
if material:
- if material.material_map:
- tech_res = resources["material_map_{}.tech".format(os.path.splitext(material.technique)[0])]
+ if material.render_mode=='EXTERNAL':
+ tech_name = material.technique
+ elif material.material_map:
+ tech_name = "material_map_{}.tech".format(os.path.splitext(material.technique)[0])
else:
- tech_res = resources[material.name+".tech"]
+ tech_name = material.name+".tech"
else:
- tech_res = resources["stub.tech"]
+ tech_name = "stub.tech"
- if tech_res.name!=prev_tech:
+ if tech_name!=prev_tech:
if material and material.render_mode=='EXTERNAL':
lod_st.append(Statement("technique", material.technique))
else:
- lod_st.append(obj_res.create_reference_statement("technique", tech_res))
- prev_tech = tech_res.name
+ lod_st.append(obj_res.create_reference_statement("technique", resources[tech_name]))
+ prev_tech = tech_name
if i>0:
st = Statement("level_of_detail", i)