Hair Emitters
kH Emit Guides
Basic emitting node. Creates points and strands on NURBS surface. Only single NURBS surface (without sub surfaces) is tested. Only one kH Emit Guides node per point cloud is allowed. Node should reside in un simulated ICE tree.
Also, node creates basic point and strand attributes, such as point color, point and strand size, count of strand segments. Initially, strands are aligned to point normal of NURBS surface. Even with un simulated ICE tree, together with deformations on NURBS surface, points will always stick to their initial emit locations. Particle shape type is set to segment. All attributes can be changed later, except one: count of strand segments, which is the same for all points in point cloud, all the time. Even hair filler node will re-use this value.

The node itself is enough for rendering.

Important parameters:
- Emission type: 'Random' is a random distribution along NURBS surface. 'Grid' is a diagonal grid, that can be proportionally randomized.
- Rate: Number of points in point cloud. In case of 'grid' emission, rate can be slightly different than input.
- Grid Ratio: In case of grid emission, this parameter can change distribution, more point along X, less along Y, and reverse.
- Seed: It's the same for both emission types.
- Start From Root: Position of first strand segment is the same as point position. Do not allow this option when rendering with Mental Ray - it can cause missing of Final Gathering, probably it can cause another problems. Option is mainly for converting strands to curves or meshes.
- Size: Particle and strand size. Particle size is taken from first member od strand array.
- Segments: Count of strand segments.
- Length: Initial strand's length.
- Start: Emission can be limited along NURBS surface.
- Density: Sliders for adjusting the emission density, along U and V of emitter.
- World Up Vector: Initial Up Vector for strand deformations, in world space.
kH Emit Hair
Hair filler node. Creates points and strands, interpolated along first, 'guides' point cloud. It should use the same NURBS surface as kH Emit Guides node.
It can exist only after point cloud, created with kH Emit Guides. Only one kH Emit Hair node per point cloud is allowed. Node should reside in un simulated ICE tree.

Important parameters:
- Emission type, rate, size, behave in the same way as in kH Emit Guides. Count of strand segments, 'Start' and 'Density' are linked to parameters in kH Emit Guides.
- Clump: Changes default, even interpolation between guides, to matching with closest guide.
- Locks: Changes even interpolation, to aligning into stripes.
- Crossover, Crossover Length: Built-in weighting of Clump and Lock effect, along strand's length. Crossover value is start of effect, Crossover Length is additive to Crossover, where effect reaches the 'Weight' value. For adjusting with additional nodes, set both Crossover and Crossover Length to zero, then plug kH Strand Curve node into 'weight' input.
- Align Locks: It's proper aligning of strand's stripes along guides. Behavior is similar to effect of XSI Extrusion Along Curve operator, with activated 'Align Profile to Path' option. It doesn't work well with highly curved guides.
- Cutoff Distance: Distance for searching the closest point on 'guides' point cloud.
- Velocity Factor: Multiplier of strand velocity, for rendering with motion blur.
- Split Hair: allows splitting of hair, created mainly in between of influences of 'form' nodes in 'guides' point cloud.
Form
'Form' nodes are creators of basic hair flow. Almost all of them utilizes additional NURBS surfaces or curves. In analogy with mesh creation in Softimage, these nodes acts more like lofts or extrusions, instead of nodes from 'modify' panel.
kH Follow NURBS
Is a main hair styling node. Node is designed primarily for tiny layers of hairs. Firstly, node searches for closest locations on additional NURBS surface, then it aligns the strands along it's X length. Flow always starts from X, 'red' boundary. According to order of closest locations along X of NURBS surface, strands are
moved along NURBS surface normal. There is a 'blending area' for creating smooth interpolation from point positions (hair roots), to flow.
Two functions (closest location, and 'flow source') can be assigned to different NURBS surfaces. This is usable for animation - only NURBS surface, plugged into 'Shaping NURBS' port, should be animated. Also, option allow use of high-density NURBS for accurate searching for closest point - as well as low density NURBS for 'shaping'.

NURBS surface need to be *close* to points, inside cutoff distance. It doesn't need to match exactly to emitter.

kH Follow NURBS creates very accurate vectors, that can be used for later deformations - for the price of lower performance. It's good idea to use this node only on 'guides' point cloud, and create enough strands for rendering only by using 'filler' point cloud.

Important parameters:
- Blend End: end of 'blending area', along strand's length.
- Length: End of strands, along X of NURBS surface.
- Width Y: Scale and center of scaling, along Y of NURBS surface.
- Push: Scaling of strand's flow, along surface normal. Too high values, together with highly curved NURBS, can produce artifacts.
- Shift: It moves whole flow along surface normal's. Too high values, together with highly curved NURBS, can produce artifacts.
- Negative Push: Invert the scaling.
Limits: Outside these limits, node has no effect. In case of overlapped influences of multiple kH Follow NURBS nodes, the last one has a precedence.
Cutoff Distance is a maximum distance from points (hair roots) to locations on NURBS surface. Angle Limit is a maximum angle between point normal and direction to closest location on surface. When using single kH Follow NURBS, keep Angle Limit high, about 30 degree. When using multiple, keep it low, about 3-5.
- Transfer Velocity: Transfers velocity from 'Shaping NURBS' to strands, for rendering with motion blur. During hair styling, keep it off for better performance.
- Split Hair - it has effect only on hair filler point cloud, or kH Grouping node - hairs are separated at borders of influence of kH Follow NURBS.
- Split On Y - split hairs inside the modifier's influence.
- Alternative Strand Array: Additional input for modifying the flow. Inputs are only for 'kH Offset Curves' nodes.
kH Follow NURBS multiple
Simplified version of kH Follow NURBS, for working with multiple inputs. Node can accept up to 8 NURBS surfaces. In fact, same settings are repeatedly applied using multiple NURBS inputs. Unused ports are automatically removed from calculation, but ports should be filled in order, one after another (for example, 'A,B,C...', not 'A, C, F...'). Every iteration behave as a new kH Follow NURBS modifier - it has a precedence over modifiers, applied before.
kH Offset Curves
Is for re-mapping the flow of kH Follow NURBS. It can use up to 16 curves, that should approximately reside inside the world XY 0 - 1 SI Unit. Curves are re-mapped to UV space of NURBS surface, used for kH Follow NURBS. Effect of moving points on curves is similar to working in SI Texture Editor. Straight, horizontal curve is 'zero', everything other is deformation.
Points on curves (except the first one, used for searching) can be moved outside of Y of NURBS surface - so strands will reside in 'empty space' outside of NURBS surface. Actually, kH Follow NURBS will perform 'reflection' of sampled positions from inside it's Y.
Unused ports are automatically removed from calculation. Ports can be filled in any order (for example, 'A, C, F' is OK). Node is able to display it's UV effect.

Important parameters:
- UV distance: maximum distance from first point on curve to UV of NURBS surface.
- Align Profile: Aligns end of flow profile along curve tangents.
- X Rescale: Convenience parameter, allow using curves at more than X 0-1 range.
- Y Scale: 'Clump' effect
- Z Scale: Scaling along normal of NURBS surface
- View Port Position: Convenience parameter, for taking positions from curves that are on another XY positions than world 0 - 1.
kH Offset Curves S
Version of kH Offset Curves, that utilizes ICE Multi-Instance Input Ports feature. Because of array calculations on whole point cloud (instead of separated to each curve), it's much slower in interaction than 'standard' kH Offset Curves. Use it only for a small count of inputs, let's say two or three.
kH Cross Sections
It's designed as an opposite to kH Follow NURBS. Emit UV locations are projected to additional NURBS surfaces, then strand are interpolated as 3 point, quadratic Bezier curves, using locations on NURBS surfaces as control points. Node will adapts automatically to used NURBS surfaces.

For getting correct vectors for later deformations, it's good idea to keep NURBS surfaces as much perpendicular to flow - at least in areas where deformations should be applied. For correct effect of modifiers that are used later, NURBS cross sections should be at equal distances - except first and last segment, that should be two times shorter.

Important parameters:
- Cut Last: removes some of last NURBS surfaces from calculation.
- Length: End of curve creation.
- Filtering NURBS: in case of using this input, emit UV locations are replaced with locations from plugged NURBS surface. Also, influence became limited in area of this surface.
- Cutoff Distance: Maximum distance to 'filtering NURBS'. Has no effect if 'filtering NURBS' isn't used.
- Mid Point: if it's enabled, node will add additional point between hair root and location on first NURBS surface. 'Position' is relative in-between position. 'Push' is a relative scaling along point normal of emitter,'Shift' is moving along point normal.
kH Follow Curves
Forces strand to follow curves. First point on curve is used as reference position. This node also has a 'blending area', from hair root to position on curve. Node can accept up to 8 curves. Unused ports are automatically removed from calculation. Ports can be filled in any order (for example, 'A, C, F' is OK).

This node won't set the Up Vectors for later deformations, only strand tangents are created. So it won't behave properly with heavy offsets from previous shape.

Important parameters:
- Single Strand: Only one strand per curve is affected. There is a sense to use this, only in presence of 'hair filler' point cloud.
- Display Points: Display hair roots, used for reference. It's good idea to keep first point on curve, very close to displayed points.
- UV Distance: Distance for limit the effect, in UV units taken from emit location. If kH Follow NURBS is applied before, UV space from NURBS surface, used for kH Follow NURBS, is used instead.
- Cutoff Distance: Maximum distance for searching, from first point on curve, to hair roots.
- Clump: exactly the same as it is described for kH Emit Hair.
kH Fur From NURBS
It creates fur-like strand shape. Orientation is taken from emitter's surface. Node is a version of kH Emit Fur node, but this time, it can be used together with point cloud, emitted from NURBS surfaces. Purpose is creation of short hair. In order to work, node needs kH Fur Profile plugged into 'Strand Array' port.

Important parameters:
- Scale: Scaling of whole fur profile
- Rotation: Around point normal, and X axis of UV space of NURBS emitter.
- Strand Array: port is only for 'kH Fur Profile' node.
- Point At: Port is only for 'kH2 Fur Vector Field' node.
Fur
With kH nodes, 'fur' primarily means the point cloud, emitted from mesh. In order to keep point and strand positions, even with deformed mesh and un simulated ICE trees, mesh need to have UV projection applied. UV projection should not overlap, it should be inside 0 - 1 range. At UV seams, edges should be disconnected.

For correct distribution, it's good idea to create UV projection by using some software (Road Kill, Unfold...), not manually.

Emitter mesh need to have it's own ICE tree, with compound called 'kH Init MeshUV Emitter'. This ICE tree is going *after* deformation operators in stack. After applying 'kH Init MeshUV Emitter', mesh should take the shape of it's UV projection. Emitter mesh should always stay at world zero transform.

If kH Fur Vector Field node is used, compound called 'kH Init Mesh Static' need to be applied in another ICE tree, *before* deformation operator.
kH Emit Fur
Fur emitter. Fur is created from specially prepared mesh, as it is described above. Compound called 'kH Fur Profile' need to be plugged into the 'Strand Array' port. kH Fur Profile is separated, to allow using of multiple profiles in the same time. Only one kH Emit Fur node per point cloud is allowed. Node should reside in un simulated ICE tree.

Important parameters:
- Emission type: 'Random' is a random distribution along mesh. 'Grid' is a diagonal grid, that can be proportionally randomized.
- Rate: Number of points in point cloud. In case of 'grid' emission, real rate can be *much* smaller than input, because the initial grid points are projected along whole 0 - 1 space, regardless of 'filled' UV space.
- Seed: It's the same for both emission types.
- Size: Particle and strand size. Particle size is taken from first member od strand array.
- Scale: Scaling of whole fur profile
- Rotation: around point normal, and Y axis of UV space of emitters texture projection.
- Strand Array: port is only for 'kH Fur Profile' node.
- Point At: Port is only for 'kH2 Fur Vector Field' node.

kH Fur profile
Creates a fur profile, using function curve. Node is created only for use with kH Emit Fur and kH Fur From NURBS. Because it is a separate compound that outputs per point array of 3d vectors, it's possible to blend multiple kH Fur Profile nodes. For example, by using the factory Linear Interpolate node and weight map on emitter.

Important parameters:
- Length: is a 'horizontal; length. In case of emitting form mesh, it's parallel to Y axis of UV space. In case of emitting from NURBS, it's parallel to X (U) of NURBS UV space.
- Height: Equivalent of point normal on emitter.
- Bend : Bending, point normal is used as an axis. Angle is limited to -360 +360 degree.
- Fill: Scaling along profile, with keeping the original shape.
kH Fur Vector Field
Main purpose of this node is to fill the gaps in UV seams, but it can be used as styling node too. It utilizes the group of nulls. Nulls acts similar to XSI envelope operator, influence is modulated by distance to point positions (hair roots) - but here, nulls affects only orientation. Influence of each null can be modified by scaling, even non-uniform scaling. By default, positive Y axis of nulls is used as orientation vector of hairs. This orientation vector is parallel to emitter's surface - node won't work properly if positive Y axis of nulls is parallel to emitter normal. Also, it won't blend nicely at high angles, near to 180 degree.

Important parameters:
- Influence function curve: it should fall from one to zero.
- Distance: multiplier od distance in SI units.
- Null point at: null's orientation vector. Keep it at default, positive Y axis.
kH Splay Fur
Creates clones of hairs, then distribute the clones in circle around original hair root. Newly created hair roots will properly stick to emitter.

Important parameters:
- Nb to clone: number of cloned points. It's the same number for all original points.
- UV percent: percent of UV space for moving the roots of clones. This can be randomized per cloned point.
- Splay Root, Splay Tips: factor of moving. It can be randomized per cloned point.
- In Angle: Limit the circle of distribution to some angle. It can be randomized per cloned point.
- Scale Variance: Variance of random scaling (of whole strand), per newly created points-strands.
Modifiers
Are general purpose nodes, that can be used for additional deformations - or just for providing parameters, used by another modifiers.
kH Bend
Rotates hair tips, according to strand up vector and tangent, provided by 'form' nodes, or previous kH Bend node. For better look, node creates 'linear' strand in area of influence, then it do deformation. 'Linear' part of strand is actually extension of strand tangent at start of deformation. So, in deformed area, previous strand shape is ignored. However, later modifiers in stack, including another kH Bend, will consider the deformation.

For calculations, node is using exact strand positions, instead of interpolations in between - when tweaking parameters, or modifying the count of strand segments, that will produce effect of 'jumping'. But once the deformation is set, effect of node should stay stable.

Important parameters:
- Start On: Starting position of effect, relative to strand length.
- Length: Length od deformed area, in SI units.
- Bend Angle: Maximum angle of rotation. It's limited to -360 + 360 degree.
- Roll: Rotates a whole deformation, using the first strand tangent of deformation, as an axis.
- Circle profile function curve - it can deform the circle.
- Use Array Min: It adjust starting point of influence, so even hair roots aren't aligned, starting positions of modifier's effect *are* aligned. Effect is visible if kH Follow NURBS is used before.
- Sync Length: Length of deformed area is linked to starting point of modifier. Radius of circle is smaller at higher starting position.
kH Curls
Creates hair curls. Actually, two sinus functions with different inputs are used - that's allow a 'half of effect' of waves only in one direction, if is desired.

Important parameters:
- XY weight: it's in SI units. If both values are the same, curls are created. When one value is zero, waves are created.
- Shift XY: it's in SI units. Whole effect is moved, this is mainly for avoiding penetrations with model's body.
- Profile function curve: modulates weight of whole effect along strand length.
- Nb Curls: Number of circles. It's per point value, so it can be randomized only per point, not along strand length.
- Exponent: At more than one, rotation is stronger at hair tips. Less than one is reverse.
- Roll: Rotates whole effect, using strand tangent as an axis. It can be modified in strand array context.
- Invert: Inverts the rotation.
kH Grouping
Creates groups of strand. Firstly, it creates a grid of points along UV of emitter, then it aligns the strand in groups, according to UV distance to sampled points.
For aligning, it's using the same 'Clump' and 'Locks' rules, as kH Emit Hair does. Important parameters:
- Count: Number of groups. It's approximation, it can be slightly different than input.
- XY Ratio: This parameter can change distribution, more groups along X, less along Y, and reverse.
- Randomize: Proportional randomizing of diagonal grid.
- Clump, Locks, Crossovers: the same as is in kH Emit Hair.
- Set What: In case of 'Only Group ID', node sets only ID for each group. ID can be used later with 'kH Random Value' node.
kH Push
Moves strands in three directions. X is a cross-product of strand tangent and up vector created by 'form' nodes (internally, it's called 'Up Vector Along Strand'). Y is a strand up vector itself, Z is a strand tangent. This modifier is more a container for strand array modifiers, such as kH Strand fCurve or kH Strand Turbulence. For example, it's possible to create a custom effect of curls, by using two kH Strand fCurve nodes, plugged into X and Y.

Important parameters:
- XYZ weight: it's in SI units.
- Blend End - position on strand, relative to strand length, where modifier has a full effect. At hair root, there is no any effect.
kH Randomize
Version of kh Push. For convenience reason, it has built in, per point randomizing of 'push' effect. This time, strand are moved only along 'XY'. Usually, modifier is used for creating the effect of a few strands, that don't follow hair flow completely.

Important parameters:
- Percent of strands: limits the effect to some percent of points in point cloud. At zero, there is no effect, at 100, all points are affected. Values in between are just close to real percent, calculation is not exact.
kH Roll Root
Rotates whole strand around hair root, using arbitrary axis. By default, axis is Z, which means point normal of NURBS surface, used as emitter. X and Y axis co-respond to U and V of NURBS emitter.

Important parameters:
- Bend: weight of bend effect. At weight of one, and 'angle' of 180 degree, full circle is created.
kH Strand fCurve
Strand Array modifier, for modulating a lot of parameters related to strand array: strand rendering size, weight of modifiers along strand length, weight of hair clump or locks effect, and more. It can be used instead of built-in 'crossovers'. For that, set both Crossover and Crossover length to zero, put kH Strand fCurve into 'weight'.

Important parameters:
-Use Array Min: It adjust starting point of influence, so even hair roots aren't aligned, starting positions of modifier's effect *are* aligned. Effect is visible if kH Follow NURBS is used before. It has no effect when using on hair filler.
kH Strand fCurve In SI Units
Strand Array modifier, version of kH Strand fCurve. Instead of relative length, effect is modulated by 'real' strand length in SI Units.

Important parameters:
- On Length: reference length in SI units.
kH Strand Turbulence
Strand Array modifier. Instead of function curve, turbulence is used. Base positions for turbulence are linked to strands in a way, that global transformation of strands will not affect calculation. Effect stays the same, regardless of movement. Base positions are: UV emit locations as X and Y, relative strand length as Z.

Important parameters:
- Shift Center: moves the turbulence effect along relative strand length.
- Randomize: Adds random value to UV values from emit location, providing a 'total' random effect, per point. Keep it at zero for aligned turbulence.
- Scale UV: this will virtually scale UV values from emit location, providing a different turbulence frequency per point, but still continuous. Scaling of this value will exaggerate 'random per point' effect. Keep it at zero for aligned turbulence.
kH Turbulence
It's a global turbulence, similar to factory 'Turbulize Around Value' node, but this time, strand position is used as reference. Main purpose of this node is animated effect of wind through the hairs.

Important parameters:
- Randomize: additional, per point random effect, for creating a 'total' random effect, per point
kH Strand Length
Scales the strands, exactly along original strand shape. If hair filler point cloud is used, kH Strand Length should go only on this one. Otherwise, interpolations of filler strands, along guides, can produce artifacts.

Important parameters:
- Ratio or Unit: blending between scaling by relative strand length, or by SI Units.
- In SI Units: Maximum length in SI Units. Provided value should be smaller than actual length in SI units. Modifier will not 'extend' the strands.
- Factor A, Factor B: minimum and maximum of per point randomizing of effect.
kH Subdivide Strands
Smoothly subdivides strands, getting a similar look to XSI 'geometry approximation' property. Node is using 3 point, quadratic Bezier curve, the same one which is used for kH Cross Sections node. Interpolation won't go exactly through strand positions, but it's fast.

Node can be used anywhere.

Important parameters:
Factor: Multiplies the count of strand segments. Here, kH Subdivide Strands behave differently than XSI geometry approximation. For example, with factor 3 and original count of 21, result is 63. With factor 5, result is 105, and so on.
kH UV fCurve
Takes UV values from emit location, or provided by modifiers, then do re-mapping to scalar value per point. There is a lot of tasks for this node. It can be used instead of painting weight maps on NURBS emitter, as a more convenient way. Also it seems to be easier to get smooth gradients by using this node, instead of painting.

Important parameters:
Type: 'Emit Location' is UV value from NURBS emitter.
'By Modifiers' is UV value provided by 'form' nodes - for example, UV value from 'Closest NURBS' used by kH Follow NURBS.
kH Hair Tips L
 
'L' stand for last. For performance reasons, this modifier won't create Up Vectors and Tangents after, so it's good idea to use it as a last deformation in stack.
Modifier is trying to create effect of 'lost' hair tips. In fact, it's a mix of kH Bend, kH Strand Length, and kH Strand Turbulence modifiers.
Shading
kH Point Color
Applies per-point color to points and strands. Color is modulated by turbulence. As a base position for turbulence, UV values from emit location are used. Result can be used in render tree, but main purpose is to get better feedback for styling.

Important parameters:
- Multiply: multiplies color by scalar value. This can be used to display useful information for styling - for example, kH UV fCurve can be plugged into this input.
- Alpha: if gradient color is used, it seems that is impossible to get alpha on point color, in view ports. So, node will re-build color internally, and apply a new alpha.
- Turbulence frequency, complexity, seed: common parameters of factory Turbulence node.
kH Optimize Strands L
Purpose of this node is to get lighter point cloud in rendering, trying to keep original shape. It removes segments from strands, except a few of them, (almost) equally distributed by 'segment length' value. Then it keeps segments with angle to neighbor, higher than 'min angle'. Also it always keeps first and last segment.

This node is exception of unique count of strand segments per point cloud. So it should go as 'last before rendering'. If second, 'hair filler' point cloud is used, kH Optimize Strands should go *only* on second point cloud. Variable array of strands that kH Optimize produces, if kH Optimize is applied to 'guides' point cloud, can cause problems.

Node will transfer some attributes, such as size and velocity, to newly created array.

Important parameters:
- Segment Length: Approximate length of newly created strand segments. If it's lower than original segment size, original segment is used. Higher value is higher optimization, but less quality.
-Min Angle: Minimum angle to keep when optimizing. Higher value is higher optimization, but less quality.
kH Strand Screen Size In SI Units
Applies approximate strand size in SI units, even if strand screen size is used. In order to work properly, rendering camera should be connected to 'Camera In Name' port. Also, horizontal size of rendered image need to be entered manually.

Important parameters:
- Screen Resolution: Horizontal pixel resolution of rendered image
- SI Size: Desired strand size in SI units. It's strand array, so kH Strand fCurve node can be plugged here.
- Minimal Screen Size: for avoiding anti-aliasing artifacts, node is able to keep minimal screen size to entered value.
kH Delete Points
Node is designed for deleting points, by painting weight maps on emitter. It should be plugged into 'Execute On Emit' port of kH Emit Guides, or kH emit Hair.
Built in Random Value is for smooth weighting of deleting effect, that follows weight map values.
kH Loft Shape In Render
Applies any other type of particle shape, instead of default, segment type. Node is using two *un supported* parameters, ShapeResolutionU and ShapeResolutionV.
Parameters are for providing the fixed count of subdivisions in rendering.

Important parameters:
- Resolution U: Count of subdivisions along radius.
- Resolution V: Count of subdivisions along strand length.
Simulation
 
kH Stick To Strand Extrusion
For utilizing this node, some of ICE strand addons by Helge Mathee, should be installed. Node will 'stick' strands back to 'strand extrusion mesh', created by mentioned addon.
Deformations on mesh are transferred to strands, so node can be used for transferring simulation, as well as additional styling node. Point velocity is transferred too - that's allow the motion blur in rendering.

Procedure for applying:
- Install MT_Strand_Addon, appropriate for used verision of Softimage.
- Apply kH Prepare For MT Extrusion node to point cloud
- Select point cloud, go to Model > Get Primitive > Create ICE Strand Extrusion.
- Go to 'polymesh_strand' PPG, type 2 into subdivision.
- Freeze 'polymesh_strand'.
- Duplicate 'polymesh_strand'.
- Back on point cloud, disable kH2 Prepare For MT Extrusion node.
- Add kH2 Stick To Strand Extrusion node, to point cloud, connect both meshes.
Don't modify parameters in nodes before kH2 Stick To Strand Extrusion. Don't change topology of any 'polymesh_strand'.
- Deform, move, or simulate 'polymesh_strand', which is plugged into 'Deformed Stick Mesh' port.

Important parameters:
- Weight: Blends the effect with previous strand shape. For example, kH Strand fCurve can be plugged here.
kH Prepare For MT Extrusion
Version of node from MT strand addon by Helge Mathee. This one has a few extra controls. It automatically takes vectors for deformation, created by 'form' nodes, so extrusions are aligned with strand flow.

Important parameters:
- Move to edge: If it's enabled, node will move strand along cross product of strand up vector and tangent - so in case the mesh extrusion have only two subdivisions, one edge of extrusion will be aligned to (previous) strand shape. Option is only for use with kH Stick To Strand Extrusion - to ensure that strand positions sticks just to points on mesh, not in between.
- Point Size: Set size of point in SI units - that's a initial radius of extruded shape
- Scale: Scales extrusion profile along strand length. kH Strand FCurve can be plugged here.
- Roll: Rotates extrusion, using strand tangent as an axis.
kH Point Dynamics Init Sim
'Point Dynamics' is a simple dynamics, applied only to points (hair roots). Simulated positions are converted to rotations of whole strands. This simulation type is designed only for short hair or fur. There is no any built-in collision - but it is possible to add a node that just prevent penetration with model's body.

kH Point Dynamics Init Sim node is for creating initial attributes. Typically, it should go at the end of ICE tree, which begin with kH Emit Guides.

Important parameters:
On Length: position on strand, used for creating direction. 1 is end of strand.
kH Point Dynamics
Applies spring dynamics to points on point cloud. Node should reside in simulated ICE tree.

Important parameters:
- Spring: factor of force, negative to point velocity.
- Drag: simplified variance of factory Drag Force node. It slows down the effect.
kH Point Dynamics 2Strands
Transfers point simulation to strands. Simulated point positions are used as a target for deformation.

Suggested caching procedure:
- Select third ICE tree, in post-simulation region, RMB and 'disable from here'
- Select point cloud, go to Animate>Plot>Write Geometry Cache
- - - Be sure to cache *only* point positions and point velocity - - -
- Duplicate and hide the point cloud
- Load cache on duplicated point cloud
- Enable all ICE trees on duplicated point cloud

Important parameters:
- Weight function curve: Modulates effect of rotation along strand length.
- Weight: global, per point weight of effect.
- Compensate Length : Gradually scales the strands when they are rotated, for correct bending.
Utilities
kH Restore Emit XY
Node is for creation 'exact' hair splitting that looking like line, along X or Y boundary of NURBS emitter - in case kH Follow NURBS is used. Node is only for use with filler point cloud. X or Y boundary of emitter should be in form of both sides of hair splitting line. So, there is sense to use it with combination of NURBS emitter, like the one in 'Follow-Curves' SI model - together with NURBS surface for kH Follow NURBS, like one in 'Follow-NURBS' SI model.

'Start' parameter in kH Emit Guides need to be set to about 0.05 - 0.1, actually a bit longer than distance between guides.

In ICE tree of hair filler, kH Restore Emit XY need to go just after kH Emit Hair node.

By moving the start of emitting area, kH Emit Hair is forced to search only for closest point on 'guides' point cloud, that are on the same side of emitter - but that will create empty space around splitting area. kH Restore Emit XY is for filling back the empty space, after the searching stage.
kH Random Value
It's similar to factory Randomize Value By Range node, but it can use more types of ID, not only Point ID. Typical usage is randomizing effect of kH Curls node, by driving the 'Roll' parameter of kH Curls (for that, values need to be set to about -90 + 90 range). Output is scalar per point.
Important parameters:
ID:
- Point: ID is per point (hair root), effect is the same as with factory Randomize Value By Range.
- Guide: ID is per guide of 'guides' point cloud. It has different effect only if used on filler point cloud.
- Group: ID is per group of points, created by kH Grouping node. It has different effect only if kH Grouping is applied before.
kH Turbulence From Emit UV

Similar to factory turbulence modifiers, but this time, equivalent of 'base value' is always UV value from emit location. That means, base value is fixed to emit UV - turbulence effect will not 'swim' if emitter is moved or deformed. There is a wide range for usage of this node - for example, modifying the scale of fur profile, multiplying effect of kH UV fCurve, so on.
Output is scalar per point.

kH Get Percent Of Points
Outputs boolean value for provided percent of points. Typical usage is to limit the effect of modifiers, by plugging into 'Enable' port. At zero value, node is forced to disable effect, at 100, all points are affected. Values in between are just approximate percent. Node is using it's own Random Value node - because in case of 'grid' emission, factory nodes that rely on Point ID, such as Get Every Nth Particle, won't produce random effect.
Best Regards,
Anto Matkovic
July 2010
anto@matkovic.com