You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am using impasse/assimp to import a gLTF into Maya by converting the gLTF to an FBX and then importing the FBX into Maya.
However, it looks like the FBX conversion process does not take into account both the bindpose set by the .bin file associated with the gLTF before building the skeleton according to the joint transforms defined in the nodes hierarchy of the gLTF file. That is, to achieve correct skinning, the skeleton should first be built according to the bindpose matrices; the raw mesh data can then be skinned to this bindposed skeleton, and then the skeleton transforms would be adjusted to those set in the nodes hierarchy.
Instead, it seems that the FBX conversion is picking the raw mesh data, but using the nodes hierarchy as the bindpose matrices instead of the ones stored in the binary buffer. As you can see, the mesh is not correctly aligned with the skeleton, and appears deformed:
This is compared to when I import the original gLTF into Blender, where the correct skinning is achieved:
TLDR: The correct reference frame data should be found in the binary buffer - this is what should be used for the LBS deformation calculation, and not the 'live' data transforms in the scene graph nodes.
I've added the gLTF file I used in the conversion process below. Let me know if you need any more info! Avatar.zip
The text was updated successfully, but these errors were encountered:
Hi! The avatar export is incorrect because the skeleton bindpose is only set according to the data in the gLTF node hierarchy.
It should instead be set up as follows:
Build the skeleton bindpose matrices defined in the .bin file in the gLTF folder
Skin the mesh to this bindposed skeleton
Adjust skeleton transforms to the transforms set in the nodes hierarchy
Let me know if this helps or if I can provide any further information!
I am using impasse/assimp to import a gLTF into Maya by converting the gLTF to an FBX and then importing the FBX into Maya.
However, it looks like the FBX conversion process does not take into account both the bindpose set by the .bin file associated with the gLTF before building the skeleton according to the joint transforms defined in the nodes hierarchy of the gLTF file. That is, to achieve correct skinning, the skeleton should first be built according to the bindpose matrices; the raw mesh data can then be skinned to this bindposed skeleton, and then the skeleton transforms would be adjusted to those set in the nodes hierarchy.
Instead, it seems that the FBX conversion is picking the raw mesh data, but using the nodes hierarchy as the bindpose matrices instead of the ones stored in the binary buffer. As you can see, the mesh is not correctly aligned with the skeleton, and appears deformed:
This is compared to when I import the original gLTF into Blender, where the correct skinning is achieved:
TLDR: The correct reference frame data should be found in the binary buffer - this is what should be used for the LBS deformation calculation, and not the 'live' data transforms in the scene graph nodes.
I've added the gLTF file I used in the conversion process below. Let me know if you need any more info!
Avatar.zip
The text was updated successfully, but these errors were encountered: