Skip to content

Releases: GafferHQ/gaffer

Version 0.19.0.0

24 Nov 01:10
Compare
Choose a tag to compare
Version 0.19.0.0 Pre-release
Pre-release

Apps

  • Added a preference for OIIO cache memory to the gui app.

Core

  • Added a TaskSwitch node.
  • Added support for variable substitutions within SystemCommand.
  • Added a PythonCommand node.
  • Expression
    • Added support for assigning floats to IntPlugs in Python expressions.
    • Added detection of circular dependencies within expressions.
  • Added support for metadata edits on Reference nodes (#1536).
  • Fixed bug which caused internal connections to be removed when
    unparenting a Node.

UI

  • Fixed SceneInspector context bug.
  • Fixed display bug in Wedge string mode

Image

  • Added Blur node.
  • Added Text node.
  • ImageReader
    • Added modes for handling missing frames.
    • Added settings for masking image sequences.
    • Added automatic conversion to linear using OIIO colorspace
      metadata (#250).
    • Renamed old ImageReader to OpenImageIOReader - this is now
      just a utility class which is used internally.
  • Added ImagePrimitiveProcessor base class.
  • Added methods for controlling the OIIO cache memory.
  • Fixed bug which prevented the ImageWriter using the requested
    compression (#1538).
  • Resample
    • Added expandDataWindow plug.
    • Added support for "smoothGaussian" filter.
    • Fixed bug which prevented subpixel translations.
  • Fixed dirty propagation bugs in Offset node.
  • Added Difference operation to Merge.
  • ImageTransform
    • Improved performance up to 50%.
    • Improved quality.
    • Changed rotation direction to counter clockwise.
    • Made "cubic" the default filter./
  • Removed Reformat node. Use Resize instead.
  • Fixed computation of max in ImageStats.
  • Fixed performance bug when ImageNodes are used inside
    a Box subclass implemented in Python.
  • Fixed Merge dataWindow computation when the first input
    is unconnected.

Arnold

  • Added ray depth setting to ArnoldOptions node.

Documentation

  • Updated for latest changes.

API

  • Added python bindings for ImageWriter::Mode.
  • Expression::setExpression() preserves previous state in the case
    that parsing fails.
  • Stopped CompoundNumericPlug::getChild() from masking the base class
    equivalents.
  • Added ImageTestCase with assertImagesEqual() method.
  • Removed filter from ImageSampler.
  • Added Resample::filters() method.
  • ImageTestCase
    • Fixed threshold comparison bug in assertImagesEqual().
    • Added assertImageHashesEqual() method.
  • Added OpenColorIOTransform::availableSpaces() method
  • Context::Scope may now be constructed with a NULL argument -
    this is a no-op.
  • Reintroduced default format substitutions to AtomicFormatPlug.
  • Added GafferImage::Shape base class.
  • Removed ChannelMaskPlug::channelIndex() method. Use ImageAlgo
    colorIndex() method instead.
  • Added channel name utility methods to ImageAlgo.

Build

  • Improved reporting in Travis config.
  • Updated several dependencies to match the VFX Reference Platform.
    • Boost 1.55
    • OpenEXR 2.2.0
    • OpenColorIO 1.0.9
  • Updated to Appleseed 1.3.0-beta

Incompatibilities

  • ImageTransform now uses OIIO filters rather than GafferImage filters -
    the old filter names are no longer supported.
  • ImageTransform now rotates counter clockwise.
  • Removed Reformat and redirected it to Resize, which supports OIIO filters
    rather than GafferImage filters.
  • Removed filter plug from ImageSampler. Bilinear interpolation is used
    instead.
  • Removed FilterPlug. Use StringPlug instead.
  • Removed Filter. Use OIIO filters instead.
  • Removed FilterPlugValueWidget. Use presets instead.
  • Removed ChannelMaskPlug::channelIndex() method. Use ImageAlgo
    colorIndex() method instead.

Version 0.18.0.0

29 Oct 20:05
Compare
Choose a tag to compare
Version 0.18.0.0 Pre-release
Pre-release

This release brings a number of updates to GafferImage, including
user-editable Formats, bug fixes to Resize and Crop, and a new Offset
node. It also fixes a few bugs todo with Expressions, Switches, and UI
crashes.

Core

  • Node::userPlug() is now a Plug instead of a CompoundPlug.
  • Preventing unwanted child connection tracking on userPlug().
  • Changed scriptNode() to return this when node is a ScriptNode.
  • Support indirect connections to Switch index
    • Emitting Node::plugInputChangedSignal() for all downstream connections.
  • Expressions don't let __in plug track child inputs.
  • Added top level plug argument to Expression::Engine::apply().
  • PythonExpressionEngine drives apply() by plug type not data type.
  • PythonExpressionEngine supports arbitrary compound plugs types.
  • Improved PythonExpressionEngine::defaultExpression().
  • Fixed a bug in plugs/nodesWithMetadata.
  • Fixed errors when serialising parent metadata only.
  • Reference/Box no longer export user plugs (#801).

UI

  • Skipping intermediate dots in tooltips.
  • Fixed crash in the GraphGadget when a non-nodule plug was removed from a node.
  • Improved UI robustness for errors on enabledPlug() expressions.
  • Fixed potential connection lifetime bugs in the Viewer.

Image

  • Added AtomicFormatPlug and replaced all non-user facing FormatPlugs with this.
    • This plug does not perform default format substitutions.
    • This plug does not serialise registered Formats.
  • Changed FormatPlug to be a user-editable Format specification
    • Using FormatPlug in all user facing scenarios (e.g. Constant, Resize, etc).
  • Deprecated Reformat. Use Resize instead.
  • Moved default Format mechanism onto FormatPlug.
  • Fixed default Format issues inside boxes (#888).
  • Fixed nodes which were unusable if no default format was specified in the context (#888).
    • We now fall back to a default default format in that case.
  • The default format was not getting transferred to the script context after loading (#888).
  • Rationalised and simplified the Format registry.
    • Fixed registerFormat() so that a second registration overrides the first.
    • Requiring name when registering a format.
    • Names should no longer include the numeric values.
    • Renamed removeFormat() to deregisterFormat().
    • Removed unused signals and not-so-useful methods.
    • Separated registered names and ostream output.
      • The ostream output just uses numeric values, keeping it in line with
        the Imath classes.
      • Querying the registered name for a format returns an
        empty string if it hasn't been registered. Previously it returned
        a generated name, making it hard to tell if it had actually been
        registered or not.
  • FormatPlugValueWidget supports manual entry of custom formats.
    • This widget only supports FormatPlugs, not AtomicFormatPlugs.
  • ImageStats now uses a postCreate to set plug values via the UI only.
  • Renamed CropUI.postCreateCrop to CropUI.postCreate.
  • Fixed Resize disabling.
  • Add Offset node.
  • Fixed bug in Crop::affects().
  • Added Crop "resetOrigin" plug.
    • This resets the origin of the format back to [0,0], which is intuitively what is expected.

Incompatibilities

  • Changed type of Node::userPlug()
  • Moved default Format API from Format class onto FormatPlug class.
  • Changed Format registry API.
  • Crop now resets the display window origin to 0,0. Turn off the "resetOrigin" plug for the old behaviour.
  • Renamed CropUI.postCreateCrop to CropUI.postCreate.

Version 0.17.0.0

13 Oct 20:43
Compare
Choose a tag to compare
Version 0.17.0.0 Pre-release
Pre-release

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.

Version 0.16.0.4

15 Sep 17:02
Compare
Choose a tag to compare
Version 0.16.0.4 Pre-release
Pre-release

Scene

  • Output attributes to the renderer before other state to fix some inconsistent behaviour

Build

  • Updated IE internal build options to use more modern OCIO, OIIO, and OSL

Version 0.16.0.3

08 Sep 16:41
Compare
Choose a tag to compare
Version 0.16.0.3 Pre-release
Pre-release

UI

  • Fixed a problem whereby presets were not being transferred when
    promoting a compound plug on a RenderManAttributes node.

Core

  • Fixed issue where non-ValuePlugs were not syncing during
    setPlugValue().

Version 0.16.0.2

01 Sep 21:07
Compare
Choose a tag to compare
Version 0.16.0.2 Pre-release
Pre-release

UI

  • Box : Copy all metadata when promoting plugs.
  • UIEditor : Never edit user plug for Box nodes.

Version 0.16.0.1

27 Aug 18:24
Compare
Choose a tag to compare
Version 0.16.0.1 Pre-release
Pre-release

UI

  • UIEditor : Update preset value on selection change.
  • ShaderSwitchUI : Fix NodeGraph representation (#1461).

Version 0.16.0.0

26 Aug 19:19
Compare
Choose a tag to compare
Version 0.16.0.0 Pre-release
Pre-release

Apps

  • Python
    • Sets __name__ to __main__ to conform more closely to a standard
      python interpreter (#1405).
    • Fixed to accepts -flag arguments (#1406).
  • GUI
    • Removed cortex nodes from the node menu. They can be reintroduced
      with an appropriate config file, but our intention is that Cortex
      play only a "behind the scenes" role in Gaffer in the future.

Core

  • Added version metadata to all saved files (#1436).
  • Fixed dispatching of nodes inside References.
  • Python expressions can now write to AtomicBoxPlugs.
  • Added support for promoting ArrayPlugs to boxes.

UI

  • Fixed image format menu to make changes undoable.
  • Added sequence browsing to the relevant file choosers.
  • Hid TaskContextVariables.variables plug in the NodeGraph.
  • Fixed editability of promoted CompoundDataPlugs.
  • Box promotion now tranfers nodule and connection colours.

Image

  • Added a Resize node. This will replace the Reformat node over time.
  • Added a Crop node.
  • Added a Shuffle node (#1380).
  • Added Premultiply and Unpremultiply nodes.
  • ImageWriter
    • Fixed writing to image formats which don't support separate
      display and data windows - the full display window is now written,
      padded with black as necessary.
    • Added progress message.
    • Fixed tiled writing (previously scanlines were always written).

Scene

  • Fixed bug in Isolate which meant that a filter which matched nothing
    at all had no effect. It now removes the entire scene as expected.
  • Fixed bug in Prune which meant that a filter which matched the root
    was not removing the entire scene.
  • Added support for arbitrary IECore::PreWorldRenderables in global
    options.
  • Improved performance of bounds propagation (around 7% improvement
    for a Transform node and a complex filter).

Cortex

  • Fixed bug which caused errors with read-only parameter plugs.

API

  • Replaced all InputGenerators with ArrayPlugs, and removed InputGenerator
    class. ImageProcessor and SceneProcessor may now provide an array of
    inputs for any derived class to use.
  • Paths
    • Added sequence support to FileSystemPath.
    • Added FileSequencePathFilter class for filtering sequences from
      FileSystemPath.
    • FileSequencePathPlugValueWidget supports metadata for sequence
      display.
    • Deprecated SequencePath.
  • Added Resample node to GafferImage, for use in node internals.
  • Dispatcher
    • The current job directory is added to the context for use
      by Executable nodes.
  • Sampler
    • Fixed binding of sample( int, int )
  • Added AtomicBox2fPlug.
  • Made SceneNode and SceneProcessor subclassable in Python.
  • Made ImageNode and ImageProcessor subclassable in Python.
  • Made SubGraph subclassable in Python.
  • Added _copy argument to ImagePlug.channelData() method.
  • CompoundPlug deprecation
    • Rederived the following plugs from ValuePlug or Plug in preparation
      for removal of CompoundPlug :
      • BoxPlug
      • CompoundNumericPlug
      • Transform2DPlug
      • TransformPlug
      • CompoundDataPlug
      • ArrayPlug
    • Replaced use of CompoundPlug in the following nodes
      • Light
      • Outputs
  • Added support for extra constructor arguments in node wrappers.

Incompatibilities

The scene and image processing nodes have been overhauled to allow any
node to use an array of inputs. While full backwards compatibility with
old scenes is expected, please let us know if you have any problems
loading an old scene. Please also update any dependent code to the new
APIs as soon as possible.

  • Removed InputGenerator. Use ArrayPlug instead.
  • Removed FilterMixinBase. Use FilterProcessor instead.
  • SwitchComputeNode and SwitchDependencyNode now require that the "in"
    plug is an ArrayPlug.
  • Changed base classes for many plugs, breaking binary compatibility
    but in most cases not source compatibility.

Build

  • Added checks for doxygen and inkscape prior to building.
  • Fixed non-reporting of graphics build errors (#1395).
  • Updated to faster container-based testing on Travis.
  • Added appleseed unit tests to Travis setup.

Version 0.15.0.0

23 Jul 20:35
Compare
Choose a tag to compare
Version 0.15.0.0 Pre-release
Pre-release

UI

  • UI Editor
    • Added dropdown menu for choosing widget type (#739).
    • Added section for specifying additional widget settings (#739).
    • Added preset editor (#739).
    • Added section for editing section summaries.
    • Added NodeGraph section.
  • Added drag and drop of objects onto Set nodes in the NodeGraph.
  • Fixed crash which could occur when opening recent files.
  • Fixed crash which could occur when using OpenGL widgets within Maya.
  • Added support for summary tooltips on node UI tabs (#332).
  • Fixed bugs which could cause a blank NodeEditor if an expression
    referenced a script variable.
  • Fixed bugs in channel mask menus on image processing nodes.

Core

  • Added Wedge node. This allows tasks to be dispatched multiple times
    using a range of values (#1372).
  • Added TaskContextVariables node. This allows variables to be defined
    within the tree of tasks (renders etc) executed by a dispatcher.
  • Added Loop node. This takes an input and loops it N times through an
    external graph before outputting it again. This provides the user with
    the ability to do things with the graph which were previously only
    achievable with code.
  • Reference
    • Fixed serialisation of empty reference.
    • Fixed serialisation of user plug metadata.
    • Fixed referencing of promoted plugs
      • ExecutableNode requirements plug
      • UnionFilter filter inputs
      • OSLImage and OSLObject shader plugs.
      • RenderManShader coshader plugs (#1358).
  • Expression
    • Fixed support for setting GafferImage FormatPlugs.
  • ContextVariables
    • Fixed serialisation bug where additional plugs were added on
      save/load and copy/paste.
  • Improved Context and ValuePlug performance.

Image

  • Added ImageLoop node.
  • Performance
    • Improved Reformat performance.
    • Improved threading peformance for small images.
  • ImageWriter
    • Improved error messages.
    • Fixed bugs with empty filenames and filenames using
      substitutions.
  • ImageTransform
    • Fixed copy/paste.
    • Fixed dirty propagation bug which could prevent the viewer
      updating at the right time.
  • ImageReader
    • Added error reporting for missing files.

Scene

  • Added SceneLoop node.
  • Transform
    • Fixed bugs in World mode.
    • Added Parent, Local Reset and World Reset modes.
    • Renamed Object space to Local.
    • Changed default space to Local.
    • Note that these are backwards incompatible changes, necessary to
      fix an important bug and get the Transform node on a solid footing
      for the future. To get the same results as the old World mode, use
      the new Parent mode.
  • FreezeTransform
    • Fixed bug which prevented the UI updating when the input object
      was changed.
  • Fixed bugs which could cause incorrect bounds to be computed.

Appleseed

  • Removed options and attributes that are not useful in Gaffer.
  • Fixed default values for some options and attributes.
  • Documented all nodes.
  • Added support for shading overrides.

API

  • Pass-through connections may now be made for FormatPlug (#1250).
  • Added TaskContextProcessor base class. This enables the development
    of ExecutableNodes which request their input requirements in different
    contexts.
  • Added support for directly setting Color3f context values from Python.
  • UI Metadata additions. Many additions were made to the metadata supported
    by the Node UIs, and the existing UIs were ported to make use of it.
    • "layout:visibilityActivator"
    • "plugValueWidget:type"
    • "compoundDataPlugValueWidget:editable"
    • "boolPlugValueWidget:displayMode"
    • "vectorDataPlugValueWidget:dragPointer"
    • "pathPlugValueWidget:leaf"
    • "pathPlugValueWidget:valid"
    • "pathPlugValueWidget:bookmarks"
    • "fileSystemPathPlugValueWidget:extensions"
    • "fileSystemPathPlugValueWidget:extensionsLabel"
  • ScriptProcedural
    • Added context parameter.
  • BoolWidget
    • Added setDisplayMode()/getDisplayMode() accessors.
  • Added AcceptsDependencyCycles Plug flag. See the Loop node for an
    example of use.
  • Added FileSystemPathPlugValueWidget.
  • Metadata
    • Fixed inconsistent handling of NULL values.
    • Added methods for deregistering values.
  • Removed GafferUI.SectionedCompoundPlugValueWidget.
  • Activator expressions are now attached to the parent of the plug, rather than always being on the node.
  • Removed StringPlugValueWidget continuousUpdate constructor argument. Use metadata instead.
  • Removed MultiLineStringPlugValueWidget continuousUpdate constructor argument. Use metadata instead.
  • SceneNode
    • Added childNames argument to bounds union methods.
  • SceneAlgo
    • Added bound( const IECore::Object * ) function.

Build

  • Updated to Cortex 9.0.0.
  • Updated to OIIO 1.5.17.
  • Updated to OSL 1.6.8.
  • Updated to 1.2.0-beta.

Incompatibilies

  • Removed Reference::fileNamePlug() (#801). Use Reference::fileName()
    instead. Use continueOnError = True when loading old scripts.
  • Removed arguments from CompoundDataPlugValueWidget constructor. Use
    Metadata instead.
  • Removed SectionedCompoundDataPlugVlueWidget. Use LayoutPlugValueWidget
    and metadata instead.
  • Changed base class for ImagePlug.
  • Changed base class for ScenePlug.
  • Changed base class for SplinePlug.
  • Removed ImageMixinBase. Use ImageProcessor instead.
  • Removed SceneMixinBase. Use SceneProcessor instead.
  • Removed GafferUI.SectionedCompoundPlugValueWidget. Use LayoutPlugValueWidget instead.
  • Activator expressions are now attached to the parent of the plug, rather than always being on the node.
  • Changed ChannelMaskPlugValueWidget constructor arguments.
  • Changed Transform behaviour to fix bug in world space mode, add new modes and change the default mode to local. If you need the old world space behaviour, use the new parent space mode.

Version 0.14.0.0

18 Jun 19:16
Compare
Choose a tag to compare
Version 0.14.0.0 Pre-release
Pre-release

UI

  • NodeGraph
    • Improved "Select Affected Objects" menu item. This is now available
      on filters as well as on scene processors.
    • Added support for dragging objects from the Viewer and SceneHierarchy
      and dropping them onto scene processors and PathFilters, to specify
      the affected objects.
      • Dragging onto a node replaces the current paths.
      • Shift+Drag adds to the current paths.
      • Control+Drag removes from the current paths.
    • Added plug context menu for moving promoted plugs on Boxes.
  • NodeEditor
    • Added "Select Affected Objects" menu item in the tool menu for
      filters and scene processors.
  • UIEditor
    • Added + button for adding plugs, and - button for deleting them.
    • Added the ability to create nested sections and drag+drop plugs
      between them.
  • Viewer
    • Fixed grid and gnomon menus.

Core

  • Expression
    • Added support for setting multiple plugs from one
      expression (#1315).
    • Added support for vector, color and box outputs (#1315).
    • Added support for assigning to plugs within conditional
      branches (#1349).

Scene

  • Improved ParentConstraint so it is acts more like the equivalent
    parenting operation, and maintains the local transforms of the
    objects being constrained. Note that this is a change of behaviour,
    but one that we feel is much for the better.
  • Fixed ShaderAssignment to allow referencing of promoted shader input
    plugs.

API

  • Added parallelTraverse() and filteredParallelTraverse() methods
    to SceneAlgo. These make it trivial to traverse all locations in a
    scene using multiple threads.

  • Added inputTransform argument to Constraint::computeConstraint().

  • Removed TransformPlugValueWidget.

  • Used Plug rather than CompoundPlug in several places. CompoundPlug
    is being phased out because the Plug base class is now perfectly
    capable of having child plugs.

    • ExecutableNode::dispatcherPlug()
    • LocalDispatcher dispatcher plug
    • Shader::parametersPlug()
  • Fixed support for boost python object methods as menu commands.

  • Pointer

    • Fixed registerPointer() method.
    • Added binding for registerPointer().
  • Added scoped argument to Signal.connect() python bindings.

  • Added SignalClass for binding signals, and deprecated the old
    SignalBinder.

  • Added support for binding signals with 4 arguments.

  • Added LazyMethod.flush() method.

  • Fixed update bug in PathListingWidget.setSelectedPaths().

  • Added support for "nodule:type" metadata to control the type
    of nodule created for a plug. This should be used in preference
    to Nodule::registerNodule(), which has been deprecated.

  • Added support for modifying CompoundNodule orientation, spacing
    and direction using plug metadata.

  • Improved signalling of instance metadata changes.

  • Added default arguments for ValuePlug constructor arguments.

    Incompatibilities

  • Changed Constraint::computeConstraint() function signature.

  • Changed ParentConstraint behaviour to include the local transform of the constrained object.

  • Removed TransformPlugValueWidget.

  • Changed plug type returned by ExecutableNode::dispatcherPlug().

  • Changed Dispatcher::SetupPlugsFn signature.

  • Changed ExecutableNode::dispatcherPlug() signature.

  • Changed Shader::parametersPlug() to Plug rather than CompoundPlug.

  • Removed asUserPlug arguments from Box promotion methods. Plugs are
    now always promoted directly under a box, and never as user plugs.

  • Changed signature of Nodule::registerNodule() when registering a subclass.

  • Changed signature of CompoundNodule constructor, which now accepts a Plug
    rather than CompoundPlug.

  • Replaced UIEditor setSelectedPlug()/getSelectedPlug() methods with
    setSelection()/getSelection().

  • Added arguments to Metadata signals.