ID 305764 - GafferThree: stale UI when setting edit flag after modifying internals via NodegraphAPI scripting

Follow

Problem summary:

When changing values of shader parameters of a light in a GafferThree node via NodegraphAPI scripting while the parameters of the node are not shown in a Parameters tab, then setting the edit flag on the GafferThree node, the UI does not update correctly to reflect those changes.

Steps to reproduce:

  1. Create a GafferThree node and another node.
  2. Set the edit flag on the GafferThree node.
  3. In the GafferThree table of objects, add a light that is preconfigured to use a shader with an intensity parameter, for example a 3Delight area light.
  4. Note that the light's intensity is set to its default value, e.g. 1.0, and is shown in white.
  5. Unset the edit flag on the GafferThree node, e.g. by setting it on the other node created in step 1. The point is merely that the GafferThree node's parameters are not shown in any Parameters tab.
  6. Execute Python code similar to the following, in order to edit the light's intensity:
    • 
      gafferThreeNode = NodegraphAPI.GetNode('GafferThree')package = gafferThreeNode.getPackageForPath('/root/world/lgt/gaffer/areaLight')materialNode = package.getMaterialNode()materialNode.getParameter('shaders.dlLightParams.intensity.enable').setValue(True, 0)materialNode.getParameter('shaders.dlLightParams.intensity.value').setValue(34, 0)
  7. Set the edit flag on the GafferThree node again.

Expected behaviour:

The area light's intensity is shown as 34 and drawn in yellow.

Actual behaviour:

The area light's intensity is still shown as 1 and drawn in white.

Workaround:

Show the parameters of the GafferThree node in a floating pane. This will trigger a UI refresh in other Parameters tabs that show the node's parameters.

Reproduced versions/platforms:

  • Katana 2.0v2/Linux
  • Katana 2.1v1/Linux
  • Katana 2.1v6/Linux
  • Katana 2.6v3/Linux

Customer version/platform:

Not supplied.

    We're sorry to hear that

    Please tell us why