Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Interface input connections to interior nodes in nodegraphs do not load in #94

Open
kwokcb opened this issue Oct 8, 2024 · 2 comments

Comments

@kwokcb
Copy link
Contributor

kwokcb commented Oct 8, 2024

Issue

If you have a document with a nodegraph with inputs which are connected to downstream nodes, these
connections are not made when loading in.

Steps

  1. Load in this example file:
<?xml version="1.0"?>
<materialx version="1.38">
  <surfacematerial name="USD_Default" type="material" xpos="7.614309946326862" ypos="2.9716248911086702">
    <input name="surfaceshader" type="surfaceshader" nodename="Standard_surface" />
    <output name="out" type="material" />
  </surfacematerial>
  <standard_surface name="Standard_surface" type="surfaceshader" xpos="3.319462081295691" ypos="1.3830203895725879">
    <input name="base_color" type="color3" value="0.8, 0.8, 0.8" nodegraph="Nodegraph" output="out_Add" />  
    <output name="out" type="surfaceshader" />
  </standard_surface>
  <nodegraph name="Nodegraph" xpos="0.7769098475963486" ypos="2.948029272574578">
    <add name="Add" type="color3" xpos="3.5103239549683254" ypos="2.7896954322821355">
      <input name="in1" type="color3" interfacename="in_Add" />
      <input name="in2" type="color3" interfacename="in_Add_1" />
      <output name="out" type="color3" />
    </add>
    <output name="out_Add" type="color3" nodename="Add" />
    <input name="in_Add" type="color3" value="0.094118, 0.74902, 0.313725" />
    <input name="in_Add_1" type="color3" value="0.929412, 0.282353, 0.027451" />
  </nodegraph>
</materialx>

This example was created in the editor and while creating it seems okay so this appears to be purely a load issue.

  1. When you look at the graph, it looks like this:
    image

  2. If you example the XML (using text preview):

<?xml version="1.0"?>
<materialx version="1.38">
  <surfacematerial name="USD_Default" type="material" xpos="7.614309946326862" ypos="2.9716248911086702">
    <input name="surfaceshader" type="surfaceshader" nodename="Standard_surface" />
    <output name="out" type="material" />
  </surfacematerial>
  <standard_surface name="Standard_surface" type="surfaceshader" xpos="3.319462081295691" ypos="1.3830203895725879">
    <input name="base" type="float" value="1" />
    <input name="base_color" type="color3" value="0.8, 0.8, 0.8" nodegraph="Nodegraph" output="out_Add" />
    <input name="diffuse_roughness" type="float" value="0" />
    <input name="metalness" type="float" value="0.8" />
    <input name="specular" type="float" value="1" />
    <input name="specular_color" type="color3" value="1, 1, 1" />
    <input name="specular_roughness" type="float" value="0.1" />
    <input name="specular_IOR" type="float" value="1.5" />
    <input name="specular_anisotropy" type="float" value="0" />
    <input name="specular_rotation" type="float" value="0" />
    <input name="transmission" type="float" value="0" />
    <input name="transmission_color" type="color3" value="1, 1, 1" />
    <input name="transmission_depth" type="float" value="0" />
    <input name="transmission_scatter" type="color3" value="0, 0, 0" />
    <input name="transmission_scatter_anisotropy" type="float" value="0" />
    <input name="transmission_dispersion" type="float" value="0" />
    <input name="transmission_extra_roughness" type="float" value="0" />
    <input name="subsurface" type="float" value="0" />
    <input name="subsurface_color" type="color3" value="1, 1, 1" />
    <input name="subsurface_radius" type="color3" value="1, 1, 1" />
    <input name="subsurface_scale" type="float" value="1" />
    <input name="subsurface_anisotropy" type="float" value="0" />
    <input name="sheen" type="float" value="0" />
    <input name="sheen_color" type="color3" value="1, 1, 1" />
    <input name="sheen_roughness" type="float" value="0.3" />
    <input name="coat" type="float" value="1" />
    <input name="coat_color" type="color3" value="0.6, 0.45, 1" />
    <input name="coat_roughness" type="float" value="0.1" />
    <input name="coat_anisotropy" type="float" value="0" />
    <input name="coat_rotation" type="float" value="0" />
    <input name="coat_IOR" type="float" value="2.5" />
    <input name="coat_affect_color" type="float" value="0" />
    <input name="coat_affect_roughness" type="float" value="0" />
    <input name="thin_film_thickness" type="float" value="0" />
    <input name="thin_film_IOR" type="float" value="1.5" />
    <input name="emission" type="float" value="0" />
    <input name="emission_color" type="color3" value="1, 1, 1" />
    <input name="opacity" type="color3" value="1, 1, 1" />
    <input name="thin_walled" type="boolean" value="false" />
    <output name="out" type="surfaceshader" />
  </standard_surface>
  <nodegraph name="Nodegraph" xpos="0.43441000436718924" ypos="2.8679899354385903">
    <add name="Add" type="color3" xpos="3.5103239549683254" ypos="2.7896954322821355">
      <input name="in1" type="color3" value="0, 0, 0" />
      <input name="in2" type="color3" value="0, 0, 0" />
      <output name="out" type="color3" />
    </add>
    <output name="out_Add" type="color3" nodename="Add" />
  </nodegraph>
</materialx>

Here you can see that the inputs are missing from the document but appear in the UI.

Thus it appears that the nodegraph UI has the inputs added but the connections are never made to the node UI ?

@kwokcb kwokcb changed the title Input connections for graphs do not load in Interface input connections to interior nodes in nodegraphs do not load in Oct 8, 2024
@kwokcb
Copy link
Contributor Author

kwokcb commented Oct 8, 2024

@manuelkoester , @RichardFrangenberg

I have tried adding this code inside of connect_qx_inputs_from_mx_node(). It adds a connection but doesn't work properly. For example the nodegraph has no UI in the properly panel.

for mx_input in mx_node.getActiveInputs():
    if mx_input.hasInterfaceName():   
                    intf_name = mx_input.getInterfaceName()
                    logger.info("-------------- Add connect interface name: %s" % intf_name)   
                    port_node = qx_node.graph.get_input_port_nodes()[0]
                    out_port = port_node.get_output(intf_name)
                    qx_input_port = qx_node.get_input(mx_input.getName())
                    out_port.connect_to(qx_input_port)

@kwokcb
Copy link
Contributor Author

kwokcb commented Oct 8, 2024

This is the current WIP code.

https://github.com/PrismPipeline/QuiltiX/compare/main...kwokcb:interface_input_load?expand=1

The connections are there but when unexpanded there are no inputs on the nodegraph node. Tried forcing an update but no luck:
https://github.com/PrismPipeline/QuiltiX/compare/main...kwokcb:interface_input_load?expand=1#diff-98b0f2ce3bf2a207a8c4be6ee4c9a654250018d567f18b55dff0d6fc686ef145R889-R897

There are no value attributes on for the interface inputs when examining the XML.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant