[Bug] Skinned Fbx root object can't have socket

I’ve think I’ve found a bug when setting up a skinned asset that contains a socket attached to the root bone. The socket will not import if it’s attached to the root, but will on any other bone.

I’ve tracked the issues to here “InterchangeSkeletalMeshFactory.cpp” ln 1869.

UE::Interchange::Private::FindAllSockets(Arguments.NodeContainer, RootSkeletonNodeUid, RootSkeletonNodeUid, SocketsPerBoneMap);

RootSkeletonNodeUid is passed twice in to this function, when the second one passed should be a joint name. This function will recurse through the hierarchy looking for valid socket objects and passes the correct joint name for all other bones. Only the first invocation of the function will fail to find a socket (if it exists), due to incorrect parameter being passed.

Fetching the root node and passing it’s name does appear to correct the issue.

Steps to Reproduce
Create an fbx file that contains a skinned object that contains several bones. Attach a null object to each bone in the hierarchy. Import this fbx in to Unreal and view the resulting skeleton The root bone will not contain a socket, but the other bones will.

Hi Stephen,

Sorry for the late answer.

Do you have a FBX file reproducing the steps you mentioned that you can share? This will speed up the troubleshooting process.

Thanks.

Regards,

Jean-Luc

Hi, here is a super simple test. It comes from Max. It’s a cylinder with a 3 bone chain and socket objects parented to each bone (one to each bone). When imported, only 2 of the 3 sockets show up. The socket on the base bone does not come through. When stepping the code you can see that the root bone name is not sent correctly and so the socket is not found.

Thanks

Hi Stephen,

Thank you so much for reporting the issue and digging into the source code to find its root cause.

We were able to repro the bug and we’re working on a fix.