Hi! I am experiencing a problem with Skeletal Meshes made in and exported from Blender 2.71.6, when Imported into Unreal Engine 4. Both Unreal Engtine 4.4.1 and 4.2 experience the same problem. I do not know really whether the error is Blender’s FBX Exporter or UE4’s FBX Importer which is why I have already submitted a bug report to the Blender Foundation and so am repeating that Bug Report here for Epic Games to take a look at. That being said I suspect the error is with Blenders FBX Exporter. Any ways:
Here it is.
System Information
Operating system and graphics card
OS :Windows 7 Professional 64 Bit. Service Pack 1.
GPU: ASUS Nvidia Geforce GTX 780Ti. Driver Version 9.18.13.3788
Blender Version
Broken: 2.71.6
Worked: (optional)
Short description of error
A spaceship model with animated parts made in Blender. With two animations. A canopy open animation and a landing gear down animation.
Both animations work absolutely fine inside Blender. However when exported as an FBX file and imported into Unreal Engine 4 version 4.4.1 or 4.2 the result is that some of the bones in the Armature have been moved. It looks as though they have been snapped to their parent.
This does not make any sense because I am using the exact same Mesh and Skeleton which has not been changed at all, but that worked
fine when exported with Blender Version 2.70, with its version of the FBX Exporter and imported into Unreal Engine 4.2 But now that I use that
same Blend File with Blender 2.71.6 I get bone translation errors inside Unreal Engine 4.
Exact steps for others to reproduce the error
Based on a (as simple as possible) attached .blend file with minimum amount of steps
- Inside Blender - Make a single Mesh Object with two mesh parts inside it that are not connected by joined polygons. For example a Car and a Car Sun Roof.
We also need to add a Sun Roof Mover mesh inside the Mesh Object to move the Sun Roof. So inside the Mesh Object we have three unconnected Meshes,
Car Body, Sun Roof Slider and Sun Roof.
- Let us imagine that we want the Sun Roof to to be able to slide backwards, but also to tilt by say 45 degrees.
- Add an Armature at world location 0,0,0. With the Armature selected enter Edit Mode. Name the single bone “Root.” Create another bone
at the exact same location as Root and name it “Car Body”. Create another bone and move it to a location just behind the Sun Roof and name it
“Sun Roof Mover.” Make another bone and move it to the approximate centre of the Sun Roof and name it “Sun Roof Rotator.” We now have 4 bones.
- Parent Sun Roof Rotator to Sun Roof Mover. Keep Offset. Parent Sun Roof Mover to Car Body. Keep Offset. Parent Car Body to Root. Keep Offset.
- With the Armature Selected enter Edit Mode and with the Pivot Point set to 3D Cursor and the 3D Cursor located at world space 0,0,0 scale the Bones
by 100 - S, 100, Enter.
- Select the Mesh and enter Edit Mode. With all Vertices selected and the 3D cursor at 000 scale the mesh by 100… S, 100, Enter.
- Select the Mesh Object and with Shift held down select the Armature. Parent the Mesh to the Armature. With Empty Groups.
- Assign all the vertices of the Car Body to the Vertice Group “Car Body.” Assign all the vertices of the Sun Roof Slider to Vertice Group “Sun Roof Slider”.
Assign all the Vertices of the Sun Roof to the Vertice Group “Sun Roof Rotator”.
- With the Armature Selected enter Pose Mode. Select all the Bones and Insert a Location and Rotation Key Frame. Move the Timeline to Frame 40.
Select the Bone “Run Roof Slider” and move it along the Y Axis 3 Blender Units. The Sun Roof Slider and the Sun Roof itself will be moved because the
Sun Roof Rotator is parent to the Sun Roof Slider. Select All Bones and insert key frames Location and Rotation. Move the Timeline to Frame 80 and
select the bone Sun Roof Rotator. Rotate it 45o and select all Bones. Insert Location Rotation.
- Now in Blender you have an Animation 80 frames long that features the Sun Roof sliding backwards and tilting 45 degrees. Great! Working as Intended.
- Select the Mesh Object and then with Shift held select the Armature.
- Export as FBX. Check “Selected Objects” Change Smooth groups to “Face” from the drop down menu. Everything else is default. Export as FBX.
- Import into Unreal Engine 4. On the Import Window, check “Import Animations.” Import the Skeletal Mesh.
- Open the Skeletal Mesh inside the Skeletal Mesh Viewer - Persona - and view the animation.
- You will see that when the Animation is played inside UE4 the Bones have been incorrectly translated. It looks as if any bones that Inherit Location, have failed to Inherit Location from their parent Bones. Or alternatively they have been snapped to their parent.
I don’t know why. Please help!
So as an example of this error I include a Blend file.
https://drive.google.com/file/d/0ByTG1Z_4SBShTFdQeVJNbzJVWFk/edit?usp=sharing
This Blend File contains a simple “Car with Sun Roof” Mesh and Armature and an Animation for the Sun Roof.
My spaceship for my computer game project features an animation similar in design to the Sun Roof animation on the car. That Skeletal Mesh also has the same errors inside UE4, that of incorrectly translated bones.
I hope that you guys at Blender Foundation can figure out what is going wrong here and help to fix it. Thanks so much!
Yours faithfully,
Russell Morahan
To Epic Games: This Bug Report has been assigned to a Blender Developer who is investigating this issue. I would be happy to put Epic Games in contact with that Blender developer if they think that would be helpful. Please PM me if you would like me to do put you, Epic Games, in contact with the Bender Developer assigned to this task. Thanks!