0.55.0.0
This release brings numerous enhancements to the Layout system, new and improved 3D nodes, performance tweaks and new tools.
Caution
The Instancer now deletes the target point cloud from the scene (#3394). This will result in a behaviour change in existing scenes that rely on the target point cloud existing downstream of the Instancer node.
Info : The companion patch release
0.54.2.1
includes support to allow scripts saved from0.55.0.0
to be opened in environments locked to the0.54.x.x
series. However, scripts saved in0.55.0.0
that make use of multiple input connections to the Parent node are not compatible with any previous versions.
Features
NameSwitch : Added new node to switch between named input connections using string matching (#3349).
CopyPrimitiveVariables : Added new node to copy primitive variables from one object to another (#3361, #3389).
Viewer : Transform tools now feature a ‘targeted’ mode (#3403).
Holding V and clicking in the Viewer with the Translate tool active teleports the selected objects to the clicked point.
Holding V and clicking in the Viewer with the Rotate tool active aims the selection’s -z axis at the clicked point.
Improvements
Layouts (#3360, #3392, #3398, #3399) :
The focus state and linking of each editor is now saved with the layout.
All default layouts now include linked editors as standard, with all inspectors following the Viewer, and all other editors following the Graph Editor selection.
Viewers can now be linked to other Viewers.
The Pinning button has been re-designed as the Editor Focus menu, moving all interactions to a left-click menu.
Editor-centric keyboard shortcuts have been added and other shortcuts improved :
Hitting P will pin the editor to the current node selection
Hitting N will make the editor follow the current node selection (a.k.a ‘un-pin’).
All keyboard shortcuts that change an editor’s focus, when used with a slave editor will now break any links to it’s master.
When hovering over an entry in the Follow section of the Editor Focus menu, the target editor will be highlighted.
When hovering over the editor focus menu button for a master editor, all of the following (slave) editors will be highlighted when its tooltip is presented.
When hovering over the editor focus menu button for a slave editor, its master editor will be highlighted when its tooltip is presented.
Improved editor link colors.
Editor/Inspector tab titles now only include node names when the editor is pinned.
The UVInspector can now be linked to other editors.
Parent : The Parent node now accepts multiple inputs (#1202).
Viewer :
Added up/down hotkeys to navigate through Catalogue node images (#3387).
Fixed light visualisation bug which would draw an extra copy of a light when an object was parented under it (#3380).
Made paused status more obvious (#3390).
Changed the default near clipping plane to 0.1 to increase depth buffer precision.
OSLObject (#3389) :
Optimized bounds computations for cases where “P” is not modified.
Added Adjust Bounds plug to optionally disable bounds computations.
Wireframe : Optimized bounds computations (#3389).
Instancer :
ArnoldShader : Added metadata to improve UI layout of the
toon
shader (#3391).ArnoldAttributes : Added
toonId
attribute to use in conjunction with Arnold’stoon
shader (#3416).ArnoldOptions : Added
profileFileName
option (#3404).Docs (#3337) :
Added an example of configuring Arnold trace sets.
Moved the blockers example to the Lighting section.
Catalogue :
header:
prefixed display parameters are now available in Catalogue image metadata for IPR renders (#3410).
Fixes
TransformTool : Fixed bug which caused nodes using set filters to be ignored (#3393).
SceneAlgo : Fixed
objectTweaks()
andshaderTweaks()
to respect nodes using set filters (#3393).Switch (#3349) :
Fixed bug which prevented derived classes from adding their own plugs.
Fixed bug with deeply nested plugs.
ArrayPlug (#3349) :
Added support for child-level inputs to compound plugs.
Shader : Fixed bug affecting component-level connections through a Switch node (#3349).
Editors : Added support for nested output plugs (#3349).
Catalogue : Fixed image ordering bug (#3387).
FreezeTransform : Fixed filter evaluation bug (#3397).
BranchCreator : Fixed serialization to omit internal connections (#3401).
Arnold : Fixed attempts to instance curves with
min_pixel_width != 0
(#3402).EditMenu : Fixed bug in
editor()
method that caused errors using keyboard shortcuts with custom UIs (#3395).Test : Fixed a test case issue when using older python versions in custom Gaffer builds (#3408).
Viewer : Fixed an issue that required a second click in the viewer to return focus to it after selecting a tool using the mouse (#3403).
ShaderView : Fixed a crash that could occur on shutdown (#3413).
Ramp editor : Fixed bug that prevented editing of ramps where a subset of plugs were not editable (#3417).
TabbedContainer : Fixed bug whereby
currentChanged()
was called with the wrong widget when a tab was removed (#3424).Layouts : Fixed bug triggered when removing a tab with linked editors (#3421).
API
ObjectProcessor : Added new base class to simplify the creation of nodes that modify objects.
Deformer : Added new base class to simplify the creation of nodes that modify objects such that their bounding box changes.
ArrayPlug (#3349) :
Added
resizeWhenInputsChange
constructor argument.Added
next()
method.
Switch : Added
outPlug
argument toactiveInPlug()
method (#3349).CompoundEditor : Made constructor arguments private.
Menu : Added support for
enter
andleave
fields (supplied through anIECore.MenuItemDefinition
) to provide callback functionality as the user hovers over menu items presented on screen (#3360).Menu : Added support for combining
label
anddivider
to create labeled sections within a menu (#3399).GafferUI : Added
_qtObjectIsValid()
method (#3360).ShadingEngine : Added
hasDeformation()
method (#3389).BranchCreator : Added
processesRootObject()
virtual method to enable parent object Modifications (#3406).Widget : Conform linux/MacOS keyRelease events such that repeated release events are no longer emit on linux (#3403).
SelectionTool : Don’t initiate drags for derived class button presses (#3403).
SceneGadget : Added
objectAt( line, &path, &hitPoint )
method that also populates hitPoint with the (approximate) gadget-space intersection point of line and the hit object (#3403).Group/BranchCreator : Factored out name mapping into ChildNameMap class to facilitate reuse (#3406).
NodeSetEditor :
BoolPlug : StringPlugs are now accepted as inputs, converting empty strings to
false
and all other strings totrue
(#3410).
Breaking Changes
TweaksPlug : Changed function signature and default behaviour of
applyTweaks()
method (#3353).Instancer : The target point cloud is now deleted from the scene (#3394) .
ArrayPlug : Added argument to constructor and additional private member data. ABI change only - source compatibility is maintained (#3349).
LightVisualiser : Moved from GafferSceneUI to IECoreGLPreview (#3380).
Changed the base class of the following nodes : MeshType, CameraTweaks, CollectPrimitiveVariables, MapOffset, MapProjection, MeshDistortion, MeshTangents, PrimitiveVariables, Orientation, Parameters, ReverseWinding, DeleteFaces, DeleteCurves, DeletePoints, MeshToPoints, PointsType, Wireframe, OSLObject (#3389).
ShadingEngine : Added private member (ABI change only) (#3389).
CopyAttributes : Replaced input array with separate “in” and “source” plugs, and renamed
copyFrom
plug tosourceLocation
. A config file will automatically convert old scripts on load (#3389).CopyOptions : Renamed “names” plug to “options”. A config file will automatically convert old scripts on load(#3389).
BranchCreator : Added virtual method (#3406).