Cut Modifier
The Cut modifier trims hair strands to create length variation and shape. It's perfect for creating haircuts, trimming flyaways, and adding natural length variation to your groom.
What It Does
The Cut modifier controls strand length by:
- Trimming strands to a target length
- Adding variation for natural randomness
- Using profile curves for shaped cuts
- Supporting expressions for procedural control
Think of it as a virtual haircut tool that can create everything from subtle trims to dramatic length changes.
Core Parameters
Length (Cut Amount)
IMPORTANT: The Length parameter controls how much length to KEEP (not remove):
- 1.0 = Keep 100% (no cut)
- 0.8 = Keep 80% (cut 20%)
- 0.5 = Keep 50% (cut half)
- 0.0 = Remove entirely
This matches XGen's behavior and makes expressions more intuitive.
Range: 0.0-1.0, default 1.0
Examples:
- 0.95 = Slight trim (keep 95%)
- 0.7 = Moderate cut (keep 70%)
- 0.5 = Cut in half
Cut Scale (Profile Curve)
The profile curve controls how the cut varies along the strand length:
- Flat at 1.0 = Uniform cut (default)
- Ramp down = Taper toward tips
- Ramp up = Shorter at roots, longer at tips
- Custom shapes = Create specific cut patterns
The curve is evaluated from root (left) to tip (right).
Default: Flat line at 1.0 (no variation)
Variance
Random variation in cut length per strand:
- 0.0 = All strands cut to same length
- 0.5 = Moderate variation
- 1.0 = Maximum variation
Range: 0.0-1.0, default 0.0
Higher variance creates more natural, less uniform cuts.
Seed
Random seed for variance:
- Range: 0-100, default 0
- Change to get different random patterns
- Same seed = same result (repeatable)
FollicleScript Examples
Basic Random Trim
Slight Random Trim (Keep 80-100%):
rand3(0.8, 1.0, index)
Each strand keeps between 80-100% of its length.
Moderate Variation (Keep 70-95%):
rand3(0.7, 0.95, index)
More noticeable length variation.
XGen-Style "Remove X%"
Remove 1-3% from Each Strand:
1.0 - rand3(0.01, 0.03, index)
Keeps 97-99% of length (subtle trim).
Remove 2-5%:
1.0 - rand3(0.02, 0.05, index)
Keeps 95-98% of length.
Remove 10-20%:
1.0 - rand3(0.10, 0.20, index)
Keeps 80-90% of length (noticeable cut).
UV-Based Length Variation
Shorter at Bottom, Full at Top:
lerp(0.7, 1.0, v)
Bottom strands keep 70%, top strands keep 100%.
Shorter on Left, Full on Right:
lerp(0.6, 1.0, u)
Creates a diagonal cut pattern.
Gradient with Offset:
0.8 + v * 0.2
80% at bottom, 100% at top.
Center vs Edge
Shorter in Center, Longer at Edges:
0.7 + abs(u - 0.5) * 0.6
Center keeps 70%, edges keep 100%.
Longer in Center, Shorter at Edges:
1.0 - abs(u - 0.5) * 0.4
Center keeps 100%, edges keep 80%.
Per-Clump Variation
Each Clump Different Length:
rand3(0.75, 1.0, clump_id)
Each clump has consistent length, but clumps vary.
Clump-Based with Offset:
0.8 + rand(clump_id) * 0.2
Clumps vary between 80-100%.
Conditional Cuts
Top Half Full, Bottom Half Trimmed:
v > 0.5 ? 1.0 : 0.7
Top keeps 100%, bottom keeps 70%.
Random 10% Get Heavy Cut:
rand(index) < 0.1 ? 0.5 : 1.0
10% of strands cut to 50%, rest untouched.
First 100 Strands Shorter:
index < 100 ? 0.8 : 1.0
Useful for testing or specific effects.
Noise-Based Organic Variation
Organic Length Pattern:
0.7 + noise(u * 5, v * 5) * 0.3
Creates natural-looking length variation (70-100%).
World-Space Noise:
0.8 + noise(x, y) * 0.2
Length varies based on world position (80-100%).
Multi-Octave Noise:
0.7 + noise(u * 3, v * 3) * 0.2 + noise(u * 10, v * 10) * 0.1
Combines large and small scale variation.
Common Workflows
Basic Haircut
- Set Length to desired amount (e.g., 0.8 for 20% trim)
- Add Variance: 0.1 for natural variation
- Adjust Seed until you like the pattern
- Use Cut Scale curve for shaping if needed
Tapered Cut
- Set Length to 1.0 (no base cut)
- Edit Cut Scale curve:
- Start at 1.0 (root)
- End at 0.7 (tip)
- Creates natural taper toward tips
- Add Variance: 0.05 for subtle variation
Layered Cut
- Use expression:
lerp(0.6, 1.0, v) - Bottom layer keeps 60%, top keeps 100%
- Add Variance: 0.15 for natural layers
- Adjust lerp values for layer intensity
Flyaway Trim
- Use expression:
rand(index) < 0.05 ? 0.3 : 1.0 - 5% of strands cut to 30% (short flyaways removed)
- Rest untouched
- Adjust threshold (0.05) for more/fewer cuts
Organic Natural Cut
- Use expression:
0.8 + noise(u * 5, v * 5) * 0.2 - Creates organic 80-100% length variation
- No Variance needed (noise provides variation)
- Adjust noise frequency (5) for pattern scale
Cut Scale Curve Tips
Uniform Cut:
- Flat line at 1.0
- All strands cut equally
- Use with Variance for randomness
Taper to Tips:
- Start: 1.0 (root)
- End: 0.5 (tip)
- Creates natural taper
Bulge in Middle:
- Start: 0.8
- Middle: 1.0
- End: 0.8
- Longer in middle, shorter at ends
Sharp Cutoff:
- Flat at 1.0 until 80%
- Drop to 0.0 at 80%
- Creates hard edge
Combining with Other Modifiers
Cut + Clumping:
- Apply Cut after Clumping
- Maintains clump structure
- Trims clumped hair naturally
Cut + Frizz:
- Apply Cut before Frizz
- Frizz adds detail to cut edges
- Creates natural, textured ends
Cut + Coil:
- Apply Cut after Coil
- Trims coiled hair
- Maintains curl pattern
Common Issues
Cut Too Uniform
- Increase Variance
- Use expression with rand()
- Add noise-based variation
Cut Too Extreme
- Check Length value (remember: 1.0 = no cut)
- Verify expression returns 0.0-1.0 range
- Use clamp() in expressions
Some Strands Disappear
- Length too low (below 0.1)
- Expression returning 0.0
- Check minimum length in expression
Cut Doesn't Match Preview
- Regenerate strands
- Check Cut Scale curve
- Verify expression is valid
Technical Notes
- Cut is applied after all deformation modifiers
- Length parameter is a multiplier (1.0 = original length)
- Cut Scale curve is evaluated per strand segment
- Expressions are GPU-evaluated for performance
- Variance uses deterministic random (repeatable)
- Minimum practical length is ~0.1 (10%)
Performance Tips
- Cut modifier is very fast (simple length multiplication)
- Expressions add minimal overhead
- Complex noise patterns may be slower
- Use simple expressions when possible
---
Next: Simulate Modifier - Add physics to your hair Previous: Loc Modifier