0.57.0.0

Features

  • EditScope : Added new node which provides a container for node graph edits made by interactive tools in the UI (#3467).

    • The current EditScope may be chosen from a new menu in the Viewer toolbar.

    • The TransformTools and CameraTool will now automatically create edits in the chosen EditScope, enabling edits without the need to manually create a Transform node.

    • Added a Ctrl + Delete hotkey which prunes the currently selected objects using the current EditScope.

  • LocaliseAttributes : Added new node which makes local copies of inherited attributes.

Improvements

  • PathFilter : Added roots, an optional filter input to provide multiple root locations which the paths are relative to. This can be useful when working on a single asset in isolation, and then placing it into multiple locations within a layout.

  • Spreadsheet : Improved performance of Spreadsheets with many rows.

  • CopyPrimitiveVariables : Improved performance. In one benchmark, scene generation time has been reduced by 50%.

  • MergeScenes : Improved performance when merging overlapping hierarchies.

  • Serialisation : Reduced file size and load time by omitting redundant setInput() calls from serialisations.

  • ShaderTweaks : Added localise option to allow location-specific tweaks to be made to inherited shaders.

Fixes

  • Filter : Fixed bug which prevented “Select Affected Objects” menu items from working in cases where there was another filter in between the filter and the nodes it was applied to.

  • RotateTool : Fixed bug which caused aiming clicks to change the selection in some circumstances.

  • TranslateTool : Fixed bug which caused snapping clicks to change the selection in some circumstances.

  • Viewer : Fixed problems displaying the “Cs” primitive variable.

  • Alembic :

    • Fixed loading of “N” and “uv” for curves.

    • Fixed writing of “N”, “uv” and “width” for curves.

    • Fixed round-tripping of interpretation for secondary UV sets.

  • Stats app :

    • Fixed bug which caused the -scene and -image arguments to evaluate a node’s input rather than its output. In particular this affected nodes like ContextVariables.

    • Fixed bug which meant that the -scene and image arguments didn’t support nested output plugs.

  • ReverseWinding : Fixed incorrect results when two or more primitive variables referenced the same data.

API

  • EditScopeAlgo : Added new namespace with utility functions for editing scenes using EditScope nodes.

  • ScenePlug : Added exists() method. This provides fast existence queries for locations.

  • SceneAlgo :

    • Added filteredNodes() function, returning all the FilteredSceneProcessors affected by a particular filter.

    • Deprecated exists() function. Use ScenePlug::exists() instead

  • Spreadsheet :

    • Added RowsPlug::row( rowName ) method.

    • Added support for spreadsheet:defaultRowVisible metadata, which can be used to hide the default row.

  • AttributeProcessor : Refactored to be more widely useful.

  • Spacer : Added optional preferredSize constructor argument.

  • View : Added editScope plug and editScope() accessor method.

  • TransformTool :

    • Added Selection::editable() method.

    • Added Selection::warning() method.

    • Added selectionEditable() method.

  • TweakPlug : Changed applyTweak(s) return type to bool - indicating if any tweaks were actually performed (#3699).

Breaking Changes

  • AttributeProcessor :

    • Removed names and invertNames plugs.

    • Rederived from FilteredSceneProcessor rather than SceneElementProcessor.

    • Added new pure virtual methods that must be implemented by derived classes.

    • Changed base class of several nodes from SceneElementProcessor to AttributeProcessor :

      • Attributes

      • ShuffleAttributes

      • DeleteAttributes

      • ShaderTweaks

      • ShaderAssignment

      • SetVisualiser

      • AttributeVisualiser

      • CollectTransforms

  • Context : Removed Substitutions, substitutions() and hasSubstitutions(). Use the IECore.StringAlgo equivalents instead.

  • TransformTool : The Selection class now uses accessor methods rather than exposing data members directly.

  • Stats app : The -scene and -image arguments now ignore input plugs.

  • Spreadsheet : Broke binary compatibility. Full source compatibility is retained.

  • NodeUI : Removed lazy argument from plugValueWidget() method.

  • PlugValueWidget : Removed lazy argument from plugValueWidget() method.

  • PlugLayout : Removed lazy argument from plugValueWidget() and customWidget() methods.

Build

  • Cortex : Updated to version 10.0.0-a76.