| On this page | |
| Since | 22.0 |
Tags BasisCurves groom primitives with the HoudiniHairDeformAPI schema and sets the relationships and attributes the hair deform procedural reads at render time. The deformation happens inside Karma during rendering, not in the LOP network. All referenced prims (skin, deformer, guide interpolation mesh) must already exist on the input stage.
Groom Primitive accepts a pattern, so you can set up multiple groom prims from a single node. All matched prims share the same deformer inputs — one skin mesh, one set of guide curves, and one interpolation mesh can drive many groom prims.
The required inputs depend on the chosen Deform Method. Irrelevant inputs are hidden automatically.
Choosing a deform method ¶
Guide Shape Interpolation
Captures rest-pose shape relationships between groom curves and nearby guide curves by comparing their arc-length-sampled shapes. Each groom curve is matched to the best-fitting guides based on spatial proximity and curve shape similarity — guides do not need to match groom topology or length. After capture, guide deformations are blended and applied while preserving each groom curve’s original shape.
Good for grooms with authored guides that roughly follow the hair’s natural flow. Unlike Guide Interpolation Mesh, no separate interpolation mesh is required, making it ideal for sparse guide rigs and varying hair density. Struggles when guide shapes differ drastically from groom curves, or when dense tangled regions need volume-based deformation (use Point Deform with a tet mesh instead).
Guide Reduce uses the same shape-comparison algorithm to select the minimal set of guides that can accurately reconstruct the full groom — making it the natural companion to this mode. Running Guide Reduce first ensures the guide set covers the shape space of the groom as efficiently as possible.
Guide Weights
Works like Guide Interpolation Mesh, but reads guides/weights primvars directly from the groom curves rather than from a separate mesh. The guide assignments are pre-computed — for example, by Hair Generate with Create Guide & Weight Attribs enabled, or by the
Guide Deform SOP in Capture Only mode with Delete Capture Attributes disabled. Deformation math is identical to Guide Interpolation Mesh and Guide Shape Interpolation.
To use Guide Weights, first capture in the Guide Deform SOP using Guide Weights mode with Delete Capture Attributes disabled (or Capture Only mode), then bring the groom — now carrying
guides/weights attributes — into LOPs. Set this node to Guide Weights and point Deformer / Guides Prim at the corresponding guide curves on stage.
Guide Interpolation Mesh
Blends sparse guide curves to deform dense render-time curves using weights stored on a guide interpolation mesh. You need an animated skin mesh, guide curves (BasisCurves), and a guide interpolation mesh with guides/weights primvars as created by Guide Interpolation Mesh. The mesh acts as a spatial lookup table — every point encodes a guide blend recipe solved from biharmonic weights across the mesh, so nearby hairs naturally share similar guide influences.
Works well for fur, short hair, and many long hair styles where curves don’t get too tangled. For styles where tangling occurs, enabling Preserve Shape can help correct stretching and intersection artifacts. Choose this over Guide Shape Interpolation when you want explicit spatial control over guide influence regions via the mesh.
Surface Deform
Rigidly transforms each curve by a deformation frame computed from the skin’s rest position, surface normal, and tangent at the location closest to each curve root. As the skin animates the frame is updated and applied to the entire curve. Only requires the animated skin mesh with a rest primvar containing rest-pose surface positions.
Best for short fur, stubble, or simple rigs where skin deformation alone is sufficient. Not suitable for long hair that bends significantly or styles that need to be preserved — switch to a guide-based method if curves stretch or lose shape during animation.
Point Deform
Deforms curves using point capture: each point on a groom curve is captured by one or more nearby deformer points, then follows their movement. The deformer can be a Mesh, TetMesh, or BasisCurves (guide curves). For BasisCurves deformers, enable Use Orient Attribute and provide restorient/orient quaternion primvars on the deformer — these define local frames at each deformer point, transferring both translation and rotation to captured groom points.
If pCaptPts/pCaptWeights primvars are present on the groom (pre-computed on the SOP side), they are used directly at render time. Otherwise, the Hydra procedural computes and caches capture using the parameters on this node. Enable Smooth Capture / Tet Capture with a tet mesh deformer to get smooth deformation without chunking artifacts.
A general-purpose point capture method, not specifically developed for hair. Can be an advantage when guide interpolation produces blending artifacts, or when you need direct one-to-one tracking (set Maximum Points to 1). Smooth tet capture can give good results for dense structures like braids. Results depend heavily on deformer quality and capture settings.
There is overlap between these methods, and the best choice depends on the groom. You can also split your groom into separate prims and use different deform methods where appropriate — for example, Guide Interpolation Mesh for the main body fur and Point Deform for stray whiskers.
How deformation works at render time ¶
This node only applies and configures API schemas — it does not deform any geometry in the LOP network. The actual deformation runs inside Karma (or other renderers) during rendering, executed by the HD_HairDeform Hydra scene index plugin. The plugin intercepts BasisCurves prims tagged with HoudiniHairDeformAPI, reads the deform relationships and capture parameters, and replaces each prim’s points primvar with freshly deformed positions on every render sample.
The plugin maintains an internal cache keyed by prim path. Capture data — point capture weights, surface projection data, guide influence weights — is computed once and reused across frames. The cache is invalidated automatically when topology changes, for example if the skin mesh or guide curves change their point count between frames.
Parameters ¶
Groom Primitive
Pattern matching one or more BasisCurves primitives on the input stage. All matched prims get tagged with the hair deform procedural and configured with the same deformer relationships. Non-curve prims matching the pattern are skipped.
Enable Deformation
When off, no deformation is applied at render time — the groom curves keep their authored positions. The Preserve Shape solve still runs if enabled, using the rest primvar as the initial shape.
Deform Method
Controls how the groom curves deform at render time. Each method needs a different combination of inputs.
Guide Shape Interpolation
Captures hairs against nearby guides by comparing arc-length-sampled curve shapes — guides do not need to match groom topology or length. Deformation method is equivalent to the one used in Guide Interpolation Mesh and Guide Weights mode. Requires Skin Prim (Mesh) and Deformer / Guides Prim (BasisCurves).
Guide Weights
Blends nearby guide curves using guides/weights primvars already on the groom curves (for example, from the Hair Generate SOP with Create Guide & Weight Attribs enabled). Requires Skin Prim (Mesh) and Deformer / Guides Prim (BasisCurves). Does not use a guide interpolation mesh. Deformation method is equivalent to the one used in Guide Shape Interpolation and Guide Interpolation Mesh mode.
Guide Interpolation Mesh
Blends nearby guide curves using weights stored on an interpolation mesh. Requires Skin Prim (Mesh), Deformer / Guides Prim (BasisCurves), and Guide Interpolation Mesh (Mesh). The mesh encodes guide assignments across its surface, so nearby hairs naturally share similar guide influences. Deformation method is equivalent to the one used in Guide Shape Interpolation and Guide Weights mode.
Surface Deform
Rigidly transforms each curve by a deformation frame computed from the skin’s rest position, normal, and tangent at the curve’s root point. Requires Skin Prim (Mesh). Does not use a deformer prim. Fast and simple, but only suitable for short grooms where skin deformation alone gives acceptable results.
Point Deform
Deforms curves using point capture against a deformer. Requires Deformer / Guides Prim. Mesh and TetMesh are always supported. BasisCurves are supported only when Use Orient Attribute is enabled, providing quaternion-based frame transforms instead of topology-derived ones. Does not use a skin mesh.
Skin Prim
The skin mesh the groom is attached to. Must be a Mesh with rest primvar and animated points attribute. Surface Deform, Guide Interpolation Mesh, and Guide Weights use this to compute skin-relative transforms.
Deformer / Guides Prim
The deformer primitive. The required type depends on the deform method:
-
Guide Weights / Guide Interpolation Mesh: Provide BasisCurves (guide curves) with
restprimvar and animatedpointsattribute. -
Point Deform: Provide a Mesh or TetMesh with
restprimvar and animatedpointsattribute. BasisCurves are also supported, but only with Use Orient Attribute enabled andrestorient/orientquaternion primvars.
Visible when Deform Method is Guide Weights, Guide Interpolation Mesh, or Point Deform.
Guide Interpolation Mesh
A Mesh with per-point guides, guides:lengths, weights, and weights:lengths primvars defining which guide curves influence each region of the mesh. Groom curve roots are projected onto this mesh to look up their guide blend weights.
Visible only when Deform Method is Guide Interpolation Mesh.
Use Orient Attribute
When enabled, builds point-deform transforms from deformer orientation primvars (restorient and orient quaternions) instead of deriving transforms from deformer neighbourhood topology.
This is required when using BasisCurves as the Deformer / Guides Prim in Point Deform, because curve topology does not provide stable neighbourhood-based transforms. Orient primvars solve this by providing explicit frame information: the orientation change (delta rotation) between restorient and orient is extracted and applied directly to captured groom points, enabling twist-aware deformation. Also works with Mesh and TetMesh deformers for more reliable frame computation.
When enabled, the deformer must provide:
-
restorientprimvar (rest pose quaternion) -
orientprimvar (deformed pose quaternion)
Orient Blend
Blends between position-only deformation (0) and full orient-augmented deformation (1) for the Guide Weights and Guide Interpolation Mesh methods. Only active when Use Orient Attribute is enabled. At 0, curves are positioned by blending guide translations only. At 1, guide orientations are also blended and applied to each deformed curve. Intermediate values mix both contributions.
Smooth Capture / Tet Capture
Enable this to use connectivity-aware smooth capture instead of BVH point capture. Smooth capture is equivalent to the Point Capture SOP, while BVH capture is equivalent to the capture built into the
Point Deform SOP. Smooth capture prevents geometry bleed-through between neighboring features and gives smoother results, especially with small capture radii. Requires the deformer to be a Mesh or TetMesh.
Only visible when Deform Method is Point Deform.
Guide Shape Interpolation ¶
Max Candidates
Number of nearby guide root points to consider when assigning guides to each hair. Higher values improve assignment quality at the cost of performance.
Min Guides
Minimum number of guides kept for each hair. Guides with weights below Weight Threshold are normally dropped, but this many are always kept — the highest-weighted guides are retained even if they fall below the threshold. Increase this to ensure smoother blending in areas with few good guide matches.
Max Guides
Maximum number of guides blended for each hair. Only the best-scoring candidates (up to this count) are considered for weighting. Higher values allow more guides to contribute but increase memory and compute cost.
Blur Width
Controls the width of the Gaussian falloff applied to guide shape distances when computing blend weights. The algorithm compares each groom curve’s shape to nearby guide curves via arc-length sampling, then applies a Gaussian weight function to convert those distances into influence weights.
Increase this to make weighting wider so guides with slightly worse shape matches still receive significant weight, producing smoother, more diffuse blending. Decrease it to make weighting sharper so only guides with the best shape matches contribute, creating more distinct guide regions.
Weight Threshold
Guides with normalized weights below this value are dropped. At least Min Guides are always kept regardless of this threshold. Lower values keep more low-weight guides, producing smoother blending at the cost of more guides per hair.
Length Penalty Scale
Penalizes guide curves whose total arc-length differs significantly from each groom curve’s length. The penalty is the squared ratio difference: (guideLength / groomLength - 1)². At 0 (default), length differences have no effect and guides are chosen by shape match and proximity alone. Increase this to prefer guides with similar total length, which reduces visible stretching or compression when guides don’t closely match the groom’s proportions.
Capture ¶
These parameters control BVH point capture when Smooth Capture / Tet Capture is off. This is equivalent to the capture built into the Point Deform SOP.
Radius
Maximum distance (in world units) from each curve point to search for nearby deformer points. A smaller radius gives more localized deformation but may leave points uncaptured.
Minimum Points
If a curve point finds fewer deformer points than this, the search radius grows until it finds at least this many. This may cause discontinuities, but is usually better than leaving points undeformed.
Maximum Points
Maximum number of deformer points each curve point can be captured by. If more points fall within Radius, only the closest are kept. Lower values are faster and use less memory, but increase the chance of discontinuities.
Capture ¶
These parameters control smooth capture when Smooth Capture / Tet Capture is on.
Capture Radius
Maximum distance (in world units) from each projected location on the capture geometry to search for connected primitives. A smaller radius reproduces local animation more accurately but may produce chunking artifacts. Decrease this if you see geometry bleed-through; increase it if you see chunking.
Kernel Type
Function used to convert capture distances to capture weights. The kernel is integrated over the capture radius on the surface of the capture geometry, and the result is distributed to intersecting primitives.
Exponential Bump
Smoothest option. Works well for most cases.
Truncated Gaussian
Less smooth than Exponential Bump, but faster to compute.
Quadratic
Falloff is the normalized squared distance from the capture sphere boundary.
Linear
Falloff is the normalized distance from the capture sphere boundary.
Smoothing ¶
Smoothing Method
Controls how capture weights are smoothed to avoid artifacts from small capture radii.
Approximating (prefer extra smooth)
Gives the smoothest deformations, but follows the animation less accurately.
Interpolating (prefer extra accurate)
Follows the animation as accurately as possible while still smoothing out a small capture radius.
No smoothing
Applies no smoothing. With a small capture radius, this may produce visible chunking artifacts.
Smoothing Level
Amount of smoothing applied to the capture. Higher values give a smoother capture surface and smoother deformation. Increase this if the result looks too rough.
Capture Geometry Treatment ¶
Tet Mesh Treatment
Controls how tetrahedral meshes in the deformer are handled during capture.
Only consider the surface of the capture tet mesh
Only uses the triangular surface faces of the tet mesh, ignoring interior points.
Treat the capture tet mesh as a solid volume
Uses the entire tet mesh as a solid volume.
Ignore all tets in the capture geometry
Ignores tetrahedra in the capture geometry entirely.
Preserve Shape ¶
Runs a Cosserat rod quasi-static relaxation pass after deformation. This corrects stretching and bending artifacts by iteratively solving for physically plausible curve shapes, starting from the deformed positions.
Preserve Shape
Turn this on to enable the quasi-static relaxation pass.
Iterations
Number of solver iterations. Higher values converge more accurately but take longer.
Stretch Stiffness
Resistance to stretching along the curve. Higher values preserve rest-length edge lengths more strongly.
Bend Stiffness
Resistance to bending. Higher values make curves stiffer, preserving rest-pose curvature more strongly.
Ref Pos Strength
How strongly points are pulled back toward their reference (rest) positions. Acts as a soft constraint that attracts points toward their original shape.
Lock Roots
Keeps curve root points fixed during relaxation so they stay attached to the skin surface.
Preserve Clumps ¶
Applies soft constraints that pull curves toward nearby clump neighbors during the quasi-static solve, preserving relative position between hairs.
Enable
Enables clump constraints for the quasi-static solve. When on, each curve is attracted toward nearby curves weighted by Stiffness. Neighbors are found dynamically using Max Neighbors and Max Constraints. If clumppts/clumpdists primvars are already present on the groom, they are used as pre-computed targets instead, skipping the dynamic search.
Stiffness
How strongly each curve is pulled toward its clump neighbors.
Damping
Damping factor for the clump constraint. Higher values reduce oscillation in the clump stiffness solve.
Max Neighbors
Maximum number of nearby curves to consider as clump candidates for each curve. Higher values allow more clumping partners but increase solve cost.
Max Constraints
Maximum number of active clump constraints per curve. Only the closest candidates (up to this count) are kept. Lower values produce fewer but stronger clump pulls per curve.
| See also |