After searching several posts, I partially track down the problem:
My walk animation is driving my character’s hip bone translation, but the “socket_sunglass” is driven by my character’s skeleton. which then causes the attached mesh and the walking animation go out of sync.
This is why if I retarget my character’s hip bone to skeleton, then the attached mesh and walking animation will go synced again. (but the animation will go very weird, since it lost some of the animation data in hip bone)
But still, there’s something I don’t understand: how come the preview mesh in Persona is synced with the walking animation? Is there a way to attached meshes like that?
I didn’t found a way to solve the problem. So in then end, I just simply attach the mesh in 3dsMax then export my character’s mesh + additional mesh in a single .fbx file.
Then, after import the .fbx to UE4, I use material alpha to control (show/hide) the visibility of the additional mesh.
Very bad workaround I know, but I’m not smart enough to find a better solution.
If they are using the same skeleton you can attach to root and use Set Master Pose Component and the Target will use the Master’s animations. If you’re doing something that doesn’t need to be skinned (purely rigid) I’d suggest using static mesh component then attaching to a socket should work independent of what animations your are playing.