guillaumeblanc / ozz-animation

Open source c++ skeletal animation library and toolset
http://guillaumeblanc.github.io/ozz-animation/
Other
2.46k stars 302 forks source link

glTF and FBX skeleton difference #159

Closed qwiff-dogg closed 2 years ago

qwiff-dogg commented 2 years ago

I'm just getting started with this library. I would prefer to use glTF in my asset pipeline, since that's what I'm using for meshes and materials.

I am, however, seeing a difference in the generated skeleton for a simple, single-bone animation. Now I realize glTF and FBX are entirely different formats, so I'm not expecting identical results.

When I use sample_playback with the animation.ozz and skeleton.ozz generated by (fbx2ozz and gltf2ozz) I'm seeing the bone move much like its preview in Blender in FBX. For glTF, the bone is not visible, however, but the camera seems to be tracking its position anyway.

It looks like sample_playback does not show the starting/root bone for glTF-sourced skeletons. This could, of course, be just a display issue. Again, I'm not expecting completely identical results.

ZIP contains the .blend file and the exported .fbx and .glb. I've left the export settings at the defaults.

bone.zip

qwiff-dogg commented 2 years ago

Closing this issue. After looking into this some more, it looks like glTF does not define skeleton/joints as explicitly as FBX does, making it difficult to extract the joint positions from it. That would explain why the glTF-converted skeletons always have the last joint missing.

This question covers the gist of it: https://stackoverflow.com/questions/64690136/can-you-get-an-explicit-skeleton-out-of-a-gltf-file