0.48.0.0¶
Features¶
- Viewer : The 3D viewer now updates asynchronously, keeping the UI responsive while the scene is computed in the background (#2649).
 - AnimationEditor : Added a new editor to allow the graphical editing of animation curves. This can be found on the tab next to the GraphEditor in the standard layouts (#2632).
 - DeleteObject node (#2694).
 - CopyAttributes node (#2710).
 
Improvements¶
- TranslateTool : Added handles for movement in the XY,XZ,YZ and camera planes (#2709).
 - Layouts menu (#51, #2698) :
- Added “Default/...” menu items to allow the default startup layout to be chosen.
 - Added new “Save As/...” menu items to allow previously saved layouts to be replaced.
 
 - SceneInspector (#2607) :
- Added filter to sets sections.
 - Moved set computations to background process, so they don’t block the UI.
 
 - Shader : Improved performance (#2644).
 - ArnoldLightUI : Added support for “userDefault” parameter metadata. This matches the format already in use for ArnoldShaderUI (#2646).
 - Viewer :
 - ArnoldAttributes :
 - FormatPlug : Made “Custom” mode persistent, so it is remembered across save and reload (#2660).
 - InteractiveRender : Removed unnecessary deletion and recreation of objects when 
childNameschanges (#2690, #2649). 
Fixes¶
- GraphEditor :
 - LocalDispatcher/TractorDispatcher : Fixed problems using 
imathcontext variables (#2653, #2654). - OSLObject : Fixed crashes caused by indexed primitive variables (#2655).
 - Viewer : Fixed visibility of children of look-through camera (#2694).
 - ObjectSource : Fixed transform.* -> out.bound dirty propagation (#2649).
 
API¶
- SceneGadget :
 - RenderController : Added new utility class for controlling interactive renders (#2649).
 - AnimationGadget : Added new Gadget for editing animation curves (#2632).
 - Animation (#2632) :
- Keys are now reference counted, so ownership can be shared between CurvePlugs and the AnimationEditor.
 - Keys may be edited in place with 
key->setTime()etc, and the CurvePlug automatically updates. CurvePlug::keys()has been replaced withCurvePlug::begin()andCurvePlug::end(). This hides the internal choice of container while still providing iteration.- Added optional 
thresholdargument toclosestKey(). 
 - IECoreScenePreview::Renderer (#2649) :
- Added 
command()virtual method. - Added 
name()virtual method. 
 - Added 
 - IECoreGLPreview::OpenGLRenderer (#2649) :
- Made it possible to call 
render()concurrently with edits. - Added support for highlighting selected objects.
 - Added “gl:queryBound” command.
 - Added “gl:querySelection” command.
 - Added support for custom object and attribute visualisers.
 - Added options for controlling base attributes.
 
 - Made it possible to call 
 - PresetsPlugValueWidget : Added support for an optional “Custom” menu item, which allows the user to enter an arbitary value. This is controlled by “presetsPlugValueWidget:allowCustom” plug metadata (#2660).
 - BusyWidget : Added 
busyconstructor argument (#2607). - LightTweaks (#2660) :
- Moved TweakPlug to the GafferScene namespace, so it can be reused by other nodes.
 - Added “Remove” mode.
 
 - Layouts (#2698) :
- Added 
persistentargument toadd()method, mirroring theBookmarks.add()API. This automatically takes care of saving persistent layouts into the startup location. - Added 
setDefault()/getDefault()andcreateDefault()methods to allow the management of a default layout. 
 - Added 
 - Handle (#2709) :
- Added 
set/getVisibleOnHover()methods. - Added 
PlanarDragaxis accessors. 
 - Added 
 - TranslateHandle (#2709) :
- Added 
axisMask()method. 
 - Added 
 - FilteredSceneProcessor : Added constructor to allow array 
inPlug(). - Style :
 - ViewportGadget : Added 
set/getVariableAspectZoom()method (#2632). 
Build¶
Breaking Changes¶
- GafferSceneUI : Moved visualiser base classes to IECoreGLPreview (#2649).
 - ArnoldAttributes : Changed volume step attributes (#2634).
 - GafferImage : Removed FormatPlug compatibility for files saved in Gaffer 0.16 or older. To migrate, resave the file in Gaffer 0.47 (#2682).
 - GafferOSL::ShadingEngine : Removed 
scopeparameter fromneedsAttribute()(#2655). - Layouts (#2698) :
- Removed 
save()method. Use thepersistentargument toadd()andsetDefault()instead. - Added 
applicationRootargument to constructor. You should useacquire()instead anyway. 
 - Removed 
 - LayoutMenu : Removed 
delete()method (#2698). - GUI config : Renamed standard layout from “Default” to “Standard” (#2698).
 - TranslateHandle : translation()` method now returns a V3f rather than a float (#2709).
 - TransformTool : Made 
orientedTransform()method const (#2709). - Style : Changed method signatures, enum values, and added virtual functions (#2632).
 - Animation : Refactored API. See API section for more details (#2632).
 - IECoreScenePreview::Renderer : Added virtual methods (#2649).
 - InteractiveRender : Added and removed private member data (ABI break) (#2649).
 - SceneGadget (#2649) :
- Added/removed private members (ABI break).
 - Remove 
baseState(). 
 - SceneView : Reorganised/simplified drawingMode plugs (#2649).