mesh.generate_material_uv()
texunits = []
- if mesh.uv_layers and self.export_uv!="NONE":
+ force_unit0 = False
+ if mesh.uv_layers and (self.export_uv!="NONE" or self.material_tex):
# Figure out which UV layers to export
- if self.export_uv=="UNIT0":
- if mesh.uv_layers[0].unit==0:
- texunits = [0]
- else:
+ if self.export_uv=="ALL":
texunits = range(len(mesh.uv_layers))
+ elif self.material_tex:
+ # The material UV layer is always the last one
+ texunits = [len(mesh.uv_layers)-1]
+ force_unit0 = True
+ else:
+ for i, u in enumerate(mesh.uv_layers):
+ if u.unit==0:
+ texunits = [i]
+ break
texunits = [(i, mesh.uv_layers[i]) for i in texunits]
texunits = [u for u in texunits if not u[1].hidden]
fmt = ["NORMAL3"]
if texunits:
for i, u in texunits:
- if u.unit==0:
+ if u.unit==0 or force_unit0:
fmt.append("TEXCOORD2")
else:
fmt.append("TEXCOORD2_%d"%u.unit)
fmt.append("VERTEX3")
out_file.begin("vertices", *fmt)
normal = None
- uvs = [None]*len(texunits)
+ uvs = [None]*(max(u[0] for u in texunits)+1)
tan = None
bino = None
group = None
normal = v.normal
for i, u in texunits:
if v.uvs[i]!=uvs[i]:
- if u.unit==0:
+ if u.unit==0 or force_unit0:
out_file.write("texcoord2", *v.uvs[i])
else:
out_file.write("multitexcoord2", u.unit, *v.uvs[i])