Duplicate linked rigged meshes do not appear in Unreal

I added armature to two boxes 1 and 2, where 2 is a linked duplicate of 1.

But, the 2 box does not appear after FBX-exporting to Unreal, and in the skeleton asset the bone for it says - no assigned vertices.

Is it a Blender FBX export, or Unreal problem? I have to make a 10 wheel vehicle and duplicating its wheels instead of linking seems to be a problem for further changes in the model.

Hi @Extruder,

The issue is, at least technically, a Blender one. A bit of background info to help others too . . .

When you create a mesh in Blender the ‘name’ ( like ‘cube’ ) which is represented in the Scene graph as an orange triangle, is actually just a container. It’s name is a convenience - which is why you generally renmame it to something meaningful. This container holds the actual vertex data of the mesh involved ( and lots of other properties ) . This vertex data is represented by the green triangle.

When you move/rotate or scale an object in object mode, what you’re actually doing is moving/rotating/scaling the container - the vertices inside the conatiner then get this transformation added to their original properties.

A linked duplicate on the other hand is a clever efficiency. It creates a new container, but inside this container instead of the ‘real’ vertex data, it points to the original vertex data in the initial mesh you duplicated. This is why your green triangles both say Cube.008. It’s the same data. It appears to be in a different location in the viewport because the container for this duplicate is ‘real’ so anything inside it gets the containers transform added to it when it is displayed ( or anything else the container allows).

The upshot to all this is that when your rig a vertex and bind it to a bone, that’s vertex level information, not container level, so the Cube.008 data … the vertices, cannot be assigned, at the same time, to different bones. This is why Unreal is saying there are no assigned vertices for one of the bones.

The wheels will need to ‘real’ before you do the skinning/binding. You can turn the linked duplicates into ‘seperate’ entities with this…

Someone may have a script/ add-on that automates this process, which will be more efficient than doing it manually, especially if it’s going to be an ongoing revision process.

Hope this was of some help.

As a side note - I was curious as to whether the fbx format retained duplicated linked info - and so far as blender import/export is concerned it does - which was a, pleasant, suprise. However, Unreal simply converts each linked duplicate into an unique mesh.

Cheers,
Dj.

1 Like

DamianJ, Thanks for the explanation!

I also found that linked duplicates are useless for rigging even for Blender, because if you rig them with ‘Parent - Armature Deform’ sub-menus, they will behave weirdly in the Pose mode.
The only way to rig them to an armature is via ‘Parent - Bone’, then they work properly, probably because animation transformation like rotation is applied to the container, not the unique mesh. But, Unreal still does not import them correctly.

It is bad, because I hope to paint the wheels in the same UV/texture as the vehicle, but now I need a separate texture. Linked duplicates do not create duplicate shapes in UV maps, and there is no need to adjust UV maps etc.

Seems as it is a design flaw, imo a linked duplicate should look as a first-class non-duplicated object for the user, creating a hidden mesh for deformations if necessary.
Or give an option to export the model with linked duplicates as ordinary meshes.

Hey,

If all the wheels are going to be using the same texture, then there is no reason why the primary model wheel cannot share UV space with your vehicle UV space - if you select both the wheel and vehicle and then go into UVEdit mode they will both appear and you can pack them as you like. So long as there is no overlapping of the wheel and vehicle it will texture completely fine.

If, however, each of your wheels is going to have a different texture, then a seperate texture just for the wheel is a better option. If your texturing is based on masks ( ie black and white images) then you could use Unreal’s material system to give you the variations in a shader/blueprint. Alternatively you could divide up a square UVSpace into smaller squares, put the entire wheel UVMap into one of these and then, create the variations in each of the other squares so that ( like a UDIM or sprite sheet ) you can assign the offset co-ordinates of which sub-square to use ( on the larger square of your entire texture ) via the texture coordinates in the Unreal materials node set-up.

I’m not sure why you need to rig the wheels in Blender, doing that in Unreal will give you much better control over animation. It would also mean you only need one wheel mesh imported into UE4 and the duplicates are created there.

You are correct in that simply parenting an object to a bone will not import into Unreal correctly - UE4 uses bone weights in it’s skeletal meshes, so direct parenting at best will just look to UE4 as an extension of the bones hierarchy and ignore the vertex data for deformation.

Cheers,
Dj.

1 Like

Actually, the vehicle is a tank with 14 wheels and 30 bones overall. I do not know how to rig it within Unreal, if it is possible, the Unreal vehicle tutorial probably described the process.

I have found the transfer UV function in Blender, it is more work than with linked duplicates, but at least a workaround to avoid duplicated UV islands.