Change Log


  • fixed an issue where the Import node wasn’t correctly identifiying Guides vs. Grooms when a wildcard was used.
  • resolved a bug where using the Move brush in a none rest state would cause the strands to “explode”.


  • reverted a change made in 2.2.7 which caused motion blur to be broken in Arnold.


  • ensured unique per dag node names used for Redshift extension.
  • Arnold DSO now creates nodes via new AiNode() methods to support 5.0’s hierarchical name lookup.
  • common shape parameters on created nodes aren’t explicitly set, leaving them to obey Arnolds inheritance.


  • fixed a bug where only the first texture was listed when using the pgYetiCommand -listTextures command.
  • solved a symbol visibility issue for pgYetiArnold on macOS which was causing it to not be found.


  • corrected memory evaluation for display cache which provides more accurate management.
  • reduced the offset used for the attribute display geometry.
  • fixed an issue with NaN’s being introduced via the Guide node being set to Paramaterization.
  • updated to PRMan 21.6 and Renderman for Maya 21.6 (with support for Maya 2018).


  • fixed VRay callbacks.
  • fixed an evaluation recursion issue with node callbacks and Parallel evaluation mode.
  • zooming with a scroll wheel has been fixed in the Graph Editor.
  • Graph Editor has been updated and will frame all nodes with A and frame selected nodes with F.
  • fixed a bug with the new parameterized sampling in the Guide node which was causing NaN’s.


  • fixed pgYetiIsVisibleInCurrentRenderLayer to check the complete hierarchy for Render Layer inclusion.
  • add better feedback when the Graph Editor was being created without a license available.
  • removed Surface Direction Limit and Surface Direction Falloff attributes from Guide curves as they were redundnat (and unused).
  • added a Sample By parameter to the Guide node which controls where along the guide curves the shape is sampled from. The default is Length which is the current implementation, Parameterization will sample along the parameter of the guides vs. at the lengths which tends to provide better shape preservation.
  • fixed internal data flow copying to ensure strand system data is inque on import, this was causing race conditions with Yeti’s new parallel evaluation mode.


  • updated HDF5 to 1.10.1 for better c++11 compatibility.
  • updated Arnold DSO to correctly propogate motion_start/end and shutter_start/end parameters.
  • enclosed VRay callbacks in catch statement to avoid errors when the callbacks are present but Yeti hasn’t been loaded.
  • fixed pgYetiNodesExists command to check the whole scene vs just selected nodes.
  • included missing PRMan DSO on Windows.
  • refactored internal iterators which weren’t thread safe, leading to intermittent crashes.


  • updated to V-Ray 3.60
  • updated to Renderman 21.5
  • updated to MtoA and Arnold
  • updated to Redshift 2.5.29
  • updated to Clarisse 3.5 sp1
  • fixed an issue with our Redshift extension that ensures motion blur samples are correctly aligned to the center of the shutter time vs. the two samples.
  • fixed an bug where setting and increasing lengths on strands would result in incorrect values.
  • fixed a threading issue with Import node which would cause feathers to either be “missing” or cause Maya to crash.
  • forcing sub scene consolidation of Yeti nodes for VP 2.0 to avoid feathers being prematurely culled.


  • support for Maya 2018.
  • graph evaluation has been refactored to improve performance, nodes are now executed in parallel providing much better scheduling and saturation of system resources.
  • updated to MtoA 2.0.1 and Arnold 5.0.1.
  • updated to Redshift 2.5.23 plus extension API changes.
  • updated to Clarisse 3.5.
  • initial (experimental) implementation of macOS Redshift extension.
  • full interactive updates in Arnold Render View now supported.
  • Arnold procedural exports texture coordinates as a “uv” parameter vs. uparamcoord/vparamcoord conforming to Arnold 5.0 standard.
  • renamed Pref and Nref internal attributes to avoid conflict with those generally passed/access via rendering engines.
  • added “Lock Selection” to Graph Editors View menu.
  • ensured 3delight procedural has correct suffix on macOS.
  • Arnold procedural inherits motion_start/end from the currently rendering camera.
  • Clarisse module with check the build version against the current instance of Clarisse and warn the user if it’s different to ensure compatibility.
  • Cache parameters on the Yeti nodes are now attributes vs. UI fields.
  • fixed a bug introduced where the readable method on our Attribute class had a default parameter value which was causing only single sample values to be returned.
  • fixed a race condition in the Trim brush which was causing instabilities.
  • feather barb_end evaluation is clamped to barb_start to avoid NaN’s in evaluation (which was leading to a corrupt viewport).
  • fixed strand interpolation issue which was causing the Comb node to return incorrect results with really short strands.
  • 3delight procedural correctly checks the return status of RxFindFile.
  • Attribute node now has an Add Reference Position geometry attribute parameter which will bake the current P position into the Pref attribute.
  • fixed Displacement node to avoid double displacement being applied.
  • removed redundant groom attribute parameter in Grow node.
  • updated Motion node to produce more predictable results and set the default Time parameter to $time / 24 for a correct speed.
  • removed Stick to Surface on guides as this was there for historical purposes and not required.
  • removed Grow parameter Length Style as it now internally always uses the Reference Length if available.
  • added strandCount argument to pgYetiCommand to retrieve the number of strands in a groom.
  • VRay plugin will now abort when no license is available.
  • Geometry cache will now update when the timestamp of a file changes.
  • The graph editor can now be zoomed in/out using the mouse scroll wheel and/or track pad.
  • Arnold DSO will now create an error message when a license isn’t available.


  • fixed a bug where sampling fibres at a parameter of 0.0f would result in NaN’s when additional knots where present (required by some rendering engines).
  • fixed a thread safety issue with generating UUID’s that was causing instability in the Instance node.
  • updated Guide and Scraggle to take into account additional knots required by various rendering engines.


  • fixed a bug which was causing additional nan’s in feather output (causing Arnold to complain about 0 points).


  • updated VRay plugin for VRay 3.52 release.
  • fixed bug which caused instability during out of order evaluation when loading grooms.
  • strand length display now correctly obeys the isolate selected option.
  • added -licenseStatus and -batchLicenseStatus to pgYetiCommand to query whether a license is currently being used or not.
  • fixed an issue which was causing strands to increase their length in some situations when used with particular brushes.
  • zero length barb samples are now corrected for in feather expansion.
  • fixed an index overrun issue when computing feather tangent space which led to potential nan’s in feather output (causing Arnold to complain about 0 points).


  • fixed a bug introduced in 2.1.10 that was causing the Scraggle node to generate erroneous results when outputting fibres to rendering engines expecting additional knots for curve interpolation.


  • fixed a handedness issue with Redshift extension to ensure poly faces are pointing in the correct direction.
  • deforming instances now correctly use a world space up vector.


  • fixed an issue with updating up vectors causing the Curl node to change shape on rotation.
  • fixed an artifact in the Scraggle node which would cause unwanted twisting on longer hairs.


  • Yeti will now replace spaces in node names with underscores to avoid errors when saving graphs.
  • Fixed an issue with tangent computation in Attribute node.
  • Graph evaluation is now ignored completely when the Yeti node is hidden in VP2.0.
  • input rotation is now correctly applied to Instances when not deforming.
  • fixed a bug that was causing guide sets with a large number of elements to take an extremely long time to retreive set member names.
  • Width attribute is now correctly exported to the rendering engine when Feathers are used.


  • resolved issue with mapped attributes not being transferred to instances correctly.
  • feathers now correctly export inherited attributes after expansion.
  • feather barb count is now based on a rest position vs. dynamic length which avoids motion blur issues.
  • introduced Barb Density parameter which is more intuitive than Barb Spacing for feather creation. Barb Spacing remains the same and will produce the same output if Density is left at 1.0 but it’s behaviour will change in the future.
  • fixed a bug in the Instance node which was causing duplicate objects to be returned when Object Selection was set to All.
  • Yeti node correctly obeys VP2.0 visibility overrides including Display Layers.
  • Smooth brush works correctly when used on a deformed groom.


  • Comb and Sculpt now work on deformed groom positions.
  • exported attributes are now exported as Vectors for VRay as Custom Map Channels expects vectors to be accessed via VRayUserColor vs. VRayUserScalar.


  • feathers now export the surface S and T values as their default UVW coordinates for VRay.
  • fixed sizable memory leak introduced via VP2.0 SubScene override implementation.
  • fixed a bug in Blend node that would cause a crash if a second input was evaluated to NULL.
  • updated Blend node to use object indicies vs. names so referenced graphs may be blended correctly.


  • fixed out of range access in Groom context.
  • fixed a bug in Groom context where NULL was being incorrectly checked.
  • fixed a race condition introduced with threaded DSO loading in Arnold.


  • refactored attribute mapping to be tracked on a per geometry type basis.
  • object selection is now retained when rendering with VRay.


  • inherited attributes in the Grow node are now correctly allocated.
  • resolved memory leaks related to VP2.0 implementation.
  • feathers are correctly update when vertices are edited.
  • updated MtoA extension to be compatible with MtoA 1.4.0 API.
  • surface UV’s are set as default for Redshift.
  • additional UV set named featheruv exported for Redshift which can be accessed via the UV Set Override on the Place 2D Texture node.
  • fixed an issue where object id’s weren’t being maintained when read from a cache.
  • fixed feather proxy drawing in shaded view.


  • Redshift support for Windows and Linux.
  • particles are now visible in Maya 2016.
  • feather objects correctly follow selection colour.
  • Yeti will replace : in referenced node names with _ when caching.


  • fixed an issue with a cyclic evaluation of guide curves which would cause excessive computation.
  • feather texture coordinates are available as a Vector attribute named feather_uvw for VRay.
  • added an example file that shows how to access parent S and T coordinates on instances for Arnold.


2.1.0 RC

  • corrected a bug caused by objects being removed from data streams incorrectly.
  • feather draw instability in VP 2.0 fixed.
  • renamed feather display type Skeleton to Proxy.
  • parent attributes are correctly transferred to feather instances.
  • Displacement node correctly updates rest offset correct which resolves an issue which causes instances to be transformed incorrectly.
  • PRMan and 3delight support for Maya 2017.

2.1.0 b04

  • feather object correctly drawn with correct width in the viewport.
  • thick fibres correctly drawn in Orthographic Viewport cameras.
  • Yeti graph user variables are now stored as dynamic attributes to capture multiple samples when animated.
  • mirror brush re-implemented for Sculpt and Trim tools.
  • “Mirror Plane” renamed to “Mirror Direction” for better UX.
  • Yeti graphs are refreshed after flushing the texture cache to ensure any new textures are read.
  • refactored object iterator to ensure graph objects retain their correct order when using the Merge node.
  • fixed custom Map channel implementation for VRay.
  • resolved an issue which caused the graph to be evaluated even if the node was hidden resulting in really bad performance.
  • Display Output and Draw Feedback now correctly updates the Viewport.
  • added feather instancing example.

2.1.0 b03

  • fibres are drawn with their correct width in the viewport plus full support for VP2.0 anti-aliasing, SSAO and shadows.
  • distribution now includes MtoA extension for Maya 2017.
  • VRay 3.40 build for Maya 2017.

2.1.0 b02

  • Maya 2017 build.
  • middle mouse button will invert the strength of the brush while grooming.
  • using the Fill tool with the Remove brush correctly updates the display once all strands have been removed.
  • fixed a bug which would cause Maya 2016 to crash on Linux when attempting to add new objects to the graph.
  • Scatter node has been optimized for larger surfaces.

2.1.0 b01

  • drawing has been completely refactored to fully utilized Maya’s Viewport 2.0 framework.
  • selection status of Yeti object is now show via a bounding box vs. changing the colour of the object.
  • shelf buttons now try to ensure that the Yeti plugin is loaded.
  • added parameters for Vray to toggle smooth splines and segment tesselation lengths for them.
  • added Keep On Surface attribute which allows the user to toggle strand collisions with it’s parent surface.
  • Groom attributes are correctly blended with corrective grooming.
  • Attribute paint feedback in the viewport to indicate the currently active attribute.
  • Strands that will be affected by the current brush now have a subtle highlight in the viewport.
  • Curl node has a new Maintain Length parameter which defaults to off, so U and V scale will correctly scale the curls in the U and V axis.
  • Length parameter on the Curl node is a more accurate representation of an actual revolution of a curl.
  • Added Phase Random and Length Random parameters to the Curl node to provide the ability to create less uniform curls.
  • Added Step Size parameter to any sets containing Guide Curves to control the detail of resulting guide curves in the Yeti graph.
  • Proxy feathers are now shaded in the Viewport for better visualization.
  • added Barb Linearity parameter to the Yeti Feather primitive which can control how straight the actual barbs appear.
  • multiple file names can be used for caching seperated by the pipe (|) symbol, please refer to Working With Caches for more details.
  • custom map channels are supported with VRay using the Attribute node and VRayUserColor.
  • Undo/Redoing while grooming will no longer invalidate strand selections.
  • Direct X support on Windows has been added.
  • added particle rendering support for Arnold.
  • added particle rendering support for Renderman.


  • 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 DSO 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
  • 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 (
  • 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.


  • removed node caching which was introducing more issues than improvements, this fixes the blend node not working. This is a backport of a change made in Yeti 2.0 which completely removes all node caching support in light of other optimizations.
  • feather attributes can now be correctly set via the Attribute node as with previous versions.
  • pgYetiCacheInfo prints to stdout vs. stderr
  • the Comb node correctly forces combed attributes to be Vectors.
  • built with MtoA and Arnold


  • pgYetiGraph command now only draws a license if you’re setting values in the graph.
  • updated image search path support for images in sub directories.
  • updated Arnold DSO to avoid instability when parameters are missing.


  • fixed a bug in the Renderman procedural that was causing time samples to be offset incorrectly.


  • fixed a bug that was causing feather rendering to crash VRay.
  • added stepSize parameter to pgYetiConvertGuideSetToGroom to control the amount of detail in the resulting groom strands.
  • symbols on Linux and OSX are more agressively hidden.


  • built with MtoA and Arnold
  • build with VRay 3.0 final release
  • changed layout of symbols on Linux and OSX to avoid threading issues.
  • fixed a bug in Scatter that caused Yeti to crash when scattering on instanced objects.
  • default width now correctly set for VRay.
  • support for spline based (smooth) hair with VRay 3.0.


  • fixed Grow segment derivation that caused motion blur issues in some cases.
  • feathers now obey the Ignore Name Spaces option.
  • set membership callback ids correctly managed to avoid unregistering issues.
  • Linux Maya 2015 outliner crash issues resolved.
  • built against MtoA and Arnold
  • built against Maya 2014 sp4 and Maya 2015 ext 1


  • optimized object data structures to imrpove insert/delete speed which was affecting feather generation times.
  • fixed threading issue on Windows build.
  • fixed Arnold warnings about Visibility using wrong data type.


  • fixed a threading bug (our embedded HDF5 wasn’t being compiled with thread safety) that was causing arnold to crash when multiple caches were being referenced in the same scene.


  • length is automatically exported to rendering engines vs. having to explicitly map it.
  • resolved issue with Guide rest position not being stored on sub frames when no rest position is provided.
  • empty objects now ignored when computing the bounding box for a Yeti graph, this was causing out of range bounds in some circumstances.
  • fixed Save Guides Rest Position to now handle curves of varying parameterization.
  • Yeti now throws an error when input guide sets don’t contain any curves.
  • Feather orientations are now correctly exported for Arnold.
  • built against MtoA
  • built against VRay 3.05.03


  • initial support for Maya 2015, this should be considered experimental until Yeti 1.4.0 when Viewport 2.0 is fully supported.
  • updated to Arnold and MtoA
  • support for VRay 3.0 Beta 2, these are installed in the unsupported directory, you will need to copy these to the bin and plugin directories and overwrite the VRay 2.0 builds.


  • fixed a bug in the VRay engine that was generating garbage transforms for VRay motion blur when full transforms were missing causing ray acceleration issues.
  • updated derivative computation to correctly obey per face S&T values.
  • updated pgYetiCacheInfo to fully evaluate a graph for more accurate bounding box results, –density parameter added to control the evaluation density.
  • weight parameter on the Clump node is now evaluated on a per vertex basis.
  • fixed naming of Tip Parameter in Width node.
  • updated PRMan callbacks to use preLayerRenderMel and postLayerRenderMel.
  • updated build to resolve missing lzma symbols on OSX.
  • added a Load At Initialization toggle which forces Arnold to load and evaluate the graph on initialization vs. deferred using the bounding box data.


  • Resolved duplicate output for OBJ export.
  • Update curves to groom conversion to ignore Nref and Pref which potentially led to incorrect strand sampling.
  • Fixed a bug with instancing Referenced graphs.
  • updated Texture node to correctly flush images after each evaluation.
  • empty objects are correctly pruned post node evaluation which resolves bounding box computation issues if they still existed.
  • fixed a bug that would cause Yeti (thus Maya) to crash if a Non-graph was returned from the compute method.
  • Texture caching is now handled globally, this provides a substantial improvement when textures are shared across Yeti nodes.
  • Re-introduced Rest Influence and Rest Influence Power as per Yeti 1.2.


  • more instance alignment/deformation improvements via new up vector propagation.
  • Object List now ignores intermediate objects.
  • added Ignore Rest Normal Triangulation option to guide sets that forces Yeti to take both sides of an object into consideration when deriving surface transformations. This is useful for large flight feathers etc. when “attaching” them to a wings surface.
  • The feather generator now creates an orientation attribute if Arnolds curve type is set to Oriented. This will produce a shading normal that is perpendicular to the feather surface vs. Arnold’s default derivation.


  • fixed a bug in the Arnold vertex to varying parameter conversion stage, this would affect strandu and other user defined vertex attributes to be interpolated incorrectly.
  • added feather_u and feather_v output parameters to procedural feathers for easier texture mapping.
  • added a catch for strands that end up infinitely long, this was causing issues with the smooth brush (rightly so).
  • guide sets converted into fibres produce the correct result when instancing/deforming other geo to them - including feathers. This means you can instance feathers to individually controlled guide curves. The body/base geometry needs to be the second input to the Convert node for this to work (so the guides know what surface they’re deforming on).
  • corrected the number of repeated end points when generating Arnold curve data.
  • removed all references to Mental Ray in example scenes.
  • fixed float sliders in the UI that weren’t updating correctly and truncating values to two decimal places.
  • very high U & V values are now supported when using UDIM names in textures.
  • derivative code has been updated to better handle UV borders which fixes instances where strands located on the borders would flip.


  • updated Scatter node to provide generation time similar to 1.2.x.
  • negative values can be used for brush strength (as 1.2.x).
  • fixed instance alignment offset that was introduced in 1.3.4.
  • add tangent in the Attribute node won’t crash the graph evaluation.


  • fixed a bug with rename callbacks that caused shapes to disappear when referencing or importing a scene with grooms.
  • previews are not stored if the result contains mesh instances, these were generating cache files that were huge and slow (defeating the purpose).
  • fixed a bug which caused groups to disappear when node caching was enabled.
  • attribute node now correctly evaluates on a per group basis if the attribute has already been created.
  • added Display Strand Segments to Groom node Display options.
  • undo support for Mirroring.
  • added the ability to resample either all the strands in a groom or just selected strands.
  • refactored deformed Instance alignment to reduce flipping issues.
  • added Help and About items to the Yeti menu.
  • added -type argument to pgYetiGraph command which allows the user to specify a node type to limit the result too.
  • added -nodeType argument to pgYetiGRaph to query a nodes internal type.
  • pgYetiGraph can correctly query the graph values if the graph hasn’t been evaluated.
  • fixed an issue where the id attribute was being exported as id and not fur_id as in previous versions.
  • limited the number of Yeti versions printed out per instance of Arnold.
  • flood fill works with Scatter populate mode.


  • fixed feather draw issue introduced in 1.3.2
  • updated vector texture code for smoother results


  • fixed motion blurred feather length generation bug which caused prman to crash and vray to spew incorrect normal errors.
  • the feather_param is passed to VRay via the W coordinate of the UVW attribute.
  • rachi length now matches Barb End to avoid the rachi extending past the end of the feather.
  • threaded export texture.
  • export direction from grooms now stores the map based on surface derivatives and N.


  • fixed a bug in the stiffness component of the dynamics solver that caused strands to end up incorrectly oriented.
  • added node name to the graph evaluation time feedback.
  • Yeti now uses the node name vs. the cache name when outputting log information.
  • added rachii tip/base width controls to feather geometry.
  • barbs are created on the surface of the rachii vs. the spine to avoid intersections.
  • Display Output now only affects GL drawing vs. node visibility at render time.


  • feather geometry feather_part attribute is now set to 0 for rachii, 1 for barb right side and 2 for barb left side.
  • fixed bug that caused Yeti to crash when input geometry is missing.

1.3.0 RC

  • fixed a bug caused by node caching when used with the Texture node.
  • fixed a significant memory leak caused by the subdivision surface implementation.
  • improved accuracy of bounding box computation for Maya yeti node. (this was causing Arnold to complain about inaccurate bounding boxes)
  • threaded feather expansion (generation).
  • feathers now obey their world space positions.
  • added pgYetiGraph documentation in the Scripting Reference guide.
  • added Export Direction to the Groom texture utilities which exports the direction of the strands to a vector map projected in the faces normal space.
  • generated feather barb attributes were being exported to the renderer incorrectly mapped causing issues with the various render engines (mostly visible with renderman engines).

1.3.0 beta 3


  • added Create Feather to the Yeti menu.
  • added Yeti node name to error output.
  • display density will cull fibre cache previews when set lower than the value cached at.
  • cleaned up Groom AE with better attribute list create/duplicate/rename & delete workflow and UI layout.
  • added “Add Float” and “Add Vector” controls to the User Attributes palette for the Yeti AE.
  • Comb and Guide nodes are more strict about what can be used for their second input (Grooms for Comb and Guides for Guide).
  • most grooming operations are now threaded optimized interaction.
  • added Bard Azimuth Variation to Feather node to provide of plane variation to the feathers.
  • added Tearing to feathers, which creates tears along the profile where barbs clump together.

Bugs Fixed/Changes

  • import object dialog correctly lists all Feather objects for selection.
  • Arnold now correctly renders Yeti nodes referencing a cache file.
  • improved deformed instance alignment.
  • improved the quality of Scatter distribution.
  • Generated feathers correctly export strandu, feather_param and feather_part to the rendering engine for shading purposes.
  • implemented variant of FTL solver for more stable and optimized (fewer iterations needed) dynamics.

1.3.0 beta 2


  • added pgYetiForceUpdate( $pgYetiMayaNode ) command to force a Yeti node to re-evaluate it’s graph.
  • previews are now be stored with fur caches (by default, this can be turned off) - these are then used for fast display results when viewed in Maya (preview use can be turned off if needed). The previews use the current display context (density, width, length, etc.) for generation and are done so on the whole frame number and thus are considered static (no motion blurred).
  • added Yeti Subdivision and Yeti Subdivision Iterations attributes to any input mesh geometry to control this outside of any renderer specific implementation.
  • Yeti’s subdivision surfaces will match the same iteration as specific for the rendering engine (at this time only Arnold has this control).

Bugs Fixed/Changes

  • component editing undo implemented correctly
  • new feathers are created with default shape vs. a shared shape
  • feathers can be removed from the list of input objects in the pgYetiMaya node
  • Node Editor isn’t “always on top”
  • Normals correctly generated for feather primitives.
  • Attribute node can now be used to correctly modify feather attributes, please see

1.3.0 beta 1


  • added Bend Start and Bend End to the bend node, this change will slightly affect the look of the bend results.
  • added Base and Tip parameter to Width node to control where the width fall off starts/stops.
  • added Constant attribute type to the Attribute node.
  • added pgYetiCacheInfo binary used to query .fur files for information, please use –help for options.
  • when in component mode the Shift key can be held to alter the selected strands length by click-dragging.
  • added a Randomize brush for attribute painting.
  • added dynamic node result caching to optimize evaluation of graphs that contain branching and merging. This can be toggled on and off via the Node Caching parameter in the Others palette of the Yeti AE.
  • I/O AE palette now has separate Input and Output sections.
  • added pgYetiRemoveAllConnections scripting command to remove any and all connections to the specified Yeti node.
  • added more interactive sliders to float parameters in the Node Inspector along with soft ranges and a means of hiding the sliders.
  • heavily threaded all bounding box calculations for improved redraw speeds.
  • added the ability to convert a Yeti node result into Maya objects via the Convert to Maya Objects menu item or pgYetiCommand -generateMayaObjects command.
  • new pgYetiGraph command that can be used to query/set nodes and their parameters in the Yeti graphs.
  • added Twist brush for grooming.
  • added Clump brush for grooming.
  • added a Scatter brush to populate the grooms by scattering strands while painting.
  • added Override Cache With Inputs option for the Yeti node, this turns off cache overriding (corrective grooming) by default. This is useful to avoid situations where the graph steals a license when an input has been left on by mistake.
  • Subdivision Surface evaluation. If an input mesh is tagged by a renderer as a subdivision surface Yeti will evaluate the mesh in a subdivided state, there is a new toggle in the Yeti node display parameters to show the subdivided result in the Viewport or just as Render time (default).
  • improved dynamics solver with more accurate friction handling.
  • Yeti Arnold node now exports the correct bounding box to procedural call which is now expanded when needed vs. on init.

Bugs Fixed/Changes

  • ignore namespaces is ON by default.
  • removed redundant bend multiplier.
  • cleaned up Maya field sampling code, any fields affecting grooms will likely need to be adjusted.
  • fixed a bug in the pgYetiGroomNode which caused fatal crashes when using undo/redo.
  • fixed a bug in Scraggle that caused the vector to flip when the segment was pointing in the opposite direction of the surface normal.
  • Node Inspector correctly reflects parameter errors.
  • isLicenseAvailable correctly reports license availability.
  • input guides are stored with more detail to capture finer shapes.
  • pgYetiCommand will return MS::kFailure if a cache write fails.
  • OBJ export is now buffered to provide better performance when exporting large results to a network location.
  • Yeti won’t remove the graph but default if switching to cache mode with an invalid cache file specified.
  • improved strand tangent calculation which provides more accurate comb and guide results when needing to match input strands.
  • Guide Set list now ignores vertex, edge, face and edit points sets.
  • new strands are selected by default if Isolate Strands is on with strands already selected.



Bugs Fixed/Changes

  • fixed an issue where new strands added when the surface was deformed would “pop” into an incorrect space on update.



  • added “removeDuplicate” option to pgYetiCommand which takes a distance parameter, this will remove any duplicate strands within that distance threshold.

Bugs Fixed/Changes

  • improved strand frame alignment for deforming derivatives.
  • fixed a bug that caused displaced elements to incorrectly deform.



  • added two new parameters to the Grow node. Segment Creation Style and Segment Count. This allows the user to explicitly dictate how many segments are created per fibre regardless of it’s length OR define a segment length as previously (default). This makes animated growth more stable when motion blur is involved.
  • added Force Uncorrected Length parameter to the Convert node to set the length attribute on the resulting fibres to the original Groom vs. any interpolated Groom lengths. This can also be referenced in the Grow node as length_uncorrected.
  • length attribute can now be referenced in the Scatter node to control the density.

Bugs Fixed/Changes

  • fixed bug which caused Instance node to segfault if the node directly connected to the second input was an input and missing geometry.
  • fixed a bug in pgYetiPrmanGenPTC due to core updates not being propagated.
  • updated OBJ export to only export the first selected object and use the file name passed vs. adding in the shape name.
  • fixed a bug in the Instance node which prevented All instancing to work.
  • instanced objects now inherit the name of the instance node used to create them to avoid name clashing when recursion is used.
  • Width node correctly recreates the width attribute vs. inheriting already existing attributes to avoid cases where instances are sharing a width attribute resulting in uniform width values.
  • reverted Arnold procedural transform handling.



  • added texture coordinates and vertex normals to Wavefront OBJ export. Two new boolean options to control whether texture coordinates and normals should be exported have been added.

Bugs Fixed/Changes

  • reverted TBB scheduler changes.
  • fixed bug where Arnold procedural was assigning/inheriting the incorrect shading group ( or NULL ).
  • input order of Maya objects is correctly maintained when different object names used ( ie. id based, not hash based ).
  • adding missing Mirror tool button update in AEpgYetiGroomTemplate.mel.
  • updated pgYetiCreate and pgYetiCreateGroomOnMesh to avoid name clashing issues with similarly named nodes in the scene.
  • node names are now more visible than node types in the graph.
  • only object sets are listed in the Guide Set input dialog.
  • fixed rendering DSO threading/TBB assertion issues.



  • added custom colors for nodes in the graph editor, this includes a Helpers menu with the option of setting colors for selected nodes and reseting selected nodes to their default color.

Bugs Fixed

  • updated how shading groups were being assigned/handled for MtoA and Arnold which resolved an issue with AOVs not working.
  • correctly set Groom bounding box ( to input geometry ) if no strands were present.
  • reverted change which caused the graph geometry to not retain it’s canvas position.



  • added checks for missing parameters in Arnold DSO.
  • updated to MtoA 0.24.0 and Arnold

Bugs Fixed

  • fixed a bug that resulting in a graph being generated with no context when rendering via the command line.
  • fixed a bug where corrective grooms with a weight of 0 would cause an error to be incorrectly reported.
  • updated Group to use world space P vs. local P when a Texture Reference object was attached.
  • VRay DSO now correctly exports instance attributes.
  • Arnold DSO now allows referencing the same cache multiple times.
  • re-introduced Arnold DSO transforms.
  • updated dynamics engine to correctly handle varying time steps more accurately.
  • updated call to checkAssetPath for VRay DSO to avoid issues with VRay 3.0.
  • graph connections will now fail if there is potential for a loopback condition.
  • the Groom to Curve conversion process produces cleaner results.



  • support for Maya 2014
  • built w/ MtoA 0.23.1 and Arnold 4.0.14
  • built w/ VRay 2.30 from nightlies for Maya 2013, 2013.5 and 2014
  • built w/ 3Delight 10.0.139
  • added Parting, artists can create attributes prefixed with the part key ie. part_region01 which is used to define parting regions. A new Part Randomness parameter has been also added to the Groom node and it’s possible to paint part_randomness to control this on a per strand basis.
  • added example file.
  • threaded transform derivation in core Mesh data structure.
  • threaded Strand System geometry position derivation.
  • added support for VRay’s VRAY_ASSETS_PATH when looking for .fur files to improve DR support.
  • added hotkey M to increase brush strength while grooming.
  • Non-deformed instances now use ginstance nodes for more efficient rendering with Arnold and shared GeomStaticMesh instances in VRay.
  • VRay dso relies on renderer to generate time samples which improves single VRScene support.

Bugs Fixed

  • fixed double transform introduced in Arnold DSO.
  • fixed hotkey event handler issues where hotkeys wouldn’t work when in grooming context.
  • fixed issues where Alt and Shift in the graph editor were causing the GE and Inspector to lose focus.
  • removed small memory leaks in VRay DSO during refactor.
  • scatter generates same results when the seed is the same.
  • changing the seed produces correctly varying results ( vs. needing very high numbers ). ( Be aware this will change graph results )
  • objects use more predictable object id’s, these are based on the order that objects are attached to the graph and stored in the objectId attribute.
  • instance node uses objectId for expressions.
  • fixed bug that causes similar reference nodes to not co-exist in the same merge.
  • fixed issue with surface derivative calculation which caused strands to flip at times.
  • fixed issue that caused interpolated time samples to be de-allocated too early while rendering with VRay.



  • removed explicit .dso/.dll from Rib output for PRMan/3delight to avoid cross platform rendering issues.
  • added imageSearchPath parameter to rendering DSO’s, this is used to set the search path for textures. Originally baked into the graph/cache itself this means it can be updated/changed without re-caching.
  • texture cache is owned by the Maya instance of Yeti vs. the graph, this means that caches using textures should only read the texture once and be re-used across frames. The cache will still check time stamps for textures that are dirty.
  • optimizations to internal mesh structures.

Bugs Fixed

  • swapped colours for Display as Heat Map.



  • added Obey Face Set to the Distribution tab of Scatter node to force relaxed points to stay within the bounds a defined face set vs. diffusing the “border”.
  • added internal cache file format versioning.
  • internal instance geometry types.
  • added Generate As to Instance nodes to tell Yeti to try and use the renderers internal instancing for more optimized instance rendering.
  • support for PRMan and 3delight Object Instancing, including per instance attribute propagation ( for Uniform attributes ) via ObjectInstanceV in PRMan ( currently not supported in 3delight - please correct us if it is and in what version? ). Please refer to the PRMan 17.0 Application Note on object instancing to fully understand shading changes needed if using per instance attributes.
  • Yeti now clamps painted attributes that are used to control sims ( except for mass ) to avoid overdriving the simulation results ( ie. sim_stiffness painted at 10 causes the strands to collapse on themselves ).

Bugs Fixed

  • fixed long standing bug where grooms with no strands would cause a crash when exporting/rendering.
  • fixed issue where groom strands won’t update when input geometry moved when not connected to a Yeti node.
  • fixed issue where grooms weren’t bring projected onto the input geometry correctly ( introduced in 1.2.10 )
  • fixed issue when Conform New Strands was using with Add & Fill.
  • fixed sculpt/comb issue that caused strands to pop to the surface when being pulled “off” the surface.
  • strands won’t smooth below the input surface.



  • added Scale brush to Groom.
  • updated Licensing documentation with TIMEOUT options parameter.
  • added -licenseAvailable and -numberOfLicensesAvailable to pgYetiCommand, see scripting documentation for more information.

Bugs Fixed

  • fixed a bug introduced in 1.2.9 when instancing to particles/points.
  • fixed a bug in scatter introduced in 1.2.9 which caused relax steps to create stray points.
  • fixed issues reading textures using UDIM names.
  • reduced memory consumption introduced in 1.2.9 Scatter node.
  • fixed a bug that caused fill to not work when Initial Strands was selected as Affects mode.
  • fixed bug in Arnold translator that assumed single faced geo with a single attribute was of FACE detail type vs. CONSTANT.



  • built against MtoA 0.22.1
  • added memory usage reporting in the node info, this represents the amount of memory allocated by graph on execution completion.
  • Scatter, Grow refactored and heavily optimized/threaded
  • Relax threaded for massive speed improvements
  • Internal Closest Point code re-engineered to be a few magnitudes quicker
  • added Point Selection to Instance node allowing control over which points in an element are instanced too.
  • added Element Point Index attributes to Instance node which can be used to define which point in an element is used for an instance.
  • added Local Variables, nodes can now define/expose node specific variables for expressions. eg. Instance node has $instanceCount, $instanceNum, $vertexNum and $vertexCount
  • added Instance Element Index control example.

Bugs Fixed

  • improved Yeti nodes selection in Maya viewport, the selection is much more accurate and ghost selection doesn’t occur.
  • fixed constant attribute type outputs in Arnold for use with aiUserFloat/aiUserVector etc.
  • fixed arnold light linking.
  • fixed pgYetiVRayMaya missing symbol issue on Linux.
  • fixed issue which could cause intermittent id changes on fibres which would throw their order off.
  • strandu attribute correctly matches u value of curve ( it was slightly truncated ).
  • Int and Color variables for expressions are now supported ( so $numInstances could be used, etc. ).



  • If mapping on in Attribute node Yeti now assume you want to map the newly created attribute. If not mapping name is given Yeti will assume it’s the name of the attribute to map.

Bugs Fixed

  • VRay rendering correctly obeys layer membership of parent transform.
  • fixed numerical rounding error in Scraggle that would cause the scraggle effect to be reduced as fibre count increased.
  • improved strand re-alignment stability which resolves an issue with overly blurred results in edge cases.



  • added Scraggle Frequency and Scraggle Offset to Scraggle node to control the look/motion of the Scraggle effect.
  • removed redundant Scraggle Scale from Scraggle node.
  • renamed Bake Root Positions and Save Rest Position to Save Strand Shape and Save Rest Pose for clarity.
  • added support for 3delights dirmap and path searching, you can use the “resource” category to set search paths for .fur files.

Bugs Fixed

  • orientation attribute correctly passed to Arnold.
  • Save Strand Shape checks for groom selection prior to dialog confirmation.
  • fixed a long standing orientation bug that was due to bad derivative calculations which cause misaligned strands when animated. If required ( likely not ) the old method can be forced by adding a boolean attribute to the mesh shape called yetiOldDeriv and toggle it on ( you will need to refresh the viewport ).



  • added Gravity Direction attribute to Dynamics World Properties on Grooms.
  • updated how Yeti handles the simulation start frame, it behaves like Maya now where rewinding to the start frame will reset the simulation ( not one before ).
  • added the ability to turn simulation on/off on a per strand basis using the sim_simulate attribute. If found any strands with a value below 0.5 will be static.
  • removed legacy scraggle.
  • texture will warn if trying to set “width” as a new attribute name as it’s reserved.
  • Grooms to Guides can be applied to multiple grooms at once and/or with the Grooms transform selected for convenience.

Bugs Fixed

  • fixed conversion from guide set to groom node, please note the parameters for the command has been updated to pgYetiConvertGuideSetToGroom( string $guide_set, string $mesh_object ) - please see the scripting documentation for more information.
  • fixed issues with strand mirroring.
  • fixed the behavior of strand hovering, if in isolate strands mode “hidden” strands won’t be drawn.
  • fixed bug in Instance node that caused deformed instances to flip if they extended past fibres origin plane.
  • fixed issues with scraggle node when applied to a converted guide strand.
  • fixed Groom to Nurbs Curve conversion.
  • removed double output to Yeti console when in batch mode.
  • fixed offset issue with deforming instances.



  • added console feedback when caching
  • updated logging to provide consistent output to Maya console and shell

Bugs Fixed

  • fixed renderman procedural parse error with negative frame offsets for samples
  • fixed clump issue caused by zero length input fibres
  • fixed linkage to resolve symbol clashes when rendering with MtoA



  • initial implementation of deformable instances.

Bugs Fixed

  • a fix to the 3delight output where in some instances the flush command is being passed a node other than a Yeti node.



Bugs Fixed

  • fixed u/v coordinate issues when referencing textures via <UDIM> tag.



  • added Length Handling parameter to Clumping, if set to Conform If Longer then the fibres will scale to never be longer than the input clumping fibres.
  • added a Maintain Length parameter to Clumping, the default is on which matches the historical look.
  • added -sampleTimes argument to pgYetiCommand -writeCache which can be used to provide explicit sample offsets for caching, see scripting reference more more details.
  • added -fileName argument to pgYetiRenderCommand -preRenderCache which can be used to provide an eplicit filename vs. using Yeti’s
  • added more documentation for pgYetiRenderCommand in Scripting Reference.
  • added -returnLicense argument to pgYetiCommand which forces Yeti to return the license it currently has checked out, be aware that if someone tries to check out a license while it’s returned you may be without a license next time you need to work.
  • optimized Instance node by removing all thread locking.
  • Texture Cache system is fully thread safe.
  • added initial support for <UDIM> tags in texture names.
  • added Display As Heat Map to Groom node to display paint values as a heat map.
  • instances correctly inherit PRMan subdivision tags and will render as Subdivision surfaces in PRMan.
  • added Minimum Width parameter to Width node, default is 0.00001f.
  • added Collision Friction to input collision mesh shapes in a Yeti Attributes section.

Bugs Fixed

  • fixed bug that caused Scatter node to ignore user attributes
  • removed rand reference from documentation
  • updated dynamics engine to make sure over sampled constraints were applied corrcetly
  • fixed prman chunked rib output which caused the first frame of every chuck to sample at -0.125
  • Scatter Multiplier now evaluated on a per fibre basis
  • fixed issue where the graph was being re-evaluated too often when the Graph Editor was opened/re-opened



  • updated documentation to include correct PATH settings for Windows
  • all cache writing and groom export commands resolve environment variables
  • added inherit attributes parameter to the Instance node which is a list of attributes to inherit from the source points/elements

Bugs Fixed

  • VRay instances inherit incoming user attributes
  • Group node would abort early due to thread unsafe kdTree bug which has been fixed
  • clumping correctly references Pref vs P which was affecting clumping around guide curves
  • bake root positions can be used on the Groom transform as well as the Groom shape

1.2 Final


  • VRay output prints number of fibres and meshes created when verbosity is > 1
  • Arnold output prints number of fibres and meshes created when verbosity is > 1
  • added Varying attribute support in Attribute node
  • added in app Help in both the Graph Editor window ( in the Help menu ) and on a per node basis. By default this will take the user to the on-line documentation unless YETI_DOCS is set to the docs directory of the local Yeti installation.
  • built against MtoA 0.21.0 and Arnold 4.0.11

Bugs Fixed

  • VRay DSO correctly defines UVW when outputing converted strands
  • fixed an issue with normal indicies not being defined correctly in the Arnold DSO
  • properly catch errors when setting sets for render layers
  • fixed a bug that caused surface propogation to be evaluated too many times
  • fixed a bug that caused a crash when a strands relationship to a surface couldn’t be determined

1.2 Beta 7


  • moved Relax Steps into a new Distribution tab for Scatter node
  • added Corrective Groom Handling parameter in Yeti Node->Corrective Grooming to control whether corrective grooming is applied or not

Bugs Fixed

  • fixed typo in Grow node which caused fur_id attribute to emit as fur_Id
  • Yeti won’t crash Maya if pgYetiCommand -writeCache is used when a non-Yeti node is selected
  • cache and groom file names now correctly expand environment variables
  • set length correctly interpolates very small lengths correctly
  • fixed crash bug when switching between two scenes and maya stays in the Yeti groom context
  • Yeti nodes correctly obey render layers in VRay and Mental Ray
  • fixed weighting for Guides when there are fewer guides than requested
  • fixed batch mode renderer confirmation
  • Yeti checks for invalid reference objects more aggressively
  • now using full path name for temporary output cache hash value
  • RPATH is correctly set to $ORIGIN on Linux
  • fixed issue where instance node would cause a crash if there wasn’t an object present in the second input

1.2 Beta 6


  • Yeti will check to make sure directories exist before attempting to write a cache and error out if not
  • removed Display Grooms and Display Guides from Yeti node

Bugs Fixed

  • refactored and improved mesh collision and closest point to improve accuracy
  • fixed issue which caused cache files to grow when GRM’s referenced
  • removed overly verbose feedback from ImageIO
  • guide curve rest position correctly integrated into 1.2.0

1.2 Beta 5


  • added Sample mode to Groom painting to be able to sample the attribute value
  • all node string parameters now resolve environment variables if defined with ${VAR} syntax
  • texture system resolves environment variables if defined with ${VAR} syntax in input names
  • added search path support to Image IO library, PG_IMAGE_PATH environment variable can be used to define a global search path. Multiple paths can be defined by using : on Unix ( and OSX ) and ; on Windows
  • added Image Search Path attribute to pgYetiMaya node which can be used to set the paths used to search for images ( textures ) when evaluating the graph, search paths defined by PG_IMAGE_PATH environment variable will take precedence over these
  • added -listTextures argument to pgYetiCommand which will list all textures used in a graph ( though it doesn’t check if they exist and/or the node actually fires )
  • inlined many strand system functions for compile time optimizations
  • added Maya 2013.5 build
  • upgraded to MtoA 0.20.0 and Arnold 4.10.2 ( Darwin users be aware that you need to export ass + kick vs. in maya previews at this time ), MTOA_EXTENSIONS should be used instead of MTOA_EXTENSIONS_PATH as there is a bug in MtoA 0.20.0 paths

Bugs Fixed

  • scatter automatically flips textures when used to control the density so they more appropriatly match mayas u/vs
  • arnold render correctly obeys Yeti world transforms
  • fixed bug causing a crash when a Yeti context hasn’t been removed correctly
  • fixed a significant bug where threads parameter wasn’t initialized nor making it into the vrscene file causing intermitent behavoir
  • refactored graph updates to help avoid threading race issues
  • fixed issue caused by mismatched sample counts between Yeti world matrices and local matrices for Arnold
  • fixed issue which caused strands to inadvertently change direction when increasing their length
  • fixed issue where sculpt mode direction was inverted when zoomed in close to a surface
  • YETI_INTERACTIVE_LICENSE variable works again on Windows
  • instance doesn’t crash when instancing to mesh points now
  • ImageIO EXR reader doesn’t crash with cropped images ( data window different than display window )
  • fixed multiple pgYetiInit sourcing in Yeti initialization which was causing scriptJobs and updateAE callbacks to live as zombie procs

1.2 Beta 4


Bugs Fixed

  • made sure missing icons were included with distribution

1.2 Beta 3


Bugs Fixed

  • the look was still different between 1.1.8 and 1.2.0 which has now been correctly fixed

1.2 Beta 2


  • initial Mental Ray implementation ( only fur at the moment )
  • reverted weighting scheme back to 1.1.8 style
  • optimized mesh GL drawing
  • optimized the use of face sets in Scatter node
  • added support for user attributes in VRay
  • temporary files and cache files that already exist are overwritten vs. appended by default
  • added affects strand parameter to groom which controls whether the affect from the stroke is applied to only the strands under the brush when combing starts ( default ) or through the whole stroke
  • arnold output now produces unique names in the Ass scene for duplicate Yeti nodes
  • textures can now be added before a scatter node on Imported geometry, if the Attribute in the Texture node matches the Groom/Texture Attribute in the scatter node the texture will control the density of the scatter

Bugs Fixed

  • fixed a bug that caused Yeti to crash in some instances when input geometry wasn’t found
  • graph IO nodes don’t try and autoconnect
  • tbb .so.2 libraries included in distribution
  • fixed vray export bug which was causing a recusion on graph evaluation, this little nasty hidden bug should hopefully stabilize threaded viewport issues
  • out of range samples handled within VRay correctly
  • fixed temp file output random value generation
  • fixed bug which caused extranious samples when fur cache generated from maya batch/py/command line
  • fixed Display Groom refresh in pgYetiMaya node

1.2 Beta 1


  • optimized KD tree search
  • updated weighting scheme for grooms to smooth out interpolation
  • Pixar dependencies are now PRMan 17 and RMS 4.0 ( though it’s likely backwards compatible )

Bugs Fixed

  • fixed crash in Arnold DSO when matrix parameter is missing.
  • fixed a bug which was causing corrective grooms to be applied multiple times during sub frame output.
  • resolved a fairly major memory leak introduced in the thread based DataBlocks
  • reimplemented drawing to avoid thread update issues
  • fixed bug that caused Comb not to work correctly on particles

1.2 Alpha 3


  • added mirror strands tool to Groom, if no strands selected all will be mirrored otherwise just selected strands will be mirrored
  • added Tiff support ( 8 and 32 bit ) for texture reading
  • renamed Save Rest Position to Bake Root Positions
  • moved Save Rest Position and Bake Root Positions to Yeti menu from Groom AE
  • added new Save Rest Position which bakes the current shape of the Groom into the base shape of the Groom ( ie. bake dynamic positions )
  • added support for Arnolds subdivision surface settings for instanced meshes ( inherited from mesh input )
  • nodes will automatically connect themselves to the first selected node when created
  • nodes will automatically be selected when created
  • added face index option to geometry attributes in Attribute node
  • improved brush dynamics for Sculpt mode
  • improved brush softness dynamics for all groom modes
  • input mesh will inherit 3delight geometric attribute PolyAsSubd on the Shape node ( not Attribute nodes )
  • added -updateViewport command line for -writeCache which can be used to control whether or not the viewport redraws when caching.
  • added Update Viewport option to I/O palette for caching

Bugs Fixed

  • texture node will complain if an unsupported image format vs. crashing
  • locked threaded evaluation to prevent redrawing issues
  • fixed bug causing Yeti to crash when turning IO mode to none after sourcing a cache file
  • Yeti node global transforms correctly applied to generated objects in Arnold DSO
  • bounding box is correctly evaluated when generating ribs/ass/vrscene files from the command line

1.2 Alpha 2


  • added detail type to attribute node
  • added displacement node
  • integrated OpenEXR
  • added texturing and texture caching framework
  • added texture node
  • added tabbed ui to node inspector
  • added evaluation mode to nodes to control evaluation for Always, display and render
  • added twist and twist variation to instance node
  • renderman dso outputs fibres in chunks to optimize memory usage with the size of chunks controllable, defaults to 2048 fibres
  • corrective grooming now supports blending of user attributes with the option to toggle between all, position and user attributes
  • added ability to paint corrective weights by adding a corrective_weight float attribute to a groom which modulates the overall weight
  • added number of samples control to pgYeti AE template
  • updated cache framework for automatic cache updates with texture changes
  • added flush texture cache command and Yeti menu item to forcefully flush the cache of the current selected Yeti node(s)
  • added reference node which allows the user to select a cache file to reference into the current graph
  • added geometric attribute creation on attribute node
  • added root p and ability to map attributes without needed to create an attribute
  • added tangent to the geometric attributes in Attribute node
  • added -convertToCurves command to convert Grooms to Nurbs Curves
  • added Convert To Curves menu item
  • added curve basis control to Attribute node
  • renamed pgYetiArnoldMaya to pgYetiArnoldMtoa to avoid confusion

Bugs Fixed

  • fixed issue causing the move tool to improperly update new abosolute position
  • smoothed node icon drawing in node view
  • removed file dialog filter
  • Exporting Groom now appends .grm when no extension is provided
  • changed Cache file dialog to type 0 to allow non existant cache file names to be typed in

1.2 Alpha 1


  • added thread safe random number generator
  • new custom timer
  • new thread based node evaluation architecture
  • threaded attribute, bend, blend, clumping, comb, direction, group, grow, guide, instance, scatter, scraggle, shader, transform, width
  • threaded simulation
  • instanced objects now inherit id from source point
  • threaded relax steps and refactored algorithm to converge on optimal result with less steps
  • added view menu to graph editor
  • added Display As Heat Map to color the evaluated nodes based on their execution time

Bugs Fixed

  • ignore works correctly when a node is expecting more than one input
  • direction correctly normalized when expression evaluated




  • added license issue feedback to Maya script editor

Bugs Fixed

  • new face sets are correctly referenced by Scatter when first created



  • updated to MtoA 0.18.0

Bugs Fixed

  • relax steps works correctly when face sets are used in scatter
  • fixed bug with new/duplicated attributes not forcing the graph to re-evaluate correctly



Bugs Fixed

  • made face set translation more robust to avoid empty and non-face elements
  • face sets obey ignore namespaces
  • updated license checking when a groom is attached and I/O mode is not none
  • fixed reference position/normal lookup for guides



  • added Save Guides Rest Position and Remove Guides Rest Position to Yeti menu, this should be used to bake the neutral rest location into any input guide sets to help Yeti maintain the correct groom in situations where guides may not maintain their spatial relation to the rest surface ( ie. when using Maya dynamics on curves ).
  • added support for face sets, if created in Maya Yeti will store them with the object to be referenced by the Face Set parameter in the scatter node - this will limit the scatter to the sets in the face.

Bugs Fixed



  • ( Ticket #424 ) added support to evaluate width on a per vertex basis in the Width node
  • ( Ticket #424 ) added parent_id to instances
  • relaxed Grooms license usage, they can now live in the scene without take an interactive license - these will only be checked out if actually grooming or simulating

Bugs Fixed

  • ( Ticket #403 ) vertex selection/dispay in component mode is limited to the selected vertices when isolate selected is on for a Groom
  • ( Ticket #435 ) grooms are now accesible in the graph when converted from guides
  • fixed corrective grooming instability



  • added groom attribute support for restInfluence and restInfluencePower ( sim_restInfluence and sim_restInfluencePower )
  • added 3delight 10.0.50 support for Maya 2013 build
  • built against MtoA 0.17.0 and Arnold

Bugs Fixed

  • fixed issue that was causing nodes in the graph not to save their position correctly in Maya 2013
  • ( Ticket #402 ) custom Arnold attributes are now exported with the correct detail type
  • fixed twist issues introduced in 1.1.2 that changed groom looks drasically



  • built against MtoA 0.16.1 and Arnold
  • added rest influence and rest influence power to control the dynamic strands want to maintain it’s rest shape

Bugs Fixed

  • fixed issue with renderman output that was causing multiple P tokens in the rib
  • fixed twist effect in clump to match guides twist



  • updated to MtoA 0.16.0 and built against Arnold
  • set the default number of cache samples to 3, if you need more please explicitly call pgYetiCommand -writeCache
  • corrective grooming is now based on delta’s so multiple corrective grooms may be correctly layered with weights normalized where overlapping

Bugs Fixed

  • fixed a bug in scraggle causing alignment issues
  • fixed clumping re-scaling
  • fixed random number issues caused by dropped/deleted fibres
  • fixed groom bug that caused a crash when re-selecting a groom in the combing context
  • brush strength clamped to 1.0 in paint mode



  • Arnold integration now outputs mapped attributes to custom parameters on nodes similar to Renderman integration

Bugs Fixed

  • fixed issue with guides not sampling at a high enough rate when tiny
  • visibility parameters ( opacity, self shadow and visible ) now correctly inherited for mesh objects in Arnold renders
  • fixed intropolation issue when strand segments became tiny
  • fixed bug that caused Arnold to crash when curve mode was set to Ribbon and no width attribute had been defined in the graph



Bugs Fixed




  • downstream nodes now inherit evaluateGuidesAtShutterOpen from Grow.
  • added Legacy Scraggle parameter to the scraggle node to switch between the new ( better ) scraggle and the pre 1.0.14 scraggle.
  • reimplementation of rotational constraints for strand dynamics which is much more predictable and solves result variation between playback and cache

Bugs Fixed

  • fixed cache name output for Arnold to avoid the wrong name ending up in the ASS file/scene.
  • improved VRay memory usage by sharing Yeti’s memory allocation with VRay
  • fixed vray instacne transform order
  • modified rlm symbol visibility to avoid name clashes with like minded ISV’s



  • ( Ticket #293 ) added Space parameter for clump evaluation with Local and World space options, this changes how guides are applied to clumping
  • added Evaluated Input Guides At Shutter Open to the grow node, this forces the input guide curves to be evaluated at the same time across motion samples to avoid degenerate samples being generated when input guides change their relationship to the input surface.
  • updated documentation for Yeti Maya Node, Node Reference, Installation, License Installation and added Scripting Reference.

Bugs Fixed

  • ( Ticket #289 ) fixed offset/rotation reference in instancer
  • ( Ticket #268 ) Arnold procedural correctly obeys the opaque, self shadows and visibility parameters set in MtoA



Bugs Fixed

  • ( Ticket #258 ) fixed precision issue in grow node
  • ( Ticket #258 ) fixed guide offset application in guide node
  • ( Ticket #276 ) fixed instance rendering issues introduce in 1.0.14
  • ( Ticket #253 update ) added getStaticLength to strand system to return a consistent length for the duration of shutter open when generating motion blur



  • ( Ticket #250 ) instances now inherit a parent_s and parent_t which are the u/v coordinate
  • added particle count to node info

Bugs Fixed

  • ( Ticket #266 ) fixed crash when input mesh was missing uv coordinates in some instances
  • fixed issue with simulation causing nan values in cache files



  • VRay correctly inherits render attributes from Yeti node

Bugs Fixed

  • Yeti built against 0.15 MtoA release binaries vs from source for compatibility reasons
  • ( Ticket #253 ) Fixed VRay batch rendering issues
  • ( Ticket #260 ) Re-implemented scraggle node, you will likely need to adjust your graphs
  • re-engineered pose space deformation for fur to simplify graph calculations



  • initial support for Solid Angle’s Arnold Renderer, requires MTOA 0.15 and Arnold 4.0.20

Bugs Fixed

  • ( Ticket #236 ) fixed issue with radius of influence not being correctly set on import
  • fixed dynamic caching inconsitencies
  • optimized simulation while improving stability
  • fixed issue with “width” ending up with nan values in some situations



  • added second input to convert to supply reference geometry for strand conversion

Bugs Fixed

  • fixed vray sub frame sample issue, introduced with centred motion blur for frame duration less than 0.35
  • added root attribute to fibres created via convert node



  • added a new logging system for console output - messages can also be saved to a log file specific with PEREGRINE_LOG_FILE environment variable
  • middle mouse button will invert the brush effect when using lift, and increase/decrease in paint mode
  • added “root” attribute that is created when fur is grown, this is the base of the fibre and is mapped to surf_P for renderman renderers
  • locked all platforms to hdf5 1.8.7

Bugs Fixed

  • ( Ticket #224 ) fixed issues with save rest position
  • fixed issue where selection resets when undo/redo used
  • ( Ticket #228 ) fixed issue with comb node collapsing hairs that existed outside region of influence
  • rebuilt all hdf5 libraries to be strictly thread safe



  • ( Ticket #197 ) added u/v range fields to support exporting/importing attribute maps for u/v ranges beyond 0.0-1.0
  • added “Fibres to Strands” in the Convert node, this lets you convert input fibres into strands that can then be used for Comb and Guide. An example would be importing guide curves, converting them to fibres and doing a scraggle on them, then convert them back to use with Comb.
  • added YETI_INTERACTIVE_LICENSE environment variable support, if set to 0 it will force Yeti to avoid checking out an interactive license, if it doesn’t exist or set to 1 it will allow it
  • optimized groom weighing speed

Bugs Fixed

  • fixed comb node that was causing attribute combing to not work in some instances
  • ( Ticket #203 ) re-implemented bend to mimic direction node, new attributes to control the direction of the bend ( similar to direction node ) - BE AWARE YOUR GRAPHS MAY NEED UPDATING
  • ( Ticket #203 ) fixed caching of field dynamics with dT being applied twice
  • fixed issue which caused motion blur to fail when rendering with Groom input mode and VRay
  • ( Ticket #197 ) fixed texture import issues
  • fixed issue that would cause all connections to geometry to be lost when removing collision geometry
  • ( Ticket #219 ) guide sets couldn’t be added via the Yeti outliner ( a change in 1.0.8 broke this )



  • ( Ticket #185 ) Yeti’s file inputs now obey any directory mappings defined with dirmap
  • added “Import Groom From Selected Yeti Node” to the Yeti menu
  • moved export groom from Yeti Graph window to Yeti Menu, renamed it to “Export Groom From Selected Yeti Node”
  • ( Ticket #130 ) added pgYetiConvertGuideSetToGroom to convert nurbs guide curves into a groom, use is pgYetiConvertGuideSetToGroom( groom, yeti_node, guide set on yeti node )
  • ( Ticket #113 ) added Direction node to control inclination and roll witht he options of providing an up vector to specify the vector flow of the surface
  • ( Ticket #199 ) added Weight attribute to Guide node which can be sampled on a per vertex basis
  • added viewport feedback to show what attribute is currently selected for painting

Bugs Fixed

  • ( Ticket #188 ) fix clump node causing clump searches to be off by a factor of 2
  • fixed issue where “hidden” groom attributes were listed in a Groom’s attribute list



  • added percent parameter to scraggle to control how many of the actual fibres are affected ( 0 none, 1 all )
  • added root and tip scraggle controls to modulate the effect of scraggle over the length of the fibre
  • added support for animated/changing lengths on input guide curves
  • all platforms built with official VRay for Maya release ( Feb 3rd 2.20 )

Bugs Fixed

  • radius of influence correctly set when grooms are imported
  • ( Ticket #37 ) fixed issue with object selection when two objects have the same name in the scene ( grouped under different parents )
  • ( Ticket #182 ) grooming with Display Output is now as fast as 1.0.5
  • ( Ticket #158 ) in some instances Maya wasn’t evaluating Yeti nodes fully when in prompt/batch mode so we have to force an initial evaluation



  • initial support for Chaos Group’s V-Ray renderer
  • added UVW support to V-Ray DSO
  • added -objExport option to pgYetiCommand for exporting Yeti node data to obj files, this only supports exporting of Mesh data - useful for baking out instances etc.
  • added Spread attribute to Guide node
  • refactored data stream creation

Bugs Fixed

  • added scriptJobs to make sure RMS integration remains when scene is opened/new’d.
  • fixed a bug with nodes referencing uniform attributes incorrectly
  • Yeti warns about degenerate/invalid/missing UVs on input mesh
  • correctly drawing guides when reading cache files
  • fixed guide per frame sample interpolation issues which caused erroneous PRef locations
  • visible in reflections/refractions on by default when a Yeti node is created



  • changed licensing scheme, Yeti will only check out an interactive license if you’re opening the graph, creating grooms, simulating or applying a GRM file. This means that referenceing a cache file for rendering will only take a render license. Yeti also doesn’t take a license when first loaded, only if a node is created - but it does check and to see if a valid license is available.
  • added time variable for expressions, this is the exact sample time at evaluation vs. frame/F which is the round frame number

Bugs Fixed

  • fixed issue where graph variables weren’t being written to cache files correctly
  • fixed issue with variable evaluation that affected motion blur
  • fixed installation issue with shelf_Yeti.mel



  • guide curve shapes internally match Maya’s a lot closer
  • added attraction bias to guide curve controls
  • added maxNumberOfGuideInfluences to guide curve set and removed from guide node ( to globally control the effect vs. just in the guide node )
  • guide curves can have a texture reference object for world space animation
  • fairly large optimization where groom elements are pre-cached
  • improved guide weighting
  • adjusting guide clumping to always clump to the guide curve that currently contributes the most weight ( vs. trying to do weighted clumping )
  • added Tutorials section to documentation with Instancing ( and Feathers ) and Grouping tutorial
  • added two example scenes for said Tutorials
  • improved Pixar’s Renderman and Renderman for Maya integration ( no need to set up all of the Mel scripts, just render! )
  • pgYetiRMSRender is only built on Windows as it’s not required on the other platforms
  • improved comb strand interpolation

Bugs Fixed

  • fixed issue if something other than a groom/guide was connected to second input of scatter and grow
  • converted strands now correctly inherit u and v ( s and t, actually ) coordinates when converted to fibres



  • improved guide curve clumping ( much smoother ) and twist

Bugs Fixed

  • fixed issue introduced in 1.0.2 with scatter and grow not obeying radius of influence
  • ( Ticket #106 ) hairs don’t get attracted to the maya curves tight enough and some not beeing used, guide curves work correctly with comb node



  • it is now possible to use input guide curves with the comb node
  • current frame now used in temp render cache filename
  • added Guide Influences parameter to the guide node, prior to this version Yeti considered all guide curves when evaluating the node which led to overly and over soft looking affect, by limiting the number of curves you can control the look easier. To revert to the previous method set this value to 0 ( use all curves ).
  • improved guide clumping and twist result
  • Yeti shelf create when plugin loads
  • guide curves can now be applied to GRM and Cache files to replaced stored curves dynamically, this is done by attaching the same guide set once the groom has been loaded
  • added “Lock To Surface” attribute that is on the Guide Set to have guide curves follow deforming surfaces similar to Grooms
  • added Display Bounding Boxes to display palette of Yeti Node to draw relevent bounding
  • added Increase Render Bounds attribute to cheat the DSO bounding box’s bounds in situations where the generated data ends up exceeding the predicted bounds ( similar to prman displacement bounds )

Bugs Fixed

  • fixed comb interpolation issue
  • only the first input is evaluated when a node is ignored now ( this was the original intention that was broken )
  • ( Ticket #104 ) fill using “minus” hair tool with selection, deleting now obeys selected strands
  • ( Ticket #103 ) convert strands to fiber + width node, Yeti will now not crash when connecting the converted strands to the second input of the width node



Bugs Fixed

  • improved dynamics solve for extremely fast moving deformations
  • fixed RMS and Prman linkage on OSX




  • added -verbose flag to procedural DSO to control output level, 0 = none, 1 = some and 2 = all
  • added Verbosity attribute to pgYetiMaya node ( in the Other palette ) to control output verbosity at render time
  • added attraction bias to Clumping which controls how far along the hair the clumping transition happens ( 1.0 pushes it to the tip, -1.0 to the base )
  • added file dialogs to I/O palette in Yeti Node for Groom File Name and Cache File Name
  • added graph evaluation time to Full Verbosity output

Bugs Fixed

  • fixed bug which caused comb node to crash when combing points when no comb attrbiute specified



  • added Relax Steps to scatter to lay out scattered points more evenly
  • added Plugin Version read only attribute to pgYetiMaya node in the Other palette ( helper only )
  • exposed pgYetiMaya attributes in the channel box
  • added ability to instance to individual strands converted to fibres
  • comb can now create attributes on fibres
  • added pgYetiSwapGeometry command to provide an easy way of swapping all the connections from one geometry to another
  • added offset parameter to instance node
  • added ignore namespaces parameter to pgYetiMaya node to truncate namespaces on input objects/grooms/guide sets to the yeti node

Bugs Fixed

  • fixed issue that caused Yeti not to render when reading a groom file
  • guide feedback now correctly draw in viewport when “display guides” is on
  • instanced geometry now has texture coordinates correctly defined as facevarying in renderman output
  • u and v attributes are mapped to s and t in rib



  • added cycle option to instance node to cycle input objects
  • now linking against 3delight 10.0.4 & PRMan 16.2

Bugs Fixed

  • fixed a bug in the custom object selector that was deleting references prematurely
  • fixed an issue in the group node which caused it to crash when specifying a non-vector attribute
  • fixed bug where stroke was being drawn even when mouse button wasn’t being pressed
  • fixed sculpt mode, it should work as expected now



Bugs Fixed

  • fixed rest position bug introduced in 0.9.2
  • another tweak to the dynamics stability



  • updated the attribute node which will create new attributes if they don’t exist and now take a second input, a groom, which can be used to set the default values for the new attribute by sampling attributes on the groom
  • added invert selection to groom tools
  • added Maya field support for groom simulation
  • improved strands rotational constraint solver accuracy

Bugs Fixed

  • fixed an issue which caused some refereces to crash maya on input
  • fixed issue where selected points would change if deleting strands while selected
  • refactored groom drawing to solve stability issues
  • fixed issue with strands popping to the other side of a model when painting on a very thin model ( ears etc. )



  • new attributes default to a value of 1.0
  • dynamics take into account scale of strand segment for more accurate gravitational effect
  • added isolate selected strands option in groom, when on ( by default ) only the selected strands will be drawn and affected
  • add the ability to create new attributes in Comb, so if you want to instance feathers you can have a comb attribute T and in the instance node us $N as your upvector and $T as the alignment - works well for controlling the direction of branches more effectively too.

Bugs Fixed

  • fixed issue with Maya 2012 which caused the nodes in a graph to bunch up when re-opening
  • fixed crash bug when undoing after creating new strands
  • fixed caching of dynamic sims
  • refactored groom and groom manipulator to hopefully fix outliner issues
  • fixed RMS linking issues
  • fixed bug which caused Yeti to crash when deleting strands after importing them into the scene



  • ability to paint dynamic stiffness via “sim_stiffness” strand attribute, renamed mass control attribute to “sim_mass”
  • added RenderMan Studio support for Maya 2012
  • added the ability to output subdivision surfaces from yeti graphs
  • added strand selection feedback
  • added custom object outliner to replace maya’s, this should hopefully resolve Maya outliner issues
  • RMS support for Maya 2012
  • removed redundant Keep On Surface parameter
  • reorganized paintable attribute palette to include display options

Bugs Fixed

  • single point not drawn at 0,0,0 when strands are hidden on groom
  • resolved instabilities with sim_stiffness attribute
  • resolved a bug which caused setLength to stop working when strands had a tiny strand segment
  • fixed a bug that caused 0 values when trying to smooth outside of selected vertices




  • added the option of instancing on a per element or per point basis so objects can be instanced to individual fibres or converted grooms
  • added -saveGroom [filename] to pgYetiCommand to save out pgYetiMaya .grm files from mel scripts
  • dynamics uses mass attribute painted in groom to control the over all mass of strands
  • refactored/optimized dynamics
  • graphs are encoded in the cache file
  • added diffuse_mix option to the shader to mix in the surface diffuse value into shading result for more predictible ( though slightly wrong ) lighting
  • optimized the draw of painted attributes
  • set up build process to support Maya 2012
  • removed tablet pressure
  • changed default segment length in Grow node to 0.5
  • added collision objects to groom dynamics w/ new interface to specifying collision objects in the scene

Bugs Fixed

  • global scalar variables don’t crash the graph when referenced by vector fields
  • dynamics now correctly compute dt
  • volume grouping correctly groups points scattered on recursive geometry
  • removed redudant attributes on nodes
  • fixed texture export issue that caused large black areas on output
  • fixed misaligned specular in shader and specular_deviation now obeyed ( defaults to 0.0 )
  • hopefully issues with outliner window resolved, please report back if this still persists



  • multiple objects can be instanced to a single point

Bugs Fixed

  • import texture on groom now correctly saves an undo state
  • rolled back some changes that may be affecting temporal output for motion blur
  • fixed a bug in scatter which was causing the texture reference object to be ignored
  • fixed issues where hairs weren’t being groomed correctly if they were longer than an input groom



  • added object selection to instance, for example id is defined and cycle($id,0,4) in the object parameter will cycle through 5 possible input objects ( if they exist)
  • alignment and scale variation for instancing
  • added particle/point support for comb, which lets the user comb N
  • added comb attribute to control what attribute is actually combed when applied to points
  • added the ability to scatter across multiple objects

Bugs Fixed

  • cleaned up global variables correctly, resolves issue with cache files slowly growing during the course of a shot
  • improved prman/rms sampling for motion blur
  • fixed bug which caused radius to be ignored on nurbs guide curves
  • cache files can now handle unlimited sized graphs ( ie. fixed graph size limitation )
  • fixed strand weight equation to avoid “spikes” in texture export



  • added option of specifying a grouping attribute ( by default P )
  • added group support to instance and grow ( ie. only instancing/growing off points in group )
  • added alignment and up vector to instance

Bugs Fixed

  • empty graph would cause maya to crash
  • fixed popping in clumping node



  • updated Yeti shelf, please reload to pick up changes as some of the mel function names have changed
  • new groom I/O to support paintable user attributes
  • custom user attributes can be painted, this is a re-design of the painting methodology. When in paint mode density, width and any other attribute has to be created to be used - any number of custom attributes can be created for use within the graph. Length is a special case and ALWAYS exists as it’s a geometric attribute that can’t not exist.
  • scatter and grow have been updated to allow specification of a specific attribute to be used, defaults to the historical values ( density and length ).
  • removed paint mode types and refactored groom UI to support the custom paintable attributes, to paint and attribute you can double click it’s name and/or use the paint attribute button
  • added duplicate & rename attribute and removed set from length tools ( redundant )
  • added export paint attribute to texture for grooms
  • added import texture to attribute for grooms
  • graphs can now handle mulitple input objects and grooms
  • added new AE UI in the Graph section of the pgYetiMaya node, objects and grooms can be added/removed using the input lists
  • guide sets are now added to the graph similar to objects and grooms in the AE Graph->Input Guide Sets vs. the graph editor menu option
  • refactored grouping
  • added expression mode to grouping to group based on an expressions result
  • removed the draw toggle and now defaulting to drawing the “root” node
  • added drawFeedback option to pgYetiMayaNode to turn on/off node feedback ( such as grouped points ) in the viewport
  • added bounding objects to grouping so geometry can be used to group points

Bugs Fixed

  • graph correctly evaluates when first reading cache/grm files
  • fixed motion blur samples issue when a full frame ( -0.5, 0.5 ) was requested
  • fixed “Write Cache” button in pgYetiMaya



  • it’s possible to create 0 length strands in grooms ( for painting instancing locations )
  • cleaned up groom/strand drawing
  • optimized GL drawing
  • added viewport length to pgYetiMaya node
  • added photoshop style hotkeys to resize brush ( [ and ] )
  • added “maintain length” parameter to scraggle, default to on where fibres will maintain their length ( regular behavoir ) and off means that they maintain the direction/groom more accurately

Bugs Fixed

  • fixed issue with brush lag
  • hopefully isolated intermittent crashes with painting
  • brush set length bug resolved
  • adjusted brush event filter to handle tablet pressure on windows more reliably
  • fixed thread safety issue when rendering on windows
  • resolved a memory leak introduced a few versions ago due to badly managed shared pointers
  • grooms draw using user defined colour when in shaded mode ( yeti nodes only in wireframe due to material needs )



Bugs Fixed

  • fixed incorrect face vertex uv output
  • refactored mesh primitive to avoid redundant re-allocation of input parameters



  • Renderman Studio support, most of the shared libraries and binaries should be compatible between RMS and Prman but in some instances ( Windows ) they’re not. As stressed by Pixar in the RMS docs, be aware of what dso’s you’re using.
  • undo/redo hot keys implemented, using ctrl-z, ctrl-shift-z
  • brush scaling now uses B key vs. shift
  • added Sculpting brush which allows the use to push/pull strands in the viewing plane
  • added Trim brush which allows you to trim hair away, this works well when trimming profiles
  • mirroring support added for Sculpt and Trim brushes

Bugs Fixed

  • fixed issue introduced in 0.8.9 rendering on Windows
  • length floating point precision set to 2 when drawing strand length
  • fixed bug that crashed Yeti when an input was missing in scatter
  • renamed “Geometry” to “Selection” on import node for clarity
  • fixed tablet pressure “ssllloowwwww upppddatteee” on Windows
  • fixed issue where node info was creating multiples of the same attributes/variables
  • mapped attributes correctly merged



  • added a transform node to move whole objects in the graph
  • added the instance node revealing the power of Yeti instancing!
  • mesh objects now drawn when dislpayed in the graph
  • renamed displayFur attribute to displayOutput ( as you can generate more than fur now )
  • mesh rendering rolled into this build
  • initial instance rendering implemented
  • instancing accepts any type of geometry for input ( as long as it has P )

Bugs Fixed

  • fixed bug which was causing only 1 shape to be cached when previewing renders



  • added adjust HSV option to shader node
  • added hsv_adjust parameter to fur shader
  • new documentation! ( you’re reading it! )
  • removed all dependency on Maya for flexibility and optimizations ( future versions will integrate into Houdini etc. )
  • strands are kept above the input surface when grooming + a “Keep On Surface” option on the groom node
  • improved handling of multiple input grooms in the graph as well as updating reference surfaces
  • re-written brush event system
  • tablet pressure now supported for grooming
  • initial dynamics implementation in place
  • moved simulation controls from pgYetiMaya node to pgYetiGroom node
  • added color parameter to Yeti node to draw the fur a specific colour when not selected
  • added input groom list to Yeti node
  • brush is now drawn on the surface all the time, not just when button is pressed
  • select/deselect strands while grooming to limit the brush effect to specific areas
  • added display strand length parameter that draws the length of a strand when hovering over one

Bugs Fixed

  • fixed shader bug where opacity_map_value was being redeclared
  • node editor correctly display error node
  • fixed import node pattern matching
  • text fields set with list dialogs now update right away ( vs. needing to press enter )
  • fixed issues where 0 length strands would cause nan values in groom
  • fixed missed normalization with direction brush, now it’s way more accurate
  • groom node only uses user define colour when not selected etc.
  • duplicating grooms work
  • using shift to change brush size provides correct scaling information



  • added input geometry list to pgYetiMaya AE template

Bugs Fixed

  • import object list now populated without the need to cook the node
  • import groom now works when there is more than one groom



Bugs Fixed

  • fill now works again
  • painting works when obey surface normal is off
  • paint values are exactly as set vs. filtered



Bugs Fixed

  • improved smooth brush
  • fixed painting length issues that led to crashes
  • sped up kd-tree search
  • fixed issue with “missing” fibres which is caused by the tangental interpolation on the input strands
  • fixed path name issues on windows



  • compiling against 3delight 9.0.89 on Windows
  • windows paths have slashes replaced to make sure they’re resolved correctly
  • fixed issue where grooms couldn’t be created when a previous groom had been deleted
  • re-implemented tree hashing to improve graph re-evaluation
  • importing grooms now work, added import groom button in Yeti AE

Bugs Fixed

  • removed nan generation issue when clumping fibres were shorter than the fibres to be clumped
  • undo fixed
  • GL sorting issues when group node is drawn in the viewport resolved
  • refreshing grooms when renamed updates immediately
  • fill works correctly now
  • correctly removes graph editor when graph/node deleted
  • ptc generation works on Windows w/ latest 3delight



  • completely re-implemented SeExpr integration for ultimate awesomeness
  • added global variable list to node info
  • added user variable display and open graph editor button to pgYetiMaya AE
  • much better paint mode brush dynamics and re-implementation of smooth in paint mode
  • added geometry sampling, attributes from the input geometry can be transferred to the source points and fibres
  • updated procedural call to handle more robust input parameters ( WARNING: old archived ribs will not work! )

Bugs Fixed

  • fixed bug in graph which caused a crash when nodes have been deleted
  • fixed graph bug which drew an input on nodes that have none ( such as import )
  • fixed backwards compatibility with vector types in graph
  • adjusting render values won’t cause the fur to update in the viewport



  • added some heuristics to avoid groomed strands being pushed through the surface
  • optimized the grooms use of setSurface for snappier feedback
  • finished prman integration!
  • groom display color can be changed
  • populate at mesh points true by default on grooms
  • added direction brush + icon
  • added tooltips to all groom parameters
  • improved brush dynamics

Bugs Fixed

  • groom move mode wasn’t updating the new surface position which caused garbage combing values
  • groups work on blend nodes now
  • flood fill works with propgate at all mesh points
  • fixed smooth sculpt to use strand normal vs. brush normal and modulate by dot
  • tweaked comb brush and added the option to reverse the curvature
  • fixed comform new strands



  • using discs to display paint values for groom
  • ability to scale paint value discs in groom
  • removed fly aways on guide curves
  • added convert node to convert strands to fibres
  • clumping now accepts strands as a second input as well as fibres
  • added attribute mapping
  • added attribute node to remap attributes to those that can be passed to the renderer
  • optimized populate at vertex positions
  • delete strands now obeys brush weight allowing multiple deletions at a time
  • added status bar to graph editor
  • added attribute mapping to node info
  • custom variables can be fed into the graph via yetiVariableF and yetiVariableV maya attributes
  • rib export handled via mel bindings to remove dependency on renderer dlls ( resulting in one plugin again )
  • strands align to new surface normal when moved
  • added direction parameter to grow
  • differentiated between groom and cache file name
  • added varying update frequencies on groom
  • populate and length disabled on corrective grooms ( as topology can’t change )

Bugs Fixed

  • no missed points when populating at vertices
  • corrective grooms work on caches again



  • added scale parameter to scraggle node
  • fixes and optimizations to guides
  • added populate at vertex positions in groom
  • zero length strands can be created
  • fixed bend and added bend direction

Bugs Fixed

  • grow correctly handles min/max length when a groom is attached




  • cleaned up Groom UI
  • added radius of influence to groom to limit the strands influence if greater than 0.0
  • cross platform cache compression added
  • added write cache control to Yeti AE
  • fixed strand movement in groom edit mode
  • added icons :)
  • added node info widget to graph editor
  • integrated new dynamics solver
  • added initial strand length parameter to groom node
  • added strand collision with groom surface to avoid grooming inside of base surface
  • added a timer to node information
  • added ability for new strands to conform to the same direction as neighbours

Bugs Fixed

  • added undo for groom fill
  • bounding box correctly computed in maya_batch/rib archive output mode



Bugs Fixed



  • grid now drawing in graph UI
  • added version number to window title
  • correct license checking for gui and render components
  • added the concept of static and dynamic attributes, this means that cache files are even smaller
  • replaced Peregrine expression language with Disney’s SeExpr ( )
  • optimized internal allocations with make_shared
  • strands now update with geometry changes ( make sure reference changes too! )
  • optimized strands class
  • re-implementation of brush and groom functionality
  • added flood fill feature for grooming
  • added cubic interpolation to stored motion samples
  • cleaned up groom interpolation

Bugs Fixed

  • need setenv MAYA_SET_PARENT_HINT 0 on Linux to avoid crash when showing graph editor
  • lowered repeated ends for renderman RiCurve output
  • fixed first vertex cropping in grow
  • fixed crash bug when requesting a new scene when graph editor has been opened
  • fixed crash in 3delight DSO on close with uninitialized data

Note This version requires MAYA_LOCATION defined, and maya’s dlls in the path



  • updated mel to provide new pgYetiNewNode so nodes can be created without Mesh select for cache reading.
  • each Yeti node now has it’s own graph editor so two graphs can be edited at once
  • added inheritUVs to Import node
  • added copy/paste support to graph editor, nodes can be pasted both into the current graph and betweens graphs
  • much nicer per component grooming control
  • node aesthetic changes
  • noodles now drawn as cubic curves

Bugs Fixed

  • fixed precision bug that caused motion blur samples to be misaligned
  • fixed a bug which caused Yeti to crash when input geometry had degenerate UVs
  • when a node is set to “root” and deleted it will now set one of it’s input to render