order of materials changes on reimport

Update: this problem is still present in UE 4.15.0-3258144, brand new project, with only one Static mesh imported.
At the moment only viable solution is to work on the assests in version 4.13 and when model gets finished/approved then export it to 4.14/4.15p

----- rest of the report is for 4.14 -----

In my 3ds max asset creation workflow I use 1 dummy box as a master parent with all the geometry meshes and UCX pieces linked to it.
This helps to maintain pivot of the asset even after serious changes of the asset’s dimension and so on. Since upgrading to 4.14 i am frequently running into serious issue.

Depending on what meshes linked to the master parent and what IDs those meshes have material ID swaps after reimport.

Let’s say i have asset made from multiple meshes and i import it into UE. I assing materials to the IDs and all is fine. However, if merge some geometry in 3ds max and then reimport, materials get randomly swapped.

To illustrate my point i made few screenshots:
This si my 3ds max scene. Both assets have same name and are essentially same. Except the left one has all the geometry merged together while one on the right is composed of multiple meshes. They both have same material with submaterials named 1,2,3,4.

If i export left (merged together) one, asset in UE looks as it should, all materials are in correct places.

If i export right one where multiple meshes are linked to export node, asset in UE looks differently. Notice how materials slots in the editor stay same but slots in the asset LOD0 section changes for no apparent reasons. (bottom right corner of the image.)

Another example could be changing small detail on asset and reimporting it again. It leads in to another random change.

Steps to reproduce.

  1. Create static mesh asset composed of multiple geometry meshes linked to dummy box as a pivot node.
  2. Export asset to the UEditor.
  3. Attach all the meshes together, link the new mesh to the pivot node and export again.
  4. Notice how submaterials are assigned differently to the asset.
  5. This also happens randomly when 2 or more meshes are merged/attached together so the number of the objects in the hierarchy and ids changes, but it is harder to reproduce it.

Info that may be relevant.
I am using Win10, nvidia gtx 970, UE 4.14.3
The problem can be replicated in fresh project


I’ve posted this question on the forum hoping it was simple problem but no one could provide answer so i am looking for solution here.
Link to thread

I cannot find mention about this problem on the internet so it’s possible I am doing something wrong. Help please.
Thank you, H.

It looks like a known issue in 4.14.

yes, but is marked as fixed while the problem still exists.

I have moved this into the ‘Bug Reports’ section for further investigation.

Hey Harcarik,

We actually found a new import issue regarding material ID assignment. This has to do with FBX files with multiple meshes. If you select “Combine Meshes” upon import the bug will occur. The only know workarounds are what you have already stated. By combining the mesh prior to import.

You can find the issue here: Unreal Engine Issues and Bug Tracker (UE-40814)

Keep in mind we may not prioritize or address the issue quickly. We do gauge community interest through votes so if you feel this is important spread the word and vote!

,

Ed

1 Like

Confirmed : it still exists in 4.15.

Reimported a FBX file, and material 1 & 2 got swapped in UE.

bumpppppppp

This bug is fixed. At least in my testing.

This is still an issue in 4.20! Incredibly frustrating and a massive timesink to fix the errors it produces, not to mention the actor merging tool breaks the material slots even further because of this issue!

Hi Shirk.

The specific issue originally reported by Harcarik was confirmed to be fixed back with the UE 4.15 release. What you are experiencing may be a new issue. Please follow our new bug submission process to provide the necessary information so our support staff can look into the issue

https://epicsupport.force.com/unrealengine/s/

For anyone still interested in this.
Unreal will assign material slots in a ranking order that mimics the meshes ranking order in your 3D modelling program.

Example:
if I have a mesh containing 2 cubes crashed together.
My outliner in Maya may look like this:

Cube_01
Cube_02

Thus whichever material is assigned to Cube_01 will appear in Material slot 1

If the order of these changes during edits and the outliner looks like this:

Cube_02
Cube_01

if I reimport from this state then it will appear as if the materials have swapped position in Unreal

So just be aware of how things are ordered in your scene before export, as this will directly affect material slot ranking on import.

If you have a single mesh with multiple materials on in and wish to change material slot order.
The easiest way I have found if to just break the mesh apart and make sure the corresponding faces are in the order you want.

Some of us don’t use Maya, not to mention, why do i need to reorder meshes in 3ds max just to get the material right?

I’m just telling you what worked for me.
I think the same probably applies to all 3D software, though I haven’t tested this in any other programs.

Same problem in 5.2.

Good job epic. Six years and the problem still exists while you’re adding more advanced features, introducing bugs as well.

2 Likes

Just to pile on the issue, still exist in 2023 5.2.
export a combine mesh out of UE 5.2, delete some components in maya and reimport it back to UE, and all the material slot name and it’s order is changed.

1 Like