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 :
    • Added selection mask, to choose which types of objects can be selected (#2696).
    • Added more Arnold diagnostic shading modes (#2645)
      • Matte
      • Opaque
      • Receive shadows
      • Self shadows
  • ArnoldAttributes :
    • Added volumeStepScale, shapeStepSize and shapeStepScale attributes (#2634).
    • Clarified intended usage of subdividePolygons attribute (#2680).
  • FormatPlug : Made “Custom” mode persistent, so it is remembered across save and reload (#2660).
  • InteractiveRender : Removed unnecessary deletion and recreation of objects when childNames changes (#2690, #2649).

Fixes

  • GraphEditor :
    • Fixed arrowheads on axis-aligned auxiliary connections (#2647, #2648).
    • Fixed potential auto-scroll bug when dragging a node (#2705).
  • LocalDispatcher/TractorDispatcher : Fixed problems using imath context 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 :
    • Added setPaused()/getPaused() and state() methods (#2649).
    • Replaced baseState() with `set/getOpenGLOptions() methods (#2649).
    • Added waitForCompletion() method (#2649).
    • Added set/getBlockingPaths() methods (#2649).
    • Added set/getSelectionMask() methods (#2696).
  • 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 with CurvePlug::begin() and CurvePlug::end(). This hides the internal choice of container while still providing iteration.
    • Added optional threshold argument to closestKey().
  • IECoreScenePreview::Renderer (#2649) :
    • Added command() virtual method.
    • Added name() virtual method.
  • 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.
  • 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 busy constructor argument (#2607).
  • LightTweaks (#2660) :
    • Moved TweakPlug to the GafferScene namespace, so it can be reused by other nodes.
    • Added “Remove” mode.
  • Layouts (#2698) :
    • Added persistent argument to add() method, mirroring the Bookmarks.add() API. This automatically takes care of saving persistent layouts into the startup location.
    • Added setDefault()/getDefault() and createDefault() methods to allow the management of a default layout.
  • Handle (#2709) :
    • Added set/getVisibleOnHover() methods.
    • Added PlanarDrag axis accessors.
  • TranslateHandle (#2709) :
    • Added axisMask() method.
  • FilteredSceneProcessor : Added constructor to allow array inPlug().
  • Style :
    • Added methods for rendering animation curves (#2632).
    • Added width and userColor arguments to renderLine() (#2632).
    • Added userColor argument to renderText() (#2632).
    • Added XY/XZ/YZ Axes enum values (#2709).
  • ViewportGadget : Added set/getVariableAspectZoom() method (#2632).

Build

  • ViewportGadget : Fixed compilation on Windows (#2705).
  • OpenImageIOReader : Fixed compilation with XCode 9.4 (#2712).
  • Updated Cortex to version 10.0.0-a28
  • Updated FreeType version 2.9.1
  • Updated Python to version 2.7.15
  • Updated Alembic to version 1.7.8

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 scope parameter from needsAttribute() (#2655).
  • Layouts (#2698) :
    • Removed save() method. Use the persistent argument to add() and setDefault() instead.
    • Added applicationRoot argument to constructor. You should use acquire() instead anyway.
  • 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).