Table of Contents

Blender COLLADA export script updates

Provided updated scripts are NOT OFFICIAL bug fixes. Use at your own risk!

August 11, 2009 fixed Blender 2.49 COLLADA export for Skin/Bone animation

Download COLLADA export script update for Blender 2.49

History

2009.08.11 by dynabyte ( cast3d@gmail.com, www.cast3d.org): - Fixed skeleton/bone and animation. (export only). Brief change log:
  1. Fuction Controller.SaveToDae :

INV_BIND_MATRIX composition as = (bArmatureObject.matrixWorld * Bone.matrix['ARMATURESPACE']).invert()

  1. Fuction ArmatrureNode.SaveToDae :
    1. mutliple root bones handling added
    2. return argument as list
  2. Fuction ArmatrureNode.BoneToDae :
    1. local bone matrix composition as = Bone.matrix['ARMATURESPACE'] * parent_bone.matrix[“ARMATURESPACE”].invert()
    2. bone's action IPOs compiled in to list
    3. removed redundant function arguments
  3. Fuction Animation.SaveToDae : - new impementation
    1. removed unused getEulerAnimation() function
    2. function takes IPOs list as input argument
    3. new function getLocalPoseMatrix added
  4. Fuction SceneNode.SaveSceneToDae :
    1. Added creation of Armature node as parent of Skeleton nodes
    2. Controler transforms cleaned up
    3. Node animation handling fixed

November 15, 2008 Additional bug fixes

Fixed version converts quaternion to Matrix and then multiplies with BONESPACE matrix, and then converts to Euler angles.

Fixed version added an extra 'armature node' to decouple animation keys and initial transformations of armature object.

Apparently, Blender v 2.45 , 2.46, 2.47 and 2.48a have few bugs in COLLADA export that do not allow to produce correctly built Skin/Bone animation Dae files.

I did some research and found and fixed a number of bugs to make export work right. Also I submitted ticket in Blender Bug-Tracker system, so I hope those bugs will be fixed in upcoming Blender release soon.

What's fixed?

  1. Skin IDREF_Array joint id string values containing '.' character converted to '_'. For example, id value 'Foot_L.001' will be replaced with 'Foot_L_001'. The same way PyCollada library converts ids for 'id' attribute. Due to this bug skinning process fails to find Bone nodes.
  2. Skin joints pose matrix calculations are updated to take into account rotations(local orientation) of a bone. Used to be only bone Head Positions. Most of exported animations were incorrect before that fix.
  3. Some animation keys got removed from export. The issue was with check condition on summary rotation equals to 0. Which in some cases may be full rotation or back and forth rotation.
  4. Weird animation artifacts, like, stretching of an animated character shoe noses during the walk, because skin joint weights were evenly distributed instead of using joint weight values from Blender core objects.

Download

COLLADA export script update for Blender 2.49

COLLADA export script update for Blender 2.48

COLLADA export script update for Blender 2.46 and 2.47

COLLADA export script update for Blender 2.45

How to Install

  1. unpack content of the zip file in to temporary storage.
  2. copy files to <Blender Home>/.blender/scripts/bpymodules/colladaImEx. You may want to save original files just in case.

and you are ready to do Collada export.

Also see readme.txt file in each zip file for instructions.