Here is a little mini-tutorial:
To use a pfx feather brush using a hair system:
- Select surface and do hair->createHair
options: uv count = desired row and columns of feathers
pointsPer hair = between about 2 and 4 depending on how much you want the hair to bend
length = approximate feather length
output = paint effects
- Edit hairSystem attributes:
hairsPerClump = 1
hairWidth = 0 (becomes brushWidth on the assigned brush)
clumpWidth = 0.001 (small but non-zero so clumpTwist still works)
- PaintEffects->getBrush: feathers->featherWhite.mel
- Select hair system then do Hair->"assign paint effects brush to hair"
Edit the brush that was created ("featherWhite1"):
tubesPerStep = 0
startTubes = 1 (places one feather at beginning of each hair... hair is like a pfx stroke)
elevation min/max = 0
gravity = 0 (as well as any other forces)
pathFollow = 1
twistRand = 0 (use the hairsystem twist to control twist, as well as the per follicle twistOffset)
leafSegments = 1 (so it is not too slow)
Now make the number of segments on the hair match the number of segments on the feathers. The path follow attracts each feather segment to the corresponding segment on the hair. If the hair has 4 segments and the feather 20, then the first 4 segments of the feather will be attracted to the hair segments, and the rest attracted to the hair extended beyond its end by 16 segments. This will look wrong. The number of segments on the hair is the segments used in creation(dynamic simulating segments) times the hairSystem subsegments. So if we created the hair with 4 segments lets set the subsegments to 5 (4*5=20 segments) and set the brush segments to 20. The feathers will still not exactly follow the hairs because of segment length preservation, as well as the segmentLengthBias. On "featherWhite" the segmentLengthBias is used to make the end segments shorter, which makes the feather tip come to a point. This is a bit problematic because the segments that are closer together at the end won't match the hair segments. If you make the lengthFlex = 1 on the brush, then the segments will fully stretch based on the path follow and the feathers will exactly lie on the hair, but this wipes out the effect of segmentLengthBias. It is thus probably better to use twigs instead of leaves, because the twig feature has a length ramp.
On the brush make the feathers with twigs instead of leaves:
leaves = OFF
twigs = ON
twigsInCluster = 2
numTwigClusters = 40
twigStart = 0.05
twigLength = 0.5
twigBaseWidth = .6
twigTipWidth = .2
twigLengthScale = profile shape of feather
With lengthFlex = 1 it should now exactly follow the hairs
One may also wish to increase the translucence under shading( the leaves had high translucence settings)
Note that feathers done this way are rather heavy and slow to playback.
MAPPED PLANES
I would recommend for most work using texture mapped planes instead of pfx feathers. However one can still use pfx in this workflow. To do this create the hair system as described above (step 1) now do the following:
- Paint effects->reset template brush (a default brush)
- Hair->assign pfx brush to hair system
- On the pfxHair node
drawAsMesh = ON (to preview the feather shape)
- On the brush
brushType = Mesh
softness = 0
flatness1 = 1
illuminated = 1
- On the hair system:
ClumpWidth = 0
hairsPerClump = 1
HairWidth = desired feather width
hairWidthScale = desired feather shape or all 1 if using texture alpha for feather cutout
subSegments adjust for smoothness or more shaping detail for feather
- Convert pfx to poly (or nurb) on the hair system and assign a feather shader. The feather shader could have a transparency map for the feather boundary, as well color, specular and bump map for the barbs. Bump maps are problematic for the barbs because of the small size. A better method would be to use an anisotropic shader with the anisotropic angle mapped for each side of the feather.
This setup should play back much faster, and the mapped planes will integrate better with the renderer than the paint effects feathers will.
Duncan