For skeletal meshes using Simulation Updates Component Transform it doesn’t appear to take into account the root bones offset. If the root bone is not rotated with the world and set to 0,0,0 in the skeletal mesh than when the simulation component transform happens it treats it like it is and gives it the wrong component transform. It should be offsetting the component transform by the root bones offset as well.
You can see the issue by taking the basic FPS arms which have an offset root bone, setting them to simulate in blueprint and then setting them to not simulate afterwards, they will snap to an offset of the root component instead of remaining in the correct location (stopping simulation makes it use the component transform that has been updated incorrectly).
Could also be checked by attaching the arms to anything while simulating using world location. They will attach with the extra offset of the root bone.
Apologies if I’m not understanding the issue correctly, but with Simulation Updates Component Transform (SUCT) enabled, disabling physics is expected to make the component follow the root. Is that not what you’re seeing.
It does, but it treats the root as if it had zero rotation and zero translation. So if the root is rotated or offset from local space zero then the object snaps to the roots offset when it ceases simulation.
IE: It will be in one place resting during simulation, stop simulation and it snaps to a different rotation and location due to the root offset / rotation.
The function that updates the component transform during simulation doesn’t take into account root local transform.
I have been looking into this with one of our engineers and it appears we made some changes for 4.14 in this regard. I tested my example project in 4.14 with drastically different results after disabling simulation.
I was wondering if you could create a copy of your project in 4.14 (on github) and see if the issue is resolved?
I don’t know if you’re using a code project, but here is the diff for SkeletalMeshComponent.cpp if you’d like to implement the fix into 4.13. The line numbers might be different as many changes were made between 4.13 and this submission.