Fabric Engine 2.6.0 Release Notes

Fabric Engine version 2.6.0
Released August 2017
Copyright (c) 2010-2017 Fabric Software Inc. All rights reserved.

About This Release

Fabric Engine 2.6 has improvements in the following areas:

  • New framework for creating custom manipulators
  • Rigging and animation
  • New Fabric extensions (USD, Lidar) and re-wrappings (Bullet, FBX)
  • Asset Patterns workflows running inside Maya
  • UI/UX and workflow improvements

See What’s New in the Fabric Engine 2.6 video.

New Manipulation Framework

You can now construct custom manipulators of your own design inside of Fabric Engine. The new manipulation framework simplifies building tools and massaging data interactively in Fabric. Manipulation tools allow you to interactively select objects and their components, perform transforms, or paint and sculpt data. With the ability to design your own manipulators in pure KL, you get to create tools and assets that are portable and decoupled from Maya and other digital content creation (DCC) applications in your pipeline.

Rigging and Animation

F-curve widget - A new widget integrated in the value editor lets you create or adjust curves to control animation of objects or use as modeling helpers (e.g. defining the profile of an extrusion). This new widget reduces the need to interact with Maya or another DCC application to adjust values that change over space or time. Your Fabric Engine applications can now set or tweak function curve values directly.

AnimX support - Fabric Engine now natively evaluates curves exactly like Autodesk Maya through use of the AnimX open source library from Autodesk. The adoption of AnimX increases Fabric’s consistency with the leading DCC application and eliminates any need to approximate “Maya-like” behavior. Interpolation methods in Fabric Engine are now fully transparent, which can be useful in matching behaviors from other DCC packages. The results are currently validated with Maya 2017 and will be kept up to date as new releases of AnimX are made available.

Radial Basis Function (RBF) – Fabric Engine can now utilize an RBF to produce smooth approximations of surfaces that precisely pass thru measured sample data. This is particularly useful for pose-based deformations that need to be solved in real-time such as facial animation or secondary animation of cloth over a muscle system. RBF is also applicable to 3D reconstruction problems where sample data is sparse but accurately located, and to support kernel-based learning algorithms.


We have introduced some new extensions

Universal Scene Description (USD) – Fabric Engine can now process USD files that can describe arbitrarily large digital scenes. Developed by Pixar Animation Studios, USD organizes vast scenes composed of elemental assets that Fabric Engine can manipulate and process. With new support for USD in Fabric you can extract data subsets for specific needs, applying specialized solvers and renderers, or prepare data for consumption by downstream processes.

Lidar – Fabric Engine can now read files captured by Lidar digital imaging technology (which measures precise locations real-world environments in the form of dense 3D point cloud datasets). The new Lidar support facilitates the construction of 3D models from these point clouds that accurately capture building interiors, topography or as-built roadway intersections. Lidar support in Fabric can be used to prepare data for use in VFX and real-time pipelines or to build specialized applications that create and navigate virtual sets.

Bullet – A rewrapping of the Bullet physics library, exposes functionality that was not present before (like soft body dynamics) and in a higher-level fashion. We are deprecating the old bullet and will remove in the next release.

FBX – A rewrapping of FBX extends the previously limited support of this library in Fabric .

Asset Pattern workflows inside Maya

Asset Patterns (formerly referred to as “import patterns”) are rule-based recipes in Fabric which read and write scene data with precise control. Asset Patterns are now exposed into Maya, facilitating the use of Fabric Engine to import and export scene data from/to the industry standard formats such as Alembic and USD. Data processing and interoperability between Maya and other DCC’s is easier than ever.

For more information on how to use Asset Patterns in Maya please refer to the documentation

UI / UX Improvements

We continue pushing Fabric Engine to make the daily use a better experience. In this release, we have added the following additions:

  • Improved grid snapping when moving nodes and backdrops
  • The font size of the Function editor and Log widget can be changed interactively using CTRL + ‘-‘ / ‘+’ / ‘0’ / ‘mouse wheel’.
  • Removed unused presets in Canvas to improve discoverability
  • Added visual feedback for inspected nodes in Canvas
  • Added film gate capabilities to the viewport
  • Implemented automatic Backdrop resizing in Canvas based on node selection
  • Improved the connection anchor toggle in Canvas Graph View and gave connection wires a consistent width
  • You can now automatically expose unconnected ports of a node selection
  • Added Type predefined ports to the SidePanel context menu

New Production Samples

We put some of the new features to test with a simple hair system production sample. You can get more information on the system in the following blog article


Additionally, we have

  • Optimized RTval compilation
  • Added functionality to the Geometry primitives such as UV to location capabilities for polygonmeshes (sample the UV space of a polygonmesh)
  • Added new presets: ambient occlusion, relax points in space and smoothstep
  • Made a bunch of fixes and added a new splash screen.

Supported Operating Systems, Integrations and GPUs

  • Fabric 2.6.0 is supported on Windows and Linux. macOS builds are provided but are not officially supported; official support on macOS will arrive in a subsequent release.
  • Fabric for Maya integration is supported for Autodesk Maya 2015, 2016 and 2017 and their corresponding service packs and extensions on Windows and Linux.
  • Fabric for MODO integration is compatible with MODO 901 through to MODO 10.1 and is available on Windows, Linux and OS X.
  • GPU support is available on NVIDIA hardware. See the GPU Compute Guide in the documentation for more details.


To learn more about Fabric Canvas, please see:

Also be sure to check out http://fabricengine.com/blog/ for articles and introductory how-to videos.


All downloads for Fabric Engine 2.6.0 can be obtained at http://dist.fabric-engine.com/FabricEngine/2.6.0/. For information on installation please refer to Getting started with Fabric Engine.


Fabric Engine 2.6.0 is available for free use under Evaluation, Studio or Educational licenses and is also available under commercial terms. Commercial customers are entitled to contact Fabric directly for Support. Non-commercial customers are encouraged to use the following options:

  • http://forums.fabricengine.com : Ask & answer questions within the Fabric community. This is where you should post your support issues.
  • mailto://bugs@fabricengine.com : If you have found a bug you can email us with clear steps to reproduce the issue (be sure to include details on what operating system and DCC application and their respective versions that you are using). Please note that we will respond only if additional information is required to resolve an issue with the Fabric platform.

Known Issues

  • Fabric for Maya: Using Gradients in the viewport with Fabric Viewport 2.0 is not supported.
  • Some samples fail on Cuda 8 like in Geometry/utilizinggpucompute.html#polygonmesh
  • Adding fcurve widget keys in a variable will crash Fabric
  • Fcurve is not yet supported in Fabric for MODO and will produce a crash if used
  • The manipulation framework does not work in macOS since we’re using OpenGL profile 3 for the selection. This is planned to be fixed in a future release
  • Fcurve widgets are not currently supported in animcurve arrays, which can lead to unstability


  • We have removed Fabric for Softimage support
  • Animation and JSON extension are now deprecated
  • The ‘required extensions’ text field now requires a double-click before it can be edited
  • UI (port labels): the port labels of branched arrays (e.g. foo[][], abc[][][], etc.) now correctly reflect the array type
  • Canvas Graph View: new ‘Explode selected nodes’ feature to explode several nodes at once
  • Dragging or re-connecting connections now disconnect the original connection upon mouse release
  • By holding CTRL when clicking in the node header one can now connect the node header exec ports without needing the context menu
  • Newly create function, backdrop and variable nodes are now automatically selected, same as newly added graph nodes or presets
  • The report expression now takes a variable number of arguments, and it prints the result of concatenating the arguments with spaces, calling .appendDesc(...) on each argument
  • InlineDrawingShape functionality has been moved to a new DrawElements geometry. The InlineDrawingShape and the same methods still exist, but redirect these to the DrawElements. If a customer implemented its own method for InlineDrawingShape or related DrawingHandle methods, that code might have to be updated with the new indirection: “shape” -> “shape.drawElements”
  • Due to some performance issues we decided to remove temporarily the code completion until we can offer a better solution
  • The ‘Save’ button in the function editor has been renamed to ‘Apply Code Changes’
  • Fabric for Maya: by default Singletons are no longer destroyed on new scene
  • Fabric for Maya: FabricSpliceTool has been renamed to FabricManipulationTool
  • The DFG command ‘AddBackdrop’ now returns the name of the new backdrop node

List of Issues Addressed


FE-8541 Extend namespace support for python ASTWrapper


FE-5852 New Manipulation framework in Canvas

FE-7299 DFGController::cmdAddBackDrop() should return the name of the new backdrop node

FE-8664 remove preset resolution by path without GUID matching

FE-8767 Make inspected variable values in the value editor read only

FE-8614 Disable Code completion

FE-8497 PathValue resolver for commands

FE-7946 Extensions spreading from function nodes to their parent nodes

FE-8425 undo not working when changing values of array elements

FE-8478 Added a new script to prebuilt all the KL extensions

FE-8750 Regression: exposing ports does not set default value

FE-8544 added function to query state of ‘disable graph compilations’

FE-6027 Locale: scalar values should be correctly converted regardless of the language settings

FE-8034 Adding a “timeline” port no longer forces the re-evaluation of the Graph when the timeline changes

FE-8164 Added new KL/C++ command manager

Canvas UI/UX

FE-8563 Right-click menu not showing on backdrop

FE-5070 Create a backdrop on a node selection

FE-8074 Snap to grid when resizing a backdrop

FE-8369 when editing a backdrop the “Text” field should have the focus, not the “Node Name” field

FE-8373 regression: undo not working when moving a backdrop with Shift pressed

FE-8415 right clicking in a (unselected) backdrop does nothing

FE-7155 Remove Expose out ports in sidepanel for block definitions

FE-8453 allow to create new blocks within the tabsearch

FE-8770 Give basic math operators (+, -, *, /) the logical operator node treatment

FE-6173 Can’t explode more than one subgraph at once

FE-8558 Renamed nodes don’t cause reevaluation, but should because of dfgNodePath might be used

FE-8048 Expose all input/output ports from a Node

FE-8445 Make geometry and string wire colors more visible

FE-8489 Regression: Daisy chain casting broken in canvas

FE-8514 $TYPE$[] types should be allowed when creating ports

FE-8543 visual feedback graph compilations are disabled

FE-8122 Disconnecting a wire shouldn’t update the change until the mouse click is released

FE-8488 Ports with ranges only show five digits

FE-7883 required extension field should loose focus after pressing return

FE-5107 Minimum pixel width for connection wires

FE-6638 Canvas size of windows are not remembered between session when canvas is maximized

FE-7949 Regression: Nodes under the SidePanel intercept double-clicks

FE-7862 Regression: right-click on node comment toggles collapse state but also invokes context menu

FE-7884 required extensions overwrites parent graph’s req. extensions

FE-7950 right click context menu can interfere with the zoom workflow

FE-8172 Options editor for tools

FE-8285 Reveal in Explorer should be grayed out for inlined presets

FE-8298 Make the colors of the highlighting over port action work better

FE-8584 Enabling Tool shortcut Q requires focus in the viewport, and pressing several times Q makes the focus to be lost

FE-8771 Extend the new PolygonMesh purple color to Geometry,Lines and curves types

FE-8400 when using ‘Reveal in explorer’: automatically display the explorer if not visible

FE-8411 when using ‘Inspect’ (i.e. double-click on a node): automatically display the value editor if not visible

FE-7550 presets should be ordered alphabetically in the node explorer

FE-8003 Added FilmGate controls in the render settings

FE-8069 improve grid snapping

FE-8725 Added Type predefined ports to the SidePanel context menu

FE-8372 You can connect the (hidden) exec port without having to go via the port menu with Ctrl

FE-8461 ‘Reveal in Explorer’ doesn’t bring the explorer in the foreground

FE-7118 Hard / Soft limits can be out of sync

FE-8396 add some visual feedback to the node that is currently inspected in the value editor

FE-8448 the graph view context menu should have “Back” disable when in the root

FE-7265 Control the size of the fonts in Script Editor and Log Widget with ctrl+ +/- and mousewheel

FE-8623 rename the save button and add tooltips to “save” and “back” buttons

FE-8457 only graph nodes are selected after creation

FE-5984 Canvas Labels Not Showing Arrays Of Arrays In Node Labels

FE-8423 Make ValueEditor::ColorViewItem support QColors (and not just RTVals)

FE-5778 Improve wire connection rectangle anchor

FE-8438 Improve the Required extension field: add tool tip that contains the extensions

FE-7283 error in diagnostic widget not disappearing

FE-6235 errors on variables are flagged red but don’t appear in the diagnostic window

FE-6318 DFGBinding getErrors empty even though in error

FE-8559 Cannot specify $TYPE$<> nor $TYPE$[] in type spec field in port editor when adding ports

FE-7539 Right-clicking on a port label inside of a Node should open the port’s context menu


FE-8519 incorrect behavior when creating backdrops and variables via the Tabsearch

FE-8552 Fabric.Core.Array.Get is returned late in the TabSearch

FE-8344 TabSearch : Querying “AxisAn” shows nothing but “AxisAnd” does

FE-8366 ability to move the Tabsearch widget

FE-8386 any non ascii character in the search field empties the output result

FE-8517 removed func pathcomp in presets since it is not useful

FE-7915 tab starts a TabSearch while displaying context menu


FE-8508 if you inherit from an object that lives in another namespace, then you can’t use :: instead you have to go the ‘using’ way.

FE-8650 Corrupted IR if extensions redefine an object of same name (found with Ext unit tests)

FE-8482 RTVal doesn’t trigger License information output anymore

FE-8718 Allow struct members named report and fix comma expressions in the first part of for statements

FE-8420 HeapSize gives now the correct output

FE-7933 Create a callback upon loading an extension library


FE-8643 Construct RTVal in KL

FE-4276 Support per-KL-extension “on create client / on destroy client” callback functions directly in KL

FE-7350 Compiler crash using declared but undefined KL type, split in 2 KL files

FE-8015 Support a dllMain-like KL callback being called the 1st time an extension is loaded

FE-8079 Add support for undo/redo to the KL command manager

FE-8272 kl.exe searches for and loads Canvas presets

FE-8532 Namespaces & Types

FE-8562 Namespaces: constants not supported + crashes with forward-declared objects

FE-8508 Namespaces: :: Can be now used when inheriting from an object that lives in another namespace

FE-8719 Can’t use , in a for statement

FE-8157 Method to get the extension file path in KL added

FE-8485 KL: Fix RTVal-to-String conversion

FE-8511 changes to report method

FE-7944 Be more consistent Reporting RTVals in Containers

FE-7355 KL switch statement with default return is giving improper “return value” error

FE-8477 Added set/getJSON methods for C++ Rl referencing KL RTVal

FE-8775 Added RTVal.specializedType() method


FE-7514 kl2edk crashes with 2 “permitted” object types


FE-7912 fpm.json requires paths like / for KL2DFG to work properly

FE-8031 can’t tweak the metadata (default value, slider range, etc) of automatically created compose/decompose presets

Asset Patterns

FE-7449 generic importer filter presets to return “rejected”


FE-8274 Ensure that kludge contains the void * size method only in the kludge extension

FE-8336 returning const * opaque causes build break

FE-8513 Kludge: support for [] types in C++ type expression parser

FE-8533 Kludge unit tests are not deployed in the Fabric package (but the docs refer to them)

Value Editor

FE-4509 Added Curve editor widget


FE-8539 Some new extensions are not defining their version

FE-7943 Unrecognized JSON keys in FPM JSON files causes extension not to load


FE-8463 Added the ability to write IntegerAttributes

FE-8465 Continue writing attributes when one fails

FE-8466 Added the ability to read and write mat44 attributes

FE-8491 Added a Mat44.interpolate that tries sphericalLinerp then linearInterpolate if shearing


FE-8516 add Points.addPoints! ( in Vec3 positions[] ) preset

FE-8112 All the deform nodes should work with a Geometry instead of a PolygonMesh

FE-8599 GetPointPositionArray preset was broken

FE-4655 Add UVToLocation support for PolygonMesh

FE-7792 Add UV sampling

FE-6550 InvertMesh compound is now in the PolygonMesh extensions instead of inlined in a Canvas node


FE-8621 Refactored FBX


FE-8637 Add JSON conversion method to basic Math objects, like “toXfo”.

FE-8721 FTL JSON missing getKeys for object


FE-7706 Template Image2C, Image3C and Image4C

Inline Drawing

FE-8772 Regression: Drawing way slower in 2.6.0 than in 2.3.1

FE-8523 InlineDebugShape now using DrawElements geometry internally


FE-8413 Lidar extension added


FE-7370 Include Radial basis function extension


FE-8020 3D text: slightly weird text drawing artifact

FE-8232 DrawAttributeAsText at resolution < 100 draws incorrect values


FE-8449 String.startsWith() is super slow


FE-8260 LA extension named incorrectly

FE-8781 sphinx kl ref to allow namespaces references

FE-7534 Methods definitions inconsistency

FE-7398 RTVal::assign( RTVal ) was not documented

Fabric for Maya

FE-7027 Side Ports Centered nor Dim connections are not respected

FE-8542 Duplicating a port crashes Maya!

FE-8450 Disable graph compilation is disabled in Maya

FE-7722 Delete complex attributes (Array, Struct) makes maya crash

FE-7821 extensions not found error when loading packaged scene

FE-7905 support cameras for import patterns in maya

FE-7906 support animations for import patterns in maya

FE-7994 Tooltips on nodes or ports don’t work in Maya

FE-8091 Integrate the tools drawing to maya

FE-8092 Integration of manipulation commands (Maya auto-translation layer), including activate

FE-8258 Xfo ports in Maya are seen as Matrices but they don’t update.

FE-8426 In Maya2017, the Viewport doesn’t update from the ValueEditor

FE-8447 FE Maya 2.5: Duplicate Mat44[] attributes in attribute editor

FE-8471 crash with canvas func node

FE-8582 FabricCanvasMoveNodes does not work as expected in python

FE-8585 Record last export/import filepath

FE-8586 If there is no selection in Maya, Fabric export would consider the whole scene

FE-8735 inline drawing is not cleared when switching maya scenes

FE-8433 Maya crashes when overwriting locked bin files

FE-8608 update the [SPLICE] prefix from our errors with Fabric for Maya

FE-8479 Singletons are no longer destroyed by default on new scene.

Fabric for 3ds Max

FE-8414 Crash when changing port type in a custom function node.


FE-8658 Redo EmptyDrawingHandle so it uses NLS

FE-8597 Create Polymorphic CreateArray preset

FE-8430 missing “EmptyCurves” preset

FE-8600 Reorder presets folder pass

FE-6570 preset RecordVec3: going to frame 0 does not reset values (inside of graph) as expected

FE-7271 Many redundant IncrementVersion presets

FE-7153 Refactor all the clone presets

FE-7688 ambient occlusion compound

FE-8624 Add Smoothstep function

FE-8521 RelaxPoints preset


FE-8505 UVToLocation: add a Canvas sample

FE-8213 sample vertex tagger not at frame 1

FE-8694 cleanup manip samples to avoid refs

FE-8744 DFGBinding Importer fbx sample has errors on load

FE-8745 alembic_custom_filter sample not drawing anything

FE-8747 Multipede Files have errors and warnings

FE-8434 Space in texture resource file name

FE-8054 the greeble samples were using the old “PolygonMesh.SetAllPositions” presets

FE-8604 make FCurve samples