• removed gimbal artifacts introduced when the spread parameter was used on the Guide node.
  • fixed a bug in the guide curve code which caused the curve length sample to be increased by two resulting in incorrect guide curve representations.


  • up vector interpolation has been fixed which was causing feather instances to fail upon expansion.
  • Bend node correctly computes weights along fibres when point counts vary.


  • fixed an issue with Groom strand creation introduced in 2.0.23.


  • added better support for Arnold’s deform time samples, please see the Arnold deform_time_samples section of Command Line Tools and Rendering for more information.
  • updated rendering DSO’s to ensure texutre memory is flushed as soon as possible.
  • ensured grooms used a single static rest position to avoid potential issues with floating point precision.
  • attribute node will avoid zero length (null) attributes.
  • fixed an edge case with single sample dynamic attributes which caused instability with the feather primitive.


  • invalid cache paths will now return NULL vs empty graphs.
  • refactored how guide curve detail is computed.
  • users can now choose between using the reference length or exact length in the Grow node to provide support for squash/strech in input guides. (it’s is advised to always use By Count in this instance).
  • a new Geometry tab has been added to the Grow node for UI tidiness.
  • updated instances to avoid deep instances of feathers (as they are expanded post evaluation).
  • added support for frame relative deform_time_samples to the Arnold procedural, this expects the frame parameter to be set to the current frame (for Katana via KtoA).


  • all guide curve shapes are now forced to update their internal data structures prior to evaluation to avoid Maya API race condition.
  • fixed a bug where group assignment was ignored if completely unbounded.
  • fixed an issue where VRay would crash when an incorrect and/or empty path was passed to the rendering engine.
  • fixed a bug that caused Yeti to crash when building empty Grooms.
  • added Obey Weight parameter to the Clumping node which controls whether Conform If Longer takes the input weight into consideration when evaluating the length.
  • refactored how subdivision surface settings are handled, Yeti tags on the input mesh correctly take priority over any other settings vs. modulating them.
  • graph evaluation statistics now include the memory usage of the Texture Cache involved in the graphs evaluation.


  • input mesh subdivision will be ignored if Yeti Subdivision is on and set to 0 iterations.
  • color, incandescence and transparency parameters are now correctly passed to VRay.
  • an issue with local variable caching has been fixed which was affecting instanceNum and others in the Instance node.
  • removed srgb transform in diffuse and specular calculations.
  • Scatter brush will now correctly populate the surface on initial stroke.
  • using the Fill tool with the Scatter brush won’t invalidate the new strands anymore.


  • removed srgb transform in GLSL shaders.
  • refactored guide set handling in the Attribute Editor which resolves issues when removing sets from the selected node.
  • refactored callback management which avoids dangling callbacks when unloading/loading references.
  • removed TBB task scheduler completely from Arnold DSO.
  • pgYetiPreRender will only be added to the render globals if a Yeti node exists in the scene.


  • removed unused feather attributes in expanded feather objects.
  • updated guide curves to ensure consistent lengths between motion blur samples.
  • 3delight DSO now ships with Windows distribution.


  • fixed an issue introduced in 2.0.15 relating to the simulation state not correctly being propogated.
  • pgYetiPreRender uses global Maya environment variables vs. optionVar to store the current working directory.


  • removed all references to executeCommand in Yeti node, a preRender Mel script is now required to store the current temporary directory for cache files.
  • support for directory mapping has been removed, the Maya API does not include a C++ API to support this and calling executeCommand isn’t thread safe.
  • environment variable expander is now thread safe.
  • search path handling for ImageIO is new thread safe.
  • refactored face set handling with subdivision surfaces to reduce memory consumption and provide more stability.
  • updated how Conform if Longer works in the Clump node.
  • integrated OpenSubdiv 2.6.1 which adds much needed stability to the subdivision core.


  • updated Guide node to handle attraction attentuation the produces results closer to 1.3.x.
  • sculpt brush has been updated to avoid propogation of brush force along the length of the strand.
  • world scale and strand mass integration is corrected for strand simulation.
  • re-introduced rest influence control in dynamic simulation.
  • updated simulation defaults to reflect changes in dynamic solver (gravity is now 98.0 as per Maya’s default units).
  • fixed deformed feather motion blur.
  • removed calls to potentially non-thread safe Maya commands.
  • fixed a bug in the feather generator which could cause instabilities with mis-matched time samples upon expansion.
  • fixed a bug in the Instance node which the root of many motion blur issues.
  • fixed a bug that was causing VRay to crash with instanced feathers.
  • Displacement node correctly normalizes the input direction vector post expression evaluation.


  • sculpting now relies on Obey Surface Normal toggle to control the brush weight on back facing surfaces/strands.
  • fixed a bug that was causing Interactive licenses to be checked out in-advertently.
  • fixed an issue where the radius of influence set in the Convert node wasn’t being propogated correctly.
  • added two Yeti menu items to flush the display cache of both the selected and all Yeti nodes.
  • fixed Displacement node so it won’t crash when being applied to particles.
  • removed maximum limit of objects specified as input to pgYetiCommand (for concurrent caching, etc.)
  • added an example scene on how to access PRef in Arnold


  • switching feather display type correctly updates viewport.
  • icon for feathers correctly showing in Outliner.
  • fixed issue with feather instances rendering with VRay.
  • improved energy conservation during collisions while simulating.
  • attribute paint smoothing correctly applies both positive and negative weight values.
  • new strands are correctly spaced when not adding at vertex positions.
  • conform if longer in the Clump node has been refactored to provide more accurate shape match to the clump fibres.


  • grooms used with Override Inputs are correctly cached out.
  • input caches with Override Inputs set will now generate temp cache files when rendered (vs. rendering the cache file read off disk).
  • greatly improved Groom speed and feedback when using complex input geometry.
  • optimized Sculpt mode for grooming for more interactive results.
  • undo/redo is fixed when mirroring strands.
  • undo/redo stack maintained between tool selections.


  • image search path is correctly translated into VRay scene files.
  • more aggressive tidying of memory in VRay DSO which results in much better usage.
  • Override Cache with inputs refactored to avoid instances where values may not be updated as expected.
  • moved Override Cache With Inputs to I/O panel of pgYeti AE.
  • fixed issue with transform node crashing graph evaluation.
  • updated ImageCache to handle cross platform path locations more robustly.
  • reverted guides back to 1.3.19 behaviour.


  • resolved VRay motion blur issues when rendering with animation ON.
  • VRay samples are correctly exported via forcing the VRay transform node to be dirtied.
  • resolved issue where temporary cache names could result in overlapping hashs.
  • fixed strand motion blur sampling.
  • improved guide interpolation.
  • re-implemented “Stick to Surface” for Guide sets.
  • fixed issues with guide curves transformed into the wrong space.
  • updated Arnold DSO to avoid potential license check out race conditions.


  • updated 3delight Mel callback to specify pgYetiMaya as a plugin requirement.
  • GLEW is only initialized when in interactive mode.
  • more agressive checks for invalid UV’s.
  • second input is now not required when converting Guides to Fibres, this will behave like 1.3.x convert node.
  • fixed issue with rest position for guide curves.
  • a fibres length attribute is correctly recomputed for nodes that potentially affect it.
  • fixed slow graph editor display/updates.


  • Yeti correctly dirties the scene after generating cache output for VRay.
  • Modifying user variables will correctly force a graph update.
  • Fixed an issue with Fill callback which prevented it from working with paintable attributes.
  • Removed normalization on U and V scale of Curl node.
  • Fibres and Particles are correctly instanced.


  • fixed an issue in the Comb and Guide node that was causing output fibres to reduce in length at render time.
  • current display cache size correctly updated.
  • reading cache files won’t inadvertently draw an interactive license vs. a render/batch license.
  • Grow node will now avoid creating empty objects which caused downstream issues.
  • Switching subdivision display type will now correctly invalidate display cache.


  • graph feedback is correctly populated in GUI.
  • fixed an issue introduced with 2.0 which caused the Spread in a Comb node to be over applied to varying curve types at render time (Arnold and PRMan).
  • fixed an issue with Maya 2014 scenes causing the Yeti Graph Panel creation callback to be ignored.


  • attribute paint drawing issues in Maya 2016 have been resolved.
  • Grow will not create invalid objects due to empty strand systems being passed into the second input.
  • pgYetiConvertGuideSetToGroom has been updated so new groom strands inherit the input surface normal vs. the guides normal. This means the resultant groom will match the look/feel of grooms created from scratch.
  • fixed issue with black viewport being drawn on linux due to GLProgram not being re-loaded post GL draw execution.
  • fibre roots correctly interpolated with 0 length base segments.
  • resolved Comb and Guide interpolation issues.
  • graph changes correctly notfity Maya that the scene is “dirty” and should/can be saved.
  • resolved invalid up vector computation that was causing issues with both the Curl and Instance node.


  • fixed a bug that was causing unstable Viewport 2.0 drawing when using GL Core Profile code path.
  • resolved a memory leak with Viewport 2.0 draw cache.
  • resolved a memory leak due to thread local storage being inappropriately de-allocated.


  • avoided attempt to create QWidget in Compute method of pgYetiMaya node.
  • removed YETI_INTERACTIVE_LICENSE environment variable as it’s redundant with the new licensing scheme.
  • updated state management for GL drawing.
  • Convert node correctly applies world transform of Grooms input geometry.
  • empty Groom’s won’t crash the graph evaluation when used with a Convert node.
  • added pgYetiTearOffGraphPanel command and Open Graph Editor to Yeti menu and GE button to Yeti shelf.
  • the graph editor is correctly updated when input dependencies names are changed.


  • refactored input shape caching for Groom node which was causing strands to remain static with input blend shapes.
  • updated evaluation cache to avoid multiple thread evaluation.
  • refactored VP 2.0 draw calls to fully cache graph results.
  • fixed crashes introduced when using threaded graph evaluation and VP2.0.
  • Yeti will throw an error vs. crashing when objects with invalid U/V coordinates are referenced.


  • trying to create a node with a Groom selected won’t crash maya.
  • sculpt brush now correctly avoids intersecting with the base mesh.
  • fixed a crash caused by instanced particles and fibres missing motion attributes.
  • fixed core GL issues when drawing instanced geometry.
  • fixed a crash caused by no objects passed to the second input of an Instance node.


  • fixed a threading bug that was causing instability when sampling attributes.

2.0.0 RC

  • refactored Viewport 2.0 call loop to improve feedback in Maya 2016.
  • reduced GLSL Geometry Shader subdivision level to reduce GPU memory use.
  • correct distinction between Guides and Grooms in the Import node UI.
  • removed Maya 2014 build due to inconsitent Viewport 2.0 support.
  • moved Yeti documentation to http://documentation.peregrinelabs.com/yeti/
  • updated Node help locations to reflect new documentation location.

2.0.0 b05

  • removed lzma dependency on Darwin.
  • more robust handling of Arnold DSO samples parameter.
  • colors set via Shader node won’t be modulated by the node draw colour in the GL viewport.
  • updated Viewport 2.0 override to avoid unneeded bounding box calculations.
  • base/tip attraction in Guide node correctly obeys Weight parameter.
  • fixed a crash caused by Group node when id’s are out of sync of point indices.
  • rendering engine DSO’s are more aggressive about releasing cache data.
  • clumping will just be ignored vs. failing if fibres aren’t present in the second input.

2.0.0 b04

  • added progress argument to pgYetiCommand to output the export progress to stdout. (x% done)
  • removed all legacy viewport support.
  • updated graph evaluation loop to remove legacy calls and decrease redundant evaluations.
  • icons laid out correctly in Yeti Graph Editor panel for Maya 2016.
  • updated Yeti Graph Editor tool list to conform to Maya 2016 “flat” style.
  • user is now warned when fibres aren’t present in the second input to the Clump node.
  • fixed a bug in Arnold DSO that caused a crash with custom attributes.
  • viewport GL now obeys the viewport width attribute on the Yeti node.
  • resolved bug caused by non existent attribute containers.
  • scene nodes now update when changes are made in the node inspector while the graph editor isn’t visible.

2.0.0 b03

  • comb brushes work with Fill tool as expected.
  • fixed curl node behaviour to follow shape of input fibres more closely.
  • removed Maintain Length and Up Vector parameters from Curl node.
  • changed the behavior of the Node Inspector window to only stay on top of the Maya main window, not all system windows.
  • refactored Attribute Paint GL code to improve draw speed.
  • Motion node effects are now applied in World Space vs. Object Space.
  • Changing the number of guide influences on the guide sets has been re-implemented.
  • isolate selected strands correcly implemented.
  • deselecting strands re-implemented.
  • OpenGL Core Profile requirement lowered to 3.3
  • multiple Yeti nodes selected more gracefully handled in the graph editor.
  • diffuse color set by Shader node is correctly represented in the viewport.
  • running simulations in batch will only draw a render license now.

2.0.0 b02

  • groom node correctly draws Strand Length and Strand Segments when activated.
  • removed crash when using scatter brush when no strands are present.
  • improved brush resize feedback when in sculpt mode.
  • removed crash when emptry grooms were referenced within a graph.
  • removed crash when adding a convert node into a groom stream.
  • fill works with Scatter brush.
  • Guide node fixed to apply deformation to curves in the correct space.
  • Improved Guide node twist behaviour.
  • Removed noise caused by Guide attraction in Guide node.
  • Sculpt mode works in orthographic views.

2.0.0 b01

  • user attributes now tagged as keyable which causes Maya to display key frames in the timeline.
  • implemented new Groom weight caching to optimize graph evaluation.
  • input mesh Color Set’s are now accessible as variables in the graph.
  • only sets with Curves will be listed in the Add Guide Set UI.
  • added -create, -rename, -setRootNode and -getRootNode to pgYetiGraph.
  • PNG read support added for Textures.
  • added Create menu to graph editor.
  • added Minimum Strand Distance to Groom node which forces Yeti to maintain this distance between strands when using the Move and Add tools.
  • Node info popup has been redesigned to be more readable and extensible.
  • Graph Editor reports if a scene node or cache/groom file is selected.
  • added Notes to the Graph Editor, these can be created with the Create->Note option. Double click to edit and hover to preview the note.
  • new Tangent brush in the Groom which causes strands to conform to the surfaces tangent (based on texture coordinates), flood fill produces a nice starting point for most grooms.
  • Trim and Sculpt brushes ingore the obey surface normal parameter.
  • default Strand step size is now 0.1.
  • refactored Strand editing to provide much smoother results.
  • set Affect Strands default to Continuous.
  • implemented Geometry Caching for input caches and grooms, default size is 256mb but can be defined via YETI_GEOCACHE_SIZE
  • added a Univeral ID to all Yeti related nodes, these are used to identify nodes through out a pipeline. (eg. getAttr pgYetiShape.uuid)
  • multiple nodes can be cached concurrently, cache filenames can have a <NAME> tag to name the exported caches according the node name.
  • implement viewport display caching for Yeti nodes, this allows the graph results to be cached for much faster playback. The cache size can be controlled via the Display Cache Settings in the pgYetiMaya node AE.
  • all cache file names now resolve environment variables using the ${VAR} convention.
  • new Licensing scheme implemented that separates Interactive and Render licneses accordingly, render licenses can be used for batch caching.
  • new GLSL based drawing of Yeti node to improve viewport visualization.
  • key hash added for random number generator.
  • new nodes are selected once pasted into the graph.
  • the graph panel now has an Outliner embedded.
  • added a Motion node which includes an intial Wind algorithm.
  • refactored strand dynamic engine to implement a derived dynamic FTL solver.
  • added seperate root and tip stiffness.
  • added collision offset parameter to collision objects.
  • optimized cubic curve evaluation which provides a decent speed up across many nodes.
  • the ability to clump to strands has been removed, it will only accept fibres now.
  • clump results are much smoother due to cubic curve evaluation refactoring.
  • pgYetiCacheInfo now has an optional –samples argument for specifying multiple time samples to evaluate.
  • updated to latest version of SeExpr (http://www.disneyanimation.com/technology/seexpr.html)
  • Guide weighting has been refactored to provide much nicer and predictable results.
  • improved Guide attraction handling to avoid chattering at the tips.
  • Instance node refactored for stability and speed improvements.
  • Instances are now generated in predictable and consistent order.
  • new Curl node.
  • fixed issue in VRay code where NULL userattributes caused instability.
  • refactored brush evaluation engine to utilize core more effeciently.
  • refactored brush feedback for Sculpt and Trim to provide more accurate screen space editing.
  • Brush dynamics improved for both Comb and Sculpt brushes.
  • Generate Preview is OFF by default.
  • added Barb Curvature parameter to Feather shape.
  • Feathers inherit additional attributes when expanded allowing them to be used by the various rendering engines when mapped.
  • added support for Renderman Studio 19 RIS renderer.
  • added helper function to Renderman globals to set the procedural path based on YETI_HOME or RMAN_PROCEDURALS_PATH environment variables.
  • corrective grooming is less strict about strand lengths and point count matching.
  • pgYetiRemoveGuideSet correctly handles multiple connections.
  • fixed a bug where scaled instanced feathers would have the transform recursively applied.
  • more verbose output when caching including frame and range.