diff --git a/tools/export/blender25/io_scene_dae/__init__.py b/tools/export/blender25/io_scene_dae/__init__.py
index 8d6f6b4976..d0d286211e 100644
--- a/tools/export/blender25/io_scene_dae/__init__.py
+++ b/tools/export/blender25/io_scene_dae/__init__.py
@@ -131,11 +131,7 @@ class ExportDAE(bpy.types.Operator, ExportHelper):
default=True,
options={'HIDDEN'},
)
- export_shapekeys = BoolProperty(
- name="Export Shape Keys",
- default=False,
- )
-
+
@property
def check_extension(self):
return True#return self.batch_mode == 'OFF'
diff --git a/tools/export/blender25/io_scene_dae/export_dae.py b/tools/export/blender25/io_scene_dae/export_dae.py
index 9c104901f5..cc5865080b 100644
--- a/tools/export/blender25/io_scene_dae/export_dae.py
+++ b/tools/export/blender25/io_scene_dae/export_dae.py
@@ -51,12 +51,14 @@ S_IMGS=1
S_FX=2
S_MATS=3
S_GEOM=4
-S_CONT=5
-S_CAMS=6
-S_LAMPS=7
-S_ANIM_CLIPS=8
-S_NODES=9
-S_ANIM=10
+S_MORPH=5
+S_SKIN=6
+S_CONT=7
+S_CAMS=8
+S_LAMPS=9
+S_ANIM_CLIPS=10
+S_NODES=11
+S_ANIM=12
CMP_EPSILON=0.0001
@@ -286,9 +288,9 @@ class DaeExporter:
self.writel(S_FX,5,'')
- self.writel(S_FX,5,''+str(material.specular_ior)+'')
self.writel(S_FX,4,''+shtype+'>')
+ self.writel(S_FX,4,''+str(material.specular_ior)+'')
self.writel(S_FX,4,'')
self.writel(S_FX,5,'')
@@ -373,14 +375,14 @@ class DaeExporter:
node.active_shape_key_index = 0
- self.writel(S_CONT,1,'')
+ self.writel(S_MORPH,1,'')
#if ("skin_id" in morph_targets[0]):
- # self.writel(S_CONT,2,'')
+ # self.writel(S_MORPH,2,'')
#else:
- self.writel(S_CONT,2,'')
+ self.writel(S_MORPH,2,'')
- self.writel(S_CONT,3,'')
- self.writel(S_CONT,3,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,5,warr)
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,5,'')
- self.writel(S_CONT,6,'')
- self.writel(S_CONT,5,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,3,'')
+ self.writel(S_MORPH,3,'')
+ self.writel(S_MORPH,4,'')
+ self.writel(S_MORPH,5,warr)
+ self.writel(S_MORPH,4,'')
+ self.writel(S_MORPH,4,'')
+ self.writel(S_MORPH,5,'')
+ self.writel(S_MORPH,6,'')
+ self.writel(S_MORPH,5,'')
+ self.writel(S_MORPH,4,'')
+ self.writel(S_MORPH,3,'')
- self.writel(S_CONT,3,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,3,'')
- self.writel(S_CONT,2,'')
- self.writel(S_CONT,1,'')
+ self.writel(S_MORPH,3,'')
+ self.writel(S_MORPH,4,'')
+ self.writel(S_MORPH,4,'')
+ self.writel(S_MORPH,3,'')
+ self.writel(S_MORPH,2,'')
+ self.writel(S_MORPH,1,'')
if (armature!=None):
self.armature_for_morph[node]=armature
@@ -655,41 +657,41 @@ class DaeExporter:
contid = self.new_id("controller")
- self.writel(S_CONT,1,'')
+ self.writel(S_SKIN,1,'')
if (skel_source!=None):
- self.writel(S_CONT,2,'')
+ self.writel(S_SKIN,2,'')
else:
- self.writel(S_CONT,2,'')
+ self.writel(S_SKIN,2,'')
- self.writel(S_CONT,3,''+strmtx(node.matrix_world)+'')
+ self.writel(S_SKIN,3,''+strmtx(node.matrix_world)+'')
#Joint Names
- self.writel(S_CONT,3,'')
+ self.writel(S_SKIN,3,'')
name_values=""
for v in si["bone_names"]:
name_values+=" "+v
- self.writel(S_CONT,4,''+name_values+'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,5,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,3,'')
+ self.writel(S_SKIN,4,''+name_values+'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,5,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,3,'')
#Pose Matrices!
- self.writel(S_CONT,3,'')
+ self.writel(S_SKIN,3,'')
pose_values=""
for v in si["bone_bind_poses"]:
pose_values+=" "+strmtx(v)
- self.writel(S_CONT,4,''+pose_values+'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,5,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,3,'')
+ self.writel(S_SKIN,4,''+pose_values+'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,5,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,3,'')
#Skin Weights!
- self.writel(S_CONT,3,'')
+ self.writel(S_SKIN,3,'')
skin_weights=""
skin_weights_total=0
for v in vertices:
@@ -697,22 +699,22 @@ class DaeExporter:
for w in v.weights:
skin_weights+=" "+str(w)
- self.writel(S_CONT,4,''+skin_weights+'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,5,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,3,'')
+ self.writel(S_SKIN,4,''+skin_weights+'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,5,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,3,'')
- self.writel(S_CONT,3,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,3,'')
- self.writel(S_CONT,3,'')
- self.writel(S_CONT,4,'')
- self.writel(S_CONT,4,'')
+ self.writel(S_SKIN,3,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,3,'')
+ self.writel(S_SKIN,3,'')
+ self.writel(S_SKIN,4,'')
+ self.writel(S_SKIN,4,'')
vcounts=""
vs=""
vcount=0
@@ -722,13 +724,13 @@ class DaeExporter:
vs+=" "+str(b)
vs+=" "+str(vcount)
vcount+=1
- self.writel(S_CONT,4,''+vcounts+'')
- self.writel(S_CONT,4,''+vs+'')
- self.writel(S_CONT,3,'')
+ self.writel(S_SKIN,4,''+vcounts+'')
+ self.writel(S_SKIN,4,''+vs+'')
+ self.writel(S_SKIN,3,'')
- self.writel(S_CONT,2,'')
- self.writel(S_CONT,1,'')
+ self.writel(S_SKIN,2,'')
+ self.writel(S_SKIN,1,'')
meshdata["skin_id"]=contid
@@ -865,7 +867,7 @@ class DaeExporter:
light=node.data
lightid=self.new_id("light")
self.writel(S_LAMPS,1,'')
- self.writel(S_LAMPS,2,'')
+ #self.writel(S_LAMPS,2,'')
self.writel(S_LAMPS,3,'')
if (light.type=="POINT"):
@@ -893,7 +895,7 @@ class DaeExporter:
self.writel(S_LAMPS,3,'')
- self.writel(S_LAMPS,2,'')
+ #self.writel(S_LAMPS,2,'')
self.writel(S_LAMPS,1,'')
@@ -1136,7 +1138,7 @@ class DaeExporter:
self.writel(S_ANIM,2,'')
self.writel(S_ANIM,3,''+source_frames+'')
self.writel(S_ANIM,3,'')
- self.writel(S_ANIM,4,'')
+ self.writel(S_ANIM,4,'')
self.writel(S_ANIM,5,'')
self.writel(S_ANIM,4,'')
self.writel(S_ANIM,3,'')
@@ -1147,7 +1149,7 @@ class DaeExporter:
self.writel(S_ANIM,2,'')
self.writel(S_ANIM,3,''+source_transforms+'')
self.writel(S_ANIM,3,'')
- self.writel(S_ANIM,4,'')
+ self.writel(S_ANIM,4,'')
self.writel(S_ANIM,5,'')
self.writel(S_ANIM,4,'')
self.writel(S_ANIM,3,'')
@@ -1157,7 +1159,7 @@ class DaeExporter:
self.writel(S_ANIM,2,'')
self.writel(S_ANIM,3,''+source_transforms+'')
self.writel(S_ANIM,3,'')
- self.writel(S_ANIM,4,'')
+ self.writel(S_ANIM,4,'')
self.writel(S_ANIM,5,'')
self.writel(S_ANIM,4,'')
self.writel(S_ANIM,3,'')
@@ -1167,7 +1169,7 @@ class DaeExporter:
self.writel(S_ANIM,2,'')
self.writel(S_ANIM,3,''+source_interps+'')
self.writel(S_ANIM,3,'')
- self.writel(S_ANIM,4,'')
+ self.writel(S_ANIM,4,'')
self.writel(S_ANIM,5,'')
self.writel(S_ANIM,4,'')
self.writel(S_ANIM,3,'')
@@ -1379,6 +1381,19 @@ class DaeExporter:
self.export_scene()
self.writel(S_GEOM,0,'')
+
+ #morphs always go before skin controllers
+ if S_MORPH in self.sections:
+ for l in self.sections[S_MORPH]:
+ self.writel(S_CONT,0,l)
+ del self.sections[S_MORPH]
+
+ #morphs always go before skin controllers
+ if S_SKIN in self.sections:
+ for l in self.sections[S_SKIN]:
+ self.writel(S_CONT,0,l)
+ del self.sections[S_SKIN]
+
self.writel(S_CONT,0,'')
self.writel(S_CAMS,0,'')
self.writel(S_LAMPS,0,'')