Arnold for Houdini Forum
Rendering with Arnold in Houdini and Solaris using the HtoA plug-in.
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Solaris and materialx

Message 1 of 8
1415 Views, 7 Replies

Solaris and materialx

Is it possible to render the materialx shaders (ND_standard_surface_surfaceshader) in Solaris? It looks like it's using the USD preview shaders (UsdPreviewSurface)?

Tags (2)
Labels (2)
Message 2 of 8
in reply to: richard

If you do Arnold | Material | Import Materials from the top level menu in HtoA, you can import a .mtlx file as a shader network inside an Arnold Material Builder, since it contains Arnold nodes.

You can then copy this to Solaris inside an Edit Material LOP and assign it there.

// Stephen Blair
// Arnold Renderer Support
Message 3 of 8
in reply to: richard

Ok, that’s a workaround. So there’s no way to render Houdini's materialx in Solaris then?

Message 4 of 8
in reply to: richard

You can render solariss MaterialX with arnold in houdini 19.0.622, but till now in houdini 19.5.303 there is an error | node "ND_XXX_XXX" is not installed.

Message 5 of 8
in reply to: richard

Hi, I'm running into the same issue in Houdini 19.0.720. 

Will there be support for Solaris' materialX nodes by any chance? It seems like the perfect cross-renderer shader. But As Richard mentioned, only the UsdPreviewSurface is recognized at the moment.


Edit: MaterialX nodes work now, with Arnold and HtoA

Message 6 of 8
in reply to: richard

You can, it's all about the node graph structure in the mtlx file.

First of all there is some rules to write a successful mtlx file from houdini:

1- Like OSL, you can't have more than one output type for you setup. So, make sure you have just one output, for example you can't have surface shader, and displacement shader output in the same file, houdini will write it but will not be able to read it again.

2- Your network should be exported from a subnet, I mean you can't just select you mtlx shader network from vex builder and export it, you need to but it inside a subnet and name it, the subnet name will be your nodeGraph name after writing the mtlx file.

3- all shader network connections inside that subnet should respect data types between node, for example, DON'T connect boolen output to float, or connect RGB output to float input, convert it first to the right data type then connect it. you can use separate and combine node to achieve that.

4-if you still can't export without errors, usually because houdini can't get the node input connections yet, for easy fix, convert this subnet to digital asset, then export it, but all your promoted parameters should be subnet inputs and your output should be subnet output.(if you need to bake it as a mtlx shader in the feature, if you just need to export just convert the subnet without inputs just an output node)


After exporting without any errors in houdini console, you can import and use the same setup in Houdini or any other software that supports mtlx. 

Message 7 of 8
in reply to: azab4d

You can not just export your material network and import it again to render with it. Also, you can convert your shader network to a shader node inside houdini to be always there as a mtlx node, using and, I can make a tutorial about how to make a materialX node from a network inside houdini, let me know if interested.

Message 8 of 8
in reply to: azab4d

a tutorial would be welcomed!

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report