stehrani3d / MaterialEggs

MIT License
22 stars 1 forks source link

MaterialX errors #1

Open pablode opened 1 month ago

pablode commented 1 month ago

Hey, this may be an exporter problem, but there are a few errors when it comes to MaterialX nodes in the standalone USD files (respective mat.usdc, viewed with usdview 24.05):

clamshell Node interface error: Input 'in' doesn't match declaration: <convert name="mtlxconvert1" type="float" nodedef="ND_convert_boolean_float">

countertop Node interface error: Input 'base_color' doesn't match declaration: <standard_surface name="mtlxstandard_surface_grout" type="surfaceshader" nodedef="ND_standard_surface_surfaceshader"> Node interface error: Input 'in2' doesn't match declaration: <add name="mtlxadd23" type="vector3" nodedef="ND_add_vector3FA"> Node interface error: Input 'in2' doesn't match declaration: <add name="mtlxadd24" type="vector3" nodedef="ND_add_vector3FA"> Node interface error: Input 'in2' doesn't match declaration: <add name="mtlxadd19" type="vector3" nodedef="ND_add_vector3FA"> Node interface error: Input 'in2' doesn't match declaration: <add name="mtlxadd20" type="vector3" nodedef="ND_add_vector3FA">

cyc_wall NodeDef not found for Node 'ND_hmtlxcircles2d_float' Node interface error: Input 'mix' doesn't match declaration: <mix name="mtlxmix2" type="color3" nodedef="ND_mix_color3"> Node interface error: Input 'in1' doesn't match declaration: <multiply name="mtlxmultiply14" type="float" nodedef="ND_multiply_float"> Node interface error: Input 'in1' doesn't match declaration: <multiply name="mtlxmultiply15" type="float" nodedef="ND_multiply_float">

egg_amber NodeDef not found for Node 'standard_surface' Node interface error: Input 'opacity' doesn't match declaration: <standard_surface name="Surface" type="surfaceshader"> Invalid value: <input name="clampoutput" type="boolean" value="0"> (5x)

egg_damascus Node interface error: Input 'in' doesn't match declaration: <separate3 name="mtlxseparate3c1" type="multioutput" nodedef="ND_separate3_color3">

egg_geode Node interface error: Input 'in' doesn't match declaration: <separate3 name="mtlxseparate3c1" type="multioutput" nodedef="ND_separate3_color3">

egg_lava_stone Invalid value: <input name="clampoutput" type="boolean" value="0"> (5x)

egg_normals Node interface error: Input 'in' doesn't match declaration: <hsvadjust name="mtlxhsvadjust1" type="color3" nodedef="ND_hsvadjust_color3">

egg_ore_swirl Node interface error: Input 'in' doesn't match declaration: <hsvadjust name="mtlxhsvadjust1" type="color3" nodedef="ND_hsvadjust_color3"> Node interface error: Input 'in2' doesn't match declaration: <add name="mtlxadd9" type="vector3" nodedef="ND_add_vector3">

egg_patterns Warning: in _AddMaterialXNode at line 241 of F:\USD-24.05\pxr\imaging\hdMtlx\hdMtlx.cpp -- NodeDef not found for Node 'ND_hmtlxcircles2d_float' (many times, crashes Storm)

egg_pickle Invalid value: <input name="clampoutput" type="boolean" value="0"> (6x)

For reference, here is the 1.38 specification: https://github.com/AcademySoftwareFoundation/MaterialX/tree/v1.38.10/documents/Specification

Implementation (e.g. standard surface): https://github.com/AcademySoftwareFoundation/MaterialX/tree/main/libraries

pablode commented 1 month ago

I've made some efforts to fix the issues, most of them are trivial. Unfortunately, there is no equivalent for the ND_hmtlxcircles2d_float node in MaterialX 1.38 (and only partially in 1.39).

The asset can only render the same outside of Houdini if this node is replaced with logic that only uses the MaterialX standard nodes

Some other observations:

stehrani3d commented 1 month ago

Thanks very much again Pablo, that's very helpful. For starters I have updated the "cyc_wall" asset to use the native MtlX Tiled Circles node. I'll need to do the same for the "egg_patterns" asset.

stehrani3d commented 1 month ago

@pablode Whenever you find some time, would you mind taking another look and seeing what errors remain after the recent commits? Thank you.

pablode commented 1 month ago

Sure! Most has indeed been resolved πŸ™‚ some minor ones left:

egg_ore_swirl Node interface error: Input 'position' doesn't match declaration: <noise3d name="mtlxnoise3d1" type="float" nodedef="ND_noise3d_float" Node interface error: Input 'in1' doesn't match declaration: <add name="mtlxadd9" type="float" nodedef="ND_add_float">

egg_damascus (6x), egg_lava_stone (5x), egg_patterns (3x), egg_pickle (6x) Invalid value: <input name="clampoutput" type="boolean" value="0">

egg_patterns Node interface error: Input 'in' doesn't match declaration: <convert name="mtlxconvert1" type="float" nodedef="ND_convert_boolean_float"> Node interface error: Input 'in' doesn't match declaration: <convert name="mtlxconvert2" type="float" nodedef="ND_convert_boolean_float"> Node interface error: Input 'in' doesn't match declaration: <convert name="mtlxconvert3" type="float" nodedef="ND_convert_boolean_float">

stehrani3d commented 1 month ago

Fantastic, thanks very much Pablo. It's not apparent to me what I can do on the Houdini side to fix "ore_swirl" and "damascus". For "patterns" I can revert the mtlx convert nodes to the previous Signature.

pablode commented 1 month ago

egg_patterns looks good now πŸ‘

regarding egg_ore_swirl:

regarding the unifiednoiseXd:clampoutput issues: