0.17.0.0
This release brings several major features in addition to the usual enhancements and bug fixes. Of particular interest are the addition of a basic keyframing system, support for using OSL expressions alongside the existing Python expressions, and several new image processing nodes exposing OpenColorIO functionality.
Core
Added Animation node, providing basic support for keyframed animation.
Added frames-per-second support to Contexts, to map between frames and a time in seconds.
Expression
Fixed bug when identical expressions acted on different plug types.
Added support for calling
context.getTime()
.Added support for calling
context.getFramesPerSecond()
.Fixed bugs when a plug or node is renamed.
Fixed bugs when manually disconnecting an output or input of an expression.
Improved error reporting in the UI.
Fixed InputGenerator backwards compatibility bug introduced in 0.16.0.0.
Box
Promoting a plug now properly copies plug metadata (#1468).
Plug
Fixed rare crash during dirty propagation.
Fixed bug in child connection tracking behaviour.
UI
NodeEditor
Plug context menus
Added keyframing menu items for numeric and bool plugs.
Added Lock/Unlock meu items.
Added menu item for creating an OSL expression.
Tool menu
Added “Revert to Defaults” menu item.
NodeGraph
Added right click menu items for reordering plugs on Boxes.
Fixed bugs triggered by the dynamic hiding and showing of plugs via the UIEditor.
Dot
Added optional labels. These can be derived from the dot node name or the upstream node name or may be specified directly.
Shader loading dialogues
Added bookmarks.
Viewer
Fixed bug which could mean the camera would move unexpectedly even when look-through mode is not enabled.
Fixed OpenColorIO configs.
UIEditor
Fixed renaming of empty user sections.
Prevented renaming of section to invalid names like “”.
Added default Settings section.
Fixed presets UI to update values when the selected preset changes.
Ignores user plugs on box nodes.
Box
Added default Settings section.
Disabled plug addition button in User section.
Fixed bug which could cause the display of corrupted icons.
ShaderSwitch
Fixed UI to provide access to each input rather than just the array input as a whole (#1461).
Numeric fields
Ensured that keyboard-nudged numbers have an extra 0 added as necessary to ensure that the same digit is always being modified.
Image
New OpenColorIO nodes
LUT
CDL
DisplayTransform
ImageWriter
Added file format options.
Made sure OIIO queries for nchannel and alpha support are respected.
Merge
Fixed artifacts when the data windows differ between layers.
Fixed crash.
Resize
Fixed artifacts when upsizing with the sinc filter (#1457).
Changed convention for image bounding boxes to specify that the maximum coordinates are exclusive (outside the box).
Fixed Crop UI for images with the default format.
Resample
Fixed incorrect input sample region.
Scene
Fixed loading of UnionFilters from Gaffer 0.15.0.0 (#1474).
Fixed loading of FilterSwitches from Gaffer 0.15.0.0 (#1474).
Attributes are now output to the renderer before shaders at the same location. This works around a bug in 3delight’s shader construction.
Fixed crash when loading sets from an empty SceneReader.
Added support for frames-per-second to SceneReader, AlembicSource and SceneWriter.
OSL
Added support for using OSL as a general purpose expression language.
Cortex
Fixed issue where non-ValuePlugs were not syncing during setPlugValue().
Fixed OpHolder node summaries.
API
Expression
Redesigned API to better support multiple languages.
Context
Added “framesPerSecond” variable and time accessors.
Metadata
Added nodesWithMetadata() and plugsWithMetadata() methods.
StandardNodeGadget
Removed orientation constructor parameter. Use metadata instead.
Added dynamic nodule reordering controlled by metadata.
ScriptNode
Fixed undo merging for CompoundNumericPlugs (#422).
Plug
Made setFlags() undoable.
PlugLayout
Ignore custom widgets with type “”. This allows a widget inherited from a base class to be removed by a derived class or instance metadata.
Removed UserPlugValueWidget.
Added UserPlug namespace.
Deprecated use of arbitrary Widget constructor keyword arguments for auto-parenting. The
parenting
argument should be used instead.Image
Renamed GafferImage::OpenColorIO to ColorSpace.
Changed convention for image bounding boxes to specify that the maximum coordinates are exclusive (outside the box).
Added image window utility methods to assist with this change.
Added OpenColorIOTransform abstract base class. This makes it easy to implement nodes whose processing is performed via OpenColorIO.
Sampler
Remove sample window accessors.
Deprecated constructor taking a filter.
Added NumericWidget.valueToString() method.
Incompatibilities
Redesigned expression API to better support multiple languages.
Changed convention for image bounding boxes to specify that the maximum coordinates are exclusive (outside the box).
NodeGadget
Added noduleAddedSignal() and noduleRemovedSignal().
StandardNodeGadget
Removed orientation constructor parameter. Use metadata instead.
GraphComponentWrapper
Improved constructors to allow any type to be passed to the single argument constructor.
Removed UserPlugValueWidget.
Deprecated use of arbitrary Widget constructor keyword arguments for auto-parenting. The
parenting
argument should be used instead.Renamed GafferImage::OpenColorIO to ColorSpace.
Sampler
Remove sample window accessors.
Deprecated constructor taking a filter.