Newbie here.
I just spent two hours struggling with the UI because I couldn’t figure out why my FBX imported as a Material Instance instead of a Master Material. While I understand this is now a ‘feature’ for performance, the new FBXLegacyPhongSurfaceMaterial is a nightmare for newcomers. It breaks almost every existing tutorial and isn’t intuitive at all.
@UE_FlavienP I know the intention is good, but it’s overwhelming to import a FBX file for the first time and not be able to figure out how to change even the basic color. At the very least, there should be a clear option to use the legacy import workflow instead of updating some mysterious string in an unknown ini file.
my two cents, so i’m following a tutorial where we create assets in blender, texture them in substance painter, then use them in ue. The tutorial was using material and not material instance so i found this post. Turns out i could simply delete the material instance, and create a brand new material and assign it to my asset.
Not a big deal in the end, but yeah, a working “import as material/material instance” choice would be nice i guess.
As a general question, when importing gltf models specifically using the “import into level”/”as scene”, unreal doesn’t generate instances but instead generates plain materials, and there is no setting in that import pipeline to affect that. Is that the intended behaviour?
And when importing an fbx, trying to manually set up the instances to use a different master material than the fbx phong legacy one, int the import dialog, unreal seems to fully igonore that?
Which version of the engine are you using? I cannot reproduce your behaviour when importing a gltf into a level => it generates instance materials and that is the expected behaviour.
Can you show me what you see in the pipelines at the top of your import dialog when your do your gltf import into level.
For FBX import not using the material instance settings is a bug we are aware of.
Same for when importing an fbx after changing the ConvertorDefaultPipeline and/or the DefaultMaterialPipeline in the project settings to a custom pipeline. It still uses the default ones (UE 5.7.3).
Also noticed, identifying duplicate materials works (it doesn’t create new materials) but it still imports the textures of the duplicate materials.
Wow. Super unfortunate that it now works this way. Can you provide more info on how to edit the ini file to fix this issue? You’ve explained the part of the file to edit, but where is the one you’re talking about? Also, is there any chance the feature will return someday? I mostly do low poly games with small textures, and them all being cluttered up as instances is making simple things take much longer.
Edit: You can manually change the parent of the material instance and the parent material will work. My workflow for my simple low poly game is:
In Content Browser
Create a material (name = M_MasterMaterial)
In M_MasterMaterial
Add a Vector Parameter node (Name = DiffuseColor, Default Value = Black) and connect to Base Color
Add a Scalar Parameter node (Name = Metallic, Default Value = 0.0) and connect to Metallic
Add a Vector Parameter node (Name = SpecularColor, Default Value = Dark Gray) > Drag off RGB and type Desaturation > Drag off the return and type Multiply (B = 0.5) and connect into Specular
Add a Scalar Parameter node (Name = Shininess, Default Value = 25) > Drag off return and type Clamp (Min = 0.0, Max = 100.0) > Drag off return and type Divide (B = 100) > Drag off return and type OneMinus and connect to Roughness
Add a Vector Parameter (Name = EmissiveColor, Default Value = Black) and connect to Emissive Color
Add a Scalar Parameter (Name = AmbientOcclusion, Default Value = 1.0) and connect to Ambient Occlusion
In Content Browser
Right click > Import to Current Folder > Select your FBX file
Under Materials
Material Import = Import as Material Instances
Parent Material = M_MasterMaterial
Click Import
Open one of the Material Instances that were imported
In the Material Instance
Under Details > General
Parent = M_MasterMaterial (Change it to your master material)
Under Details > Parameter Groups
Edit your exposed Parameters
I added the extra nodes for specular because the importer uses SpecularColor, while Unreal’s Specular input expects a single scalar value rather than an RGB color. So the chain SpecularColor > Desaturation > Multiply > Specular is simply converting the imported color to grayscale, toning it down, and feeding Unreal the kind of value that input is actually designed to use. I added the math for shininess because the importer provides Shininess, while Unreal uses Roughness, and those are basically inverse concepts. So the chain Shininess > Clamp > Divide > OneMinus > Roughness keeps the shininess value in a sane range, normalizes it to 0–1, and then inverts it so that higher shininess becomes lower roughness.
**********************
Original: I can confirm in 5.7.3 that FBX material import still ignores the selected custom Parent Material. The created material instances default to FBXLegacyPhongSurfaceMaterial, even when the custom parent uses the expected parameter names.
What’s even more frustrating is that the response from Epic is basically ‘just do this,’ as if the issue is user error, when that solution still does not work in 5.7.3. The custom parent material route is being presented as the answer, yet the importer still defaults to FBXLegacyPhongSurfaceMaterial. So users are being told there is a solution, while the engine continues to ignore it. On top of that, the UI still exposes options as though they work correctly, which is misleading and should have been updated.
For something as basic as importing materials, this is a big failure and a poor reflection of Unreal’s priorities and workmanship.
The “create a Material Instance from a parent” is currently bugged in 5.7 and should be fixed in 5.8. You cannot use it to assign the Parent Material you desire. UE will discard whatever you put here.
If you do not mind some Blueprint or Python you can
make a custom Interchange Editor Blueprint pipeline, that does assignment of parent material to material instances
add this pipeline in the stack doing the import of your file format so that the code is run on import
Something like that, here I went one step further using a datatable to map different parent to different material based on the name. For a first test you can apply the same material as parent on all the material instances.
I added this new “IEBP replace Material Instance Parent” custom pipeline in the stack of pipeline that is importing gltf files ( zone “1” in the screenshot). You can add support for FBX stack by adding in the zone “2” of the screenshot
Just in case u can use this as well i wont be reading all the conversations here and if u got the fix good other wise… use this console command and import ur file again Interchange.FeatureFlags.Import.FBX False
it imports the fbx file in legacy mode (older version in UE5.7) with all the materials
Peace