ID 381478 - TeleParameter widgets linking to shader parameters are broken on opening Katana project

Follow

Problem summary
Widgets of TeleParameters linked to shader parameters in a Katana project seem to be broken on opening the project. The widgets may not display the correct values and can't be interacted with, for example clicking the parameter's state badge or clicking its label and dragging left and right to change the value doesn't work. When typing in a value and pressing enter, the change doesn't go through to the linked parameter.
 
Closing and reopening the Parameters tab fixes these issues.
 
On opening or closing Katana projects containing such TeleParameters, the following error is printed to the console:
 

Error in collapsed event handler __node_setEdited_callback(): RuntimeError: wrapped C/C++ object of type SuperToolFormWidget has been deleted    Utils.EventModule    2019-02-20T16:36:39Traceback (most recent call last):  File "bin\software_python\Utils\v5\EventModuleUI.py", line 158, in __invokeCollapsedDict  File "bin\python\UI4\Tabs\ParametersTab\ParameterPanel.py", line 98, in __node_setEdited_callbackRuntimeError: wrapped C/C++ object of type SuperToolFormWidget has been deleted

Customer reported version
Katana 3.0v5

Customer reported platform
CentOS7

Steps to reproduce
 
  1. Create a Material node.
  2. Click Add Shader and select 'surface' under 'dl'.
  3. Select 'blinn' in the dlSurfaceShader dropdown.
  4. Append another node downstream of the Material node, for example an OpScript node, edit its parameters and select Edit User Parameters from the Cog menu in the Parameters tab.
  5. Add a TeleParameter user parameter.
  6. Middle-mouse drag Diffuse parameter onto "Drop Parameter Here".
  7. Add another TeleParameter user parameters.
  8. Middle-mouse drag Specular > Eccentricity parameter onto "Drop Parameter Here". This doesn't work due to another bug (ID:60704).
  9. Delete TeleParameter from user parameters and create via Python instead:
  10. 
    node = NodegraphAPI.GetNode('OpScript')param = node.getParameter('user')param = param.createChildString("Specular Eccentricity", "")param.setHintString(str({'widget': 'teleparam'}))param.setExpression('getParam("Material.shaders.dlSurfaceParams.eccentricity").param.getFullName()')
  11. Make sure the Edit flag is only set on the node that has the TeleParameters, not the Material node, and save the project.
  12. Open a new scene via File > New. Note the error message in the messages tab:
  13. 
    Error in collapsed event handler __collapsedEventHandler(): RuntimeError: wrapped C/C++ object of type NodeGroupFormWidget has been deleted    Utils.EventModule    2019-02-20T15:53:02Traceback (most recent call last):  File "bin\software_python\Utils\v5\EventModuleUI.py", line 158, in __invokeCollapsedDict  File "bin\python\UI4\FormMaster\EditorCache.py", line 84, in __collapsedEventHandler  File "bin\python\UI4\FormMaster\EditorCache.py", line 184, in flushRuntimeError: wrapped C/C++ object of type NodeGroupFormWidget has been deleted
  14. Reopen the project. Note that the same error message is printed again.
  15. Try to interact with the TeleParameters on the OpScript node. The widgets are in an error state where its not possible to drag on the label to change the parameter value or interact with the state badge. Changing the value of the TeleParameter does not affect the value of the linked parameter on the Material node and vice versa.

If the Edit flag is set on the Material node when saving the project, the widgets work correctly when reopening the project, but the error messages persist.

 

Workaround
Close and reopen the Parameters tab to get back to the correct state for the widgets.

Reproduced by support

This bug has been reproduced in:

Katana3.1v2 - Windows 7 & Windows 10 - CentOS7
Katana3.1v1 - Windows 7 - CentOS7
Katana3.0v5 - Windows 7 - CentOS7
Katana3.0v1 - Windows 7 - CentOS7
Katana2.6v1 - Windows 7 - CentOS7

Expected behaviour
No error message is printed to the console when closing or opening the Katana project.
TeleParameter widgets display correct values and can be interacted with on reopening the project file.

Actual behaviour
An error message is printed to the console when closing or opening the Katana project.
TeleParameter widgets can't be interacted with correctly and may not display the correct values after reopening the project file.

    We're sorry to hear that

    Please tell us why