Exporting .dae files from Blender 2.8 or 2.9 always works fine when I only export meshes. But if I create a model consisting of separate meshes in Blender 2.8 or 2.9, and add an armature to it, and then associate that armature with the meshes - then when I export as a .dae, the positions of the meshes becomes incorrect in result of associating the meshes with the armature.
To reproduce what I am seeing, consider creating a crude arm as follows:
- Open a new project in Blender, than Add 3 cubes, and rename them armA, armB, and armC.
- In Edit mode, extend each to make each longer.
- In Object Mode, place them vertically, with only the slightest space between them
- Then Apply All transforms.
- Then for each, set Origin>Origin to geometry.
- Then Add an Armature, and click E and make the armature a total of 3 bones.
- Place the bones so that each bone is lined up with one of your meshes.
- Now try exporting your project as a .dae. You will see that the meshes look fine, even with the presence of the armature, if you view the .dae file outside of Blender (such as by opening the .dae in Apple’s macOS Preview App).
- Now back in Blender, attach your meshes to your armature... To attach armA to the armature, in Object mode, select the armA mesh, then select the armature, then switch to Pose Mode, then select the bone that overlays armA, then click CTRL+P (on a Mac), then select Bone.
- Now repeat the last step for meshes armB and armC.
- You should now have the Armature as the parent of meshes armA, armB, and armC, and you can rotate the meshes by rotating bones.
- Now with all the above done, again export as a .dae. But no matter what export settings you choose at this point, I believe you will find that the .dae exported repositions the meshes incorrectly. Opening this new .dae in Apple’s Preview App and you will see your meshes are not positioned as they were in Blender.
I should mention that I have repeated this experiment multiple times with different models, and no matter what, in the resulting .dae, meshes are positioned off center or too high or too low, etc.
I should also mention that I have tried the option of installing “Godot Engine's "Better" Collada exporter”, but this appears broken for Blender 2.8 or 2.9 - I couldn’t get it installed.
For me, what I have described is a pretty bad issue - I need to be able to import models into Apple’s Xcode, for use with SceneKit, and for this I need to be able to export .dae files that contain both armatures and animations.
My workaround for now is that I can export as .fbx, then import into Cheetah3D, then use Cheetah3D to export .dae files that do work. But doing it this way really shouldn’t be necessary - the fact that Cheetah3D can produce good .dae files makes clear to me that Blender certainly should be able to do so too.
And Cheetah3D does provide good features for creating, rigging and animating armatures itself - at minimum, this situation makes me wonder if I should only use Blender for creating meshes, and that my workflow should leave rigging and animating always to Cheetah3D? Given the depth of animation capabilities of Blender, this may not always be preferable.
What else? I can export .dae files from Blender with animations just fine - as long as they do not involve armatures - if I use the Dope Sheet to create animations that don't involve armatures, then I can export .dae files where my meshes and animations are as expected.
And again, as described with my step #8 above, I can export .dae files that contain both meshes and an armature where the meshes are just fine - as long as I don't associate the meshes with the armature. So the problem is definitely introduced when parenting the meshes to the armature's bones, not simply with the presense of an armature.
Is there a solution to this? Is it possible to export Collada .dae files from Blender where associating meshes with armatures does not screw things up? Am I just not understanding the proper way to associate an armature with my meshes? Or settings for exporting .dae files? Or something else?
Thanks in advance for any help anyone can offer.