# Change Log

## 1.3.5

- 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.

## 1.3.4

- 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.

## 1.3.3

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

## 1.3.2

- 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.

## 1.3.1

- 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.

## 1.3.0

- 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

Additions

- 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

Additions

- 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 yeti_featherAttributeExample.ma.

## 1.3.0 beta 1

Additions

- 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.

## 1.2.19

Additions

Bugs Fixed/Changes

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

## 1.2.18

Additions

- 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.

## 1.2.17

Additions

- 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.

## 1.2.16

Additions

- 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.

## 1.2.15

Additions

- 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.

## 1.2.14

Additions

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

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.

## 1.2.13

Additions

- 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 yeti_partingExample.ma 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.

## 1.2.12

Additions

- 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.

## 1.2.11

Additions

- 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.

## 1.2.10

Additions

- 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.

## 1.2.9

Additions

- 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. ).

## 1.2.8

Additions

- 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.

## 1.2.7

Additions

- 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 ).

## 1.2.6

Additions

- 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.

## 1.2.5

Additions

- 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

## 1.2.4

Additions

- 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.

## 1.2.3

Additions

Bugs Fixed

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

## 1.2.2

Additions

- 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

## 1.2.1

Additions

- 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

Additions

- 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

Additions

- 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

Additions

- 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

Additions

- 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

Additions

Bugs Fixed

- made sure missing icons were included with distribution

## 1.2 Beta 3

Additions

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

Additions

- 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

Additions

- 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

Additions

- 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

Additions

- 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

Additions

- 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

### 1.1

—

## 1.1.9

Additions

- added license issue feedback to Maya script editor

Bugs Fixed

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

## 1.1.8

Additions

- 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

## 1.1.7

Additions

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

## 1.1.6

Additions

- 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

## 1.1.5

Additions

- ( 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

## 1.1.4

Additions

- 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 4.0.6.0

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

## 1.1.3

Additions

- built against MtoA 0.16.1 and Arnold 4.0.5.3
- 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

## 1.1.2

Additions

- updated to MtoA 0.16.0 and built against Arnold 4.0.5.1
- 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

## 1.1.1

Additions

- 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

## 1.1.0

Additions

Bugs Fixed

### 1.0

—

## 1.0.17

Additions

- 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

## 1.0.16

Additions

- ( 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

## 1.0.15

Additions

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

## 1.0.14

Additions

- ( 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

## 1.0.13

Additions

- 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

## 1.0.12

Additions

- 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

## 1.0.11

Additions

- 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

## 1.0.10

Additions

- 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

## 1.0.9

Additions

- ( 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 )

## 1.0.8

Additions

- ( 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

## 1.0.7

Additions

- 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

## 1.0.6

Additions

- 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

## 1.0.5

Additions

- 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

## 1.0.4

Additions

- 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

## 1.0.3

Additions

- 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

## 1.0.2

Additions

- 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

## 1.0.1

Additions

Bugs Fixed

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

### 0.9

—

## 0.9.6

Additions

- 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

## 0.9.5

Additions

- 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

## 0.9.4

Additions

- 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

## 0.9.3

Additions

Bugs Fixed

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

## 0.9.2

Additions

- 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. )

## 0.9.1

Additions

- 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

## 0.9.0

Additions

- 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

### 0.8

—

## 0.8.17

Additions

- 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

## 0.8.16

Additions

- 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

## 0.8.15

Additions

- 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

## 0.8.14

Additions

- 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

## 0.8.13

Additions

- 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

## 0.8.12

Additions

- 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 )

## 0.8.11

Additions

Bugs Fixed

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

## 0.8.10

Additions

- 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

## 0.8.9

Additions

- 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

## 0.8.8

Additions

- 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

## 0.8.7

Additions

- 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

## 0.8.6

Additions

Bugs Fixed

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

## 0.8.5

Additions

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

## 0.8.4

Additions

- 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

## 0.8.3

Additions

- 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

## 0.8.2

Additions

- 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

## 0.8.1

Additions

- 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

## 0.8.0

Additions

- 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

### 0.7

—

## 0.7.5

Additions

- 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

## 0.7.4

Additions

Bugs Fixed

## 0.7.3

Additions

- 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 ( http://www.disneyanimation.com/technology/seexpr.html )
- 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

## 0.7.2

Additions

- 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