[X3D-Ecosystem] Blender export: Bone+Transform = Joint

Joe D Williams joedwil at earthlink.net
Fri Jan 23 18:51:56 PST 2026


> However, this led to a more complicated design. The HAnimJoint.center requires a special treatment: it is relative to the root HAnimHumanoid, no matter how deep in the hierarchy is the joint. 

The HAnim root translation is relative to 0 0 0 and the center is wherever
it makes the most sense to control rotation of the entire model.
All default HAnim Joint translation values are 0 0 0 and all Joint centers are relative to 0 0 0. 
This makes the skeleton dimensions absolute, relative to 0 0 0. 

The glTF skeleton joint dimensions are relative to its parent.
The glTF has no concept of center.
The root is set relative to 0 0 0 and all other Node (Joint) translations
are relative to the immediate parent.  

Thus, in order to derive an HAnim model for location of the joint
node center, the parent transforms need to be computed from the
glTF relative values except the root which is relative to 0 0 0. 

So, the glTF is more like the BVH which also uses a simple basic transform 
having only translation, rotation, and scale. 
We deal with running this category of model (relative dimensions) in Part 2 of HAnim.

Regardless, the keyword 'skin' is already taken by X3D HAnim. 
So, call this node something else since it is different than HAnim skin. 

For the skinning data, theglTF and HAnim skin bindings and weights are
the same data in different lists. 
In the glTF each point lists joint weights for that point.
In the HAnim the Joint lists each point and joint weight for each point.
So, exact same data, just different ways to document the
joints and points and weights.
    
Generally, this stuff has been around for a long time and maybe some
new tricks or arrangements are good but no need to reinvent and
rename basics.

Thanks and with best regards,
Joe.








More information about the X3D-Ecosystem mailing list