MaterialX graph editor in solaris?
1501 9 2-
- traileverse
- Member
- 241 posts
- Joined: 11月 2015
- Offline
-
- jsmack
- Member
- 6706 posts
- Joined: 9月 2011
- Offline
-
- Scribbler
- Member
- 11 posts
- Joined: 4月 2017
- Offline
What WOULD be awesome is the ability to edit the node graphs of existing MaterialX files in Houdini - importing as well as exporting.
The existence of this tool suggests it should be possible to do a 'proper' round trip:
Another DCC -> Import MaterialX graph -> Houdini edit -> Export to MaterialX -> Re-import to Houdini
Adding a 3rd party node editor would not seem sensible, though - agree there!
The existence of this tool suggests it should be possible to do a 'proper' round trip:
Another DCC -> Import MaterialX graph -> Houdini edit -> Export to MaterialX -> Re-import to Houdini
Adding a 3rd party node editor would not seem sensible, though - agree there!
-
- jsmack
- Member
- 6706 posts
- Joined: 9月 2011
- Offline
Scribbler
What WOULD be awesome is the ability to edit the node graphs of existing MaterialX files in Houdini - importing as well as exporting.
The existence of this tool suggests it should be possible to do a 'proper' round trip:
Another DCC -> Import MaterialX graph -> Houdini edit -> Export to MaterialX -> Re-import to Houdini
Adding a 3rd party node editor would not seem sensible, though - agree there!
Yes, proper round tripping and better canonical support for MaterialX in Houdini would be a plus.
-
- rafal
- スタッフ
- 1423 posts
- Joined: 7月 2005
- Offline
Solaris revolves around USD. Therefore Karma consumes USD scene rather than .mtlx files. And therefore the primary focus is USD rather than MaterialX.
However, Karma is extremely closely related to MaterialX, because the (internal) Karma shader nodes were originally 1:1 with MaterialX (now they are a superset; ie there are a few karma-only shaders). Therefore we have keen interest in MaterialX support.
But, because of Solaris, we prefer its integration thru USD rather than pure .mtlx. There is an ongoing work in the community to bridge USD and MaterialX together (usd-mtlx AWSF subgroup), and perhaps make USD a transport format for MaterialX shaders (that way MaterialX shader would be exportable/importable thru .usd files instead of, or in addition to .mtlx). That's our primary focus.
That's seems to be the direction. For example, MaterialX decided to decouple the geometry specification and material binding from the core spec, which allows the USD to take over, and allows MaterialX to focus on shader graph definition (something that's lacking in USD).
The import is very clunky but somewhat doable (it relies on the USD file format plugin for .mtlx).
1) Put down a Layer LOP (Tab > File), and load .mtlx file
2) Put down a Edit Material Network LOP, choose the Mtlx material primitive, click "Load".
Inside you will see an editable and re-exportable VOP network representing the MaterialX shader graph.
So the focus is on improving MaterialX support in USD, so that the file format plugin can robustly handle loading arbitrary .mtlx files. But, the other option (I think there is an RFE for it) is to load .mtlx files directly to VOPs. This would probably be implemented as a new script mtlx2vop.py.
However, Karma is extremely closely related to MaterialX, because the (internal) Karma shader nodes were originally 1:1 with MaterialX (now they are a superset; ie there are a few karma-only shaders). Therefore we have keen interest in MaterialX support.
But, because of Solaris, we prefer its integration thru USD rather than pure .mtlx. There is an ongoing work in the community to bridge USD and MaterialX together (usd-mtlx AWSF subgroup), and perhaps make USD a transport format for MaterialX shaders (that way MaterialX shader would be exportable/importable thru .usd files instead of, or in addition to .mtlx). That's our primary focus.
That's seems to be the direction. For example, MaterialX decided to decouple the geometry specification and material binding from the core spec, which allows the USD to take over, and allows MaterialX to focus on shader graph definition (something that's lacking in USD).
ScribblerThere is already a rudimentary "Export to MaterialX" via Right-click on the VOP node > Save > MaterialX ... menu. The actual work is done in the vop2mtlx.py script.
Another DCC -> Import MaterialX graph -> Houdini edit -> Export to MaterialX -> Re-import to Houdini
The import is very clunky but somewhat doable (it relies on the USD file format plugin for .mtlx).
1) Put down a Layer LOP (Tab > File), and load .mtlx file
2) Put down a Edit Material Network LOP, choose the Mtlx material primitive, click "Load".
Inside you will see an editable and re-exportable VOP network representing the MaterialX shader graph.
So the focus is on improving MaterialX support in USD, so that the file format plugin can robustly handle loading arbitrary .mtlx files. But, the other option (I think there is an RFE for it) is to load .mtlx files directly to VOPs. This would probably be implemented as a new script mtlx2vop.py.
-
- Siavash Tehrani
- Member
- 686 posts
- Joined: 7月 2005
- Offline
rafalThat's really what I hope to see, rather than dealing with .mtlx documents at all. Saving out valid .mtlx from Houdini was really hit or miss in my testing, whereas saving MaterialX as USD files "just works" and the networks rebuild in the Edit Material LOP exactly as they were made. So this is lossless within the context of Houdini, but I guess there is still some work needed to fully support the spec through USDShade: https://wiki.aswf.io/pages/viewpage.action?pageId=22286781 [wiki.aswf.io]
and perhaps make USD a transport format for MaterialX shaders
-
- Antti1999
- Member
- 5 posts
- Joined: 10月 2022
- Offline
-
- tamte
- Member
- 7433 posts
- Joined: 7月 2007
- Online
-
- Antti1999
- Member
- 5 posts
- Joined: 10月 2022
- Offline
I don't think you can, since it's not represented as nodes in USD unlike MtlX
I'm new to Houdini in general and Python too.
When people make their own material managers how do they save selected nodes on a disk and then load it?
I was just experimenting with Houdini couple of days ago and tried to save some pretty complex material nodes with asCode() python function, but the generated code was enormous in size.
Is this the only way? Or correct way? I know this is off-topic and sorry

-
- jsmack
- Member
- 6706 posts
- Joined: 9月 2011
- Offline
Antti1999I don't think you can, since it's not represented as nodes in USD unlike MtlX
I'm new to Houdini in general and Python too.
When people make their own material managers how do they save selected nodes on a disk and then load it?
I was just experimenting with Houdini couple of days ago and tried to save some pretty complex material nodes with asCode() python function, but the generated code was enormous in size.
Is this the only way? Or correct way? I know this is off-topic and sorry
For a VOP Material Builder, right click and select Create Digital Asset to save as a new operator type.
-
- Quick Links