from .outfile import open_output
out_file = open_output(out_file)
+ path, base = os.path.split(out_file.filename)
from .export_mesh import MeshExporter
mesh_export = MeshExporter()
setattr(mesh_export, k, v)
if self.separate_mesh:
- path, base = os.path.split(out_file.filename)
base, ext = os.path.splitext(base)
mesh_out = open_output(os.path.join(path, base+".mesh"))
mesh = mesh_export.export(context, mesh_out, objs, progress)
mesh = mesh_export.export(context, out_file, objs, progress)
out_file.end()
+ if self.srgb_colors:
+ self.colormap = linear_to_srgb
+ else:
+ self.colormap = lambda x: x
+
if self.external_tech and obj.technique:
- out_file.write("technique", '"{}"'.format(obj.technique))
+ if obj.inherit_tech and (obj.override_material or mesh.materials[0].texture_slots):
+ out_file.begin("technique")
+ out_file.begin("inherit", '"{}"'.format(obj.technique))
+ for slot in mesh.materials[0].texture_slots:
+ if slot and slot.texture.type=="IMAGE":
+ name = image_name(slot.texture.image)
+ if slot.use_map_color_diffuse:
+ out_file.write("texture", '"diffuse_map"', '"{}"'.format(name))
+ elif slot.use_map_normal:
+ out_file.write("texture", '"normal_map"', '"{}"'.format(name))
+ if obj.override_material:
+ mat_name = mesh.materials[0].name+".mat"
+ mat_out = open_output(os.path.join(path, mat_name))
+ self.export_material(mesh.materials[0], mat_out)
+ out_file.write("material", '""', '"{}"'.format(mat_name))
+ out_file.end()
+ out_file.end()
+ else:
+ out_file.write("technique", '"{}"'.format(obj.technique))
elif self.separate_tech:
- path, base = os.path.split(out_file.filename)
if self.shared_tech and mesh.materials:
tech_name = mesh.materials[0].name+".tech"
else:
def export_technique(self, mesh, out_file):
out_file.begin("pass", '""')
if mesh.materials:
- if self.srgb_colors:
- cm = linear_to_srgb
- else:
- cm = lambda x: x
+ cm = self.colormap
if self.material_tex:
out_file.begin("material")
out_file.end()
out_file.end()
else:
- mat = mesh.materials[0]
out_file.begin("material")
- if any((s and s.use_map_color_diffuse) for s in mat.texture_slots):
- out_file.write("diffuse", 1.0, 1.0, 1.0, 1.0)
- amb = cm(mat.ambient)
- out_file.write("ambient", amb, amb, amb, 1.0)
- else:
- diff = mat.diffuse_color*mat.diffuse_intensity
- out_file.write("diffuse", cm(diff.r), cm(diff.g), cm(diff.b), 1.0)
- amb = diff*mat.ambient
- out_file.write("ambient", cm(amb.r), cm(amb.g), cm(amb.b), 1.0)
- spec = mat.specular_color*mat.specular_intensity
- out_file.write("specular", spec.r, spec.g, spec.b, 1.0)
- out_file.write("shininess", mat.specular_hardness);
+ self.export_material(mesh.materials[0], out_file)
out_file.end()
if self.textures!="NONE":
out_file.end()
out_file.end()
+
+ def export_material(self, mat, out_file):
+ cm = self.colormap
+ if any((s and s.use_map_color_diffuse) for s in mat.texture_slots):
+ out_file.write("diffuse", 1.0, 1.0, 1.0, 1.0)
+ amb = cm(mat.ambient)
+ out_file.write("ambient", amb, amb, amb, 1.0)
+ else:
+ diff = mat.diffuse_color*mat.diffuse_intensity
+ out_file.write("diffuse", cm(diff.r), cm(diff.g), cm(diff.b), 1.0)
+ amb = diff*mat.ambient
+ out_file.write("ambient", cm(amb.r), cm(amb.g), cm(amb.b), 1.0)
+ spec = mat.specular_color*mat.specular_intensity
+ out_file.write("specular", spec.r, spec.g, spec.b, 1.0)
+ out_file.write("shininess", mat.specular_hardness);