0.59.7.0

Improvements

  • Parent :

    • Added parentVariable plug, to create a context variable that passes the parent location to nodes upstream of the children plug. This allows the children to be varied procedurally according to what they are parented to.

    • Added destination plug, to allow children to be placed elsewhere in the scene while still inheriting the transform of the “parent”. This is particularly useful when parenting lights to geometry.

  • Seeds : Added destination plug, to control where the points are placed in the scene relative to the meshes they are generated from.

  • Duplicate :

    • Added filter input, allowing multiple objects to be duplicated at once.

    • Added destination plug, to control where the copies are placed relative to the original.

    • Improved performance for large numbers of copies.

    • Deprecated the target plug. Please use filters instead.

  • Outputs : Reduced the time taken to show the NodeEditor by around 90%.

  • NodeEditor : The “Node Name” label is now draggable. For instance, it can be dragged to the PythonEditor to get a reference to the node or to the GraphEditor to find the node in the graph.

  • GraphEditor : Improved framing of nodes dragged and dropped onto the GraphEditor :

    • Changed pointer to indicate that framing will take place.

    • Nodes are framed directly under the pointer instead of at the centre of the widget.

    • Fixed framing of nodes not currently in the GraphEditor.

    • Removed framing of plugs dragged to the GraphEditor. This was unintuitive and interacted poorly with the dragging of plugs to make connections. The NodeEditor’s “Node Name” label can be dragged instead to locate a node from the NodeEditor.

  • SceneInspector : Improved history view :

    • Added the full path to nodes so that nodes nested in Boxes can be identified.

    • Added edit button to open a NodeEditor for nodes in the history.

    • Fixed gap in between sections.

  • FilterResults : Added root plug. This can be used to limit the results to root and its descendants.

  • CollectScenes : Added tab completion and a scene browser to the UI for the sourceRoot plug.

  • BackgroundTaskDialogue :

    • Removed focus from “Cancel” button to make it harder to cancel accidentally.

    • Added Esc cancellation shortcut.

Fixes

  • Widget : Fixed drag handling bug that could cause dragEnterSignal() to be emitted again on a widget that had already accepted the drag.

  • FilterResults : Fixed bug handling matches at the root location.

  • NodeEditor : Fixed activator and summary updates which were skipped if the layout was not visible when the node was edited.

  • Dispatcher : Fixed dispatching when dispatcher.batchSize or dispatcher.immediate are driven by context variables.

  • SceneNode : Fixed bug hashing the transform for the root location.

API

  • SceneAlgo :

    • Added overloads with root argument for parallelTraverse(), filteredParallelTraverse(), matchingPaths() and matchingPathsHash().

    • Deprecated matchingPaths() overloads taking Filter *. Pass a Filter.out plug instead.

    • Added Python bindings for matchingPathsHash().

  • ScenePlug :

    • Added support for .. in stringToPath().

    • Added stringToPath() and pathToString() overloads that return a result rather than passing it by reference.

  • GafferUI.FileMenu : Added dialogueParentWindow argument to addScript().

  • Spreadsheet : Added support for per-plug ui:spreadsheet:selectorValue metadata. This defines the initial value for selector when the UI is used to create a spreadsheet for the plug.