Solution: Thanks to Leander for putting up with me. (Using Blender 2.78c)

  1. Import the animation cleanly with my importer tool. It uses the standard blender fbx parser and cleanly imports to empties. I will provide more details soon. Its nothing special and does less than the official importer. I will provide the script to the on another question and link to it.
  2. Import the UE4 mesh and armature with all default settings: most important Y primary X secondary axis. Do not use joining up bones or any other features which attempt to 'fix' the bones.
  3. The bones will all import and they will look strange (see picture) but this is in fact the trick. They are imported as joint orientations down the x axis. They may point in the y direction but the animation is baked for x axis. Imported mesh file with bones
  4. The animation is imported with the same local rotations from the fbx file and can be used with it by adding copy rotation constraints (world to world) to every bone.
  5. Because the imported animation is a faithful copy the resulting animation is almost perfect (there is a twist in the upper left arm that I am working on only occurs in the last 10 frames.)[update no that's actually part of the animation in UE4, its a bug in their anim] [enter image description here]2
  6. As you can see the results are good and very faithful to the original. Last frame of the Death animation from Unreal
  7. So this achieves my goal. However I would still prefer a nicer visual which isn't so confusing for the bones being just rotational joints. I honestly thought Blenders fbx import was broken until I realized that this is the intended behaviour. So in terms of development all that would be needed is a switch to change bones into a rotation bulb graphic instead of Octahedral and then the importer could default to this setting when building the armature.
  • $\begingroup$ Why don't you transfer the animation from the empties to bones? $\endgroup$ – Leander May 25 '18 at 7:36
  • $\begingroup$ Hi Leander. Quite simple. We need complete fidelity with the rest of the industry. Unfortunately the armature system does not support a different angle than the parent child location orientation of the bone. This is why the fbx importer has to make lots of compromises but ultimately fails. A relatively simple fix of having an object deformer or a custom skin shader would allow Blender to be fully compatible with most game engines and other mainstream DCCs. $\endgroup$ – Simon Gillespie May 25 '18 at 7:54
  • $\begingroup$ Does "parent child location orientation" refer to maya's concept of Joint Orient? Nevertheless I guess it would still be better to use Blender's armature system. Write for the working system, not a new one. To create another orientation you could still use bone parenting with some fixed naming convention. $\endgroup$ – Leander May 25 '18 at 8:04
  • $\begingroup$ I think JO is another thing that usually occurs when deparenting and maya inserts a JO value to keep it there. $\endgroup$ – Simon Gillespie May 25 '18 at 8:06
  • $\begingroup$ You can also manually edit the JO. I'm just trying to understand "Unfortunately the armature system does not support a different angle than the parent child location orientation of the bone." I think it would be best if you could elaborate on that in the question and state what your actual goal is, rather then only proposing the solution you thought of. Maybe someone could find a workaround which is much easier/faster. It seems to me as if "I'm trying to use hook to deform a mesh using empties" is not the main question, but an obstacle of your solution. $\endgroup$ – Leander May 25 '18 at 8:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.