Socket orientation issues when importing from Blender

I am building an aircraft blueprint in UE5 and ran into an issue when importing sockets from Blender. I am trying to attach ailerons, various flaps and slats to the wings and use rotated sockets to allow these mechanisms to rotate along the appropriate axis and rotation.

First issue is that the meshes that need to be attached to the socket must be counter-rotated prior to export from Blender in order to slot into the socket with the correct alignment. While this is a pain, it is easy to accomplish by taking the empty orientation and applying the negative version of those rotations to the child object, in this case the outer leading edge slat or LES for short.

The first image shows the outer LES lined up with the wing leading edge in Blender.

The second shows the LES selected and its orientation prior to counter-rotation:

The third shows the orientation of the empty that will be exported as a socket to UE. Note that the Z axis rotation cuts off and is 45.84 degrees when the field is selected :

Here is an image of the counter-rotation of the LES prior to export. Without this step, the LES will sit at an incorrect alignment in UE:

After exporting using FBX from Blender and importing into UE5, this is what the wing mesh looks like with the outer LES mesh displayed when attached to the appropriate socket:

Note that the LES mesh does not line up with the wing mesh as it did in Blender. Note that the coordinates are essentially the same after import. Even when the few phantom decimals are removed, the alignment issues persists.

After some manual tweaks of the socket in UE the alignment can be fixed but the X axis rotation had to be modified by 1.07 degrees. Mathematically this does not match up with the system in Blender at all:

Any suggestions on how this can be fixed will be greatly appreciated. While it is possible to make changes to the sockets in UE by hand, all those changes will be overridden when the mesh is reimported and the error should not be occurring in the first place.

you probably already have, but double check your import settings for unreal and make sure nothing is being flipped automatically. same with blender orientation. its common issue people have with Y up or Z up, mostly with Maya and MAX. comes down to personal preference.

Thank you very much for your response. I managed to finally find the culprit today, and the mistake was made in Blender even before I made the export. It turned out not the be the socket, but the actual counter rotation workflow I used for the control surfaces that needs to be pre-rotated before exporting.

While I pre-rotated the control surfaces (or LES from the example) using a local rotation by using counter values from what was shown for the empty that forms the socket, I found out just now that it doesn’t correctly match the final translation. I discovered this by duplicating the socket empty after orienting it to match the angles I want the control surface to rotate around and parenting the control surface to that duplicate. I then manually typed in zero in the rotation values for all three axis on the duplicate empty (which then changed the orientation of the LES mesh) and unparented the mesh, keeping the new translation. I then noted that that there was ultimately a rotation over all 3-axis that I did not consider.

I exported the wing and LES control surface to UE again and now the LES slotted in perfectly as it should. The lesson here is that when it comes to rotation in more than one direction, it is safer to counter the rotation by ‘reversing the process’ (using the duplicate empty method in this instance) than by trying to do it by hand.

While the socket empty had the rotational values:
X: -3.58d Y: 0d Z: 45.84d
The correct counter translation of the aileron should have been:
X: 2.5d Y: 2.57d Z: -45.84d

So we learn! Thanks for everyone who took the time to look at this.

1 Like