Hi everyone, As the topic says I have some doubts about MaterialX import and how does this exactly work. I’ve been trying to import a MaterialX shader from Maya to UE and I’m getting this error. Any help to guide me in the right direction is greatly appreciated!
Hi, currently, only <standard_surface> node are supported during the import. Though looking at your error message, it seems like a problem of input mismatched between the surfaceshader input of your node and the connected node. You should check that.
Is there something we need to do to “activate” the ability to import USD with MaterialX?
I can’t seem to get any of them working (very likely user error), but then I try to import the “Chess Set” everyone is using (with USD and MaterialX)
(assets/full_assets/OpenChessSet at main · usd-wg/assets · GitHub)
The mesh is coming in, the system says it imported a bunch of normals … but the materials are not showing.
For the moment only Autodesk’s Standard Surface node are supported. If you want to import the chess set. Use the chess set file in the Standard Surface folder instead.
Hi, there is no usd file in sended folder, only mtlx files
i have the same problem that IMRSV Tools with USD shaders in unreal, but when i look at it in maya, I well see the standard surface applied on all objects
can you please details what’s supported by Unreal or how to allow unreal to read it nicely ?
thank you
Heya,
I just tried this too in 5.3, got very excited to see mtlx stuff showing up in houdini, then realised late in the day that houdini had ‘auto generate preview surface shaders’ enabled, so I was really seeing usdpreviewsurface nodes. Doh.
If I turn that off, the shaders break. UE generates this warning as it loads the usd scene:
USD: Warning: Ignoring material '/materials/skin_mtlx' bound to prim '/Geometry/Body' as it contains no valid surface shader source for render context 'unreal'
Is this something I can tweak at the primvar level within Houdini? The material is a ‘mtlx standard surface’ within the houdini UI. Down at the USD level the material prim says its info:id is ‘ND_standard_surface_surfaceshader’.
I got an answer via UDN, copying here in case others come across this issue;
When there’s materialx nodes in the scene, you’ll get another render purpose, so along with the usual ‘render/proxy/guides’, you’ll get ‘mtlx’ and ‘unreal’. I wasn’t expecting this, so didn’t go looking. Swap to mtlx to see the mtlx materials.
That said, the converter currently only understands external mtlx files on disk. Mtlx graphs defined in the usd file will be translated to regular usdpreviewsurface.
I hit a roadblock here as houdini’s mtlx exporter is a little broken, so stopped my testing and moved onto other things.
This worked well for me - changing the material environment from unreal to mtlx when importing works. The only issue I found is that Normal maps come with the green channel flipped, and that the Subsurface model in the King and Queen has some artifacts in Path Tracer.
*This works in UE5.3, I couldn’t find the option in UE5.1
Path Tracer:
Lumen:
Lighting using Atlux λ for Unreal Engine
Yes, MaterialX uses OpenGL (y+) for normal maps, and Unreal uses DirectX (y-). It is possible to flip the y channel (i.e. the green) as I have in the screenshot below for the king. This is however very laborious to do for every material in a scene.
You can also flip the green channel on the texture maps. These don’t live in the Browser contents, but instead are inside the USD Asset Cache under Asset storage:
Again you can open each normal map here and flip the green channel. This is equally laborious.
I wonder if there is a way to bulk edit these as you can regular textures in the Browser? Another thought/wish is if the Epic devs could add an option in the USD stage to “flip normals”
As an update to this, interchange has an option to flip the normals on import. Not sure if this is on by default for the materialX pipeline