The HairMod modifier available since 3ds Max 8 is a world-space modifier controlling the hair generation parameters.
Properties
.byVertex (By_Vertex) : booleanGet/set the state of the "By Vertex" checkbox.
.ignoreBackfacing (Ignore_Backfacing) : booleanGet/set the state of the "Ignore Backfacing" checkbox.
.HairCount (Count) : integerGet/set the hair count. This is not the absolute number of hairs to be generated, as the final number of hairs is affected by other factors like density maps and cut maps.
.HairSegments (Segments) : integerGet/set the segments along the length of each hair.
.HairPasses (Passes) : integerGet/set the hair passes. Higher numbers increase the rendering time linearly and reduce the transparency of each pass.
.HairDensity (Density) : floatGet/set theHairDensity. Default is 100 percent.If a Density Map is assigned, the Hair Density value is used to scale the influence of the Density Map.
.HairScale (Scale) : floatGet/set theHairScale. Default is 100 percent.If a Scale Map is assigned, the Hair Scale value is used to scale the influence of the Scale Map.
.HairCutLength (Cut_Length) : floatGet/set the Cut Length. Default is 100 percent. If a Cut Map is assigned, the Hair Cut Length value is used to scale the influence of the Cut Map.
.HairRandScale (Random_Scale) : floatGet/set the Hair Random Scale value which controls the randomness of the hair scale. When this value is 0, all hairs are scaled according to the HairScale and Scale Map values. When set to 100, each hair can be scaled down between 0 and 100%. Default is 40 percent. If a Random Scale Map is assigned, the Hair Random Scale value is used to scale the influence of the Random Scale Map.
.HairRootThickness (Root_Thickness) : floatGet/set the Hair Root Thickness value which controls the thickness of the hair at the base. Default is 12. If a Root Thickness Map is assigned, the Hair Root Thickness value is used to scale the influence of the Root Thickness Map.
.HairTipThickness (Tip_Thickness) : floatGet/set the Hair Tip Thickness value which controls the thickness of the hair at the tip. Default is 0. If a Tip Thickness Map is assigned, the Hair Tip Thickness value is used to scale the influence of the Tip Thickness Map.
.HairDisplacement (Displacement) : floatGet/set the Hair Displacement value which controls the offset of the hair's root from the source surface. Default is 0. If a Displacement Map is assigned, the Hair Displacement value is used to scale the influence of the Displacement Map.
.HairInterpolateGuides (Hair_Interpolate_Guides) : booleanToggle the Guides Interpolation on and off. When turned on (default), the hair guides will be interpolated across the surface. When turned off, maximum one guide will be drawn from the center of each triangle face. In both cases, the Density value / map will be taken into account.
.MaterialOccludedAmb (Ambient_Diffuse) : floatGet/set the Occluded Amb value. Default is 40.
.MaterialTipColor (Tip_Color) : colorGet/set the Tip color. If a Tip Color Map is assigned, the Tip color will be multiplied by the Map color value to determine the final color.
.MaterialRootColor (Root_Color) : colorGet/set the Root color. If a Root Color Map is assigned, the Root color will be multiplied by the Map color value to determine the final color.
.MaterialHueVariation (Hue_Variation) : floatGet/set the Hue Variation value.This parameter specifies the range within which the Hue value of the hair color should be varied.Higher values result in hair strands with different colors.
.MaterialValueVariation (Value_Variation) : floatGet/set the Value Variation value.This parameter specifies the range within which the Value of the hair color should be varied.Higher values result in brighter/darker strands.
.MaterialMutantHairColor (Mutant_Color) : colorGet/set the Mutant Hair Color.Mutant Hairs are randomly selected and receive this color.Mutant hairs can be used to mix in hairs with a different (for example grey or white) color.
.MaterialPercentMutantHair (Mutant_Percent) : floatGet/set theMutantPercentage value.This parameter controls the percentage of hairs to receive the Mutant Hair Color.
.MaterialSpecular (Specular) : floatGet/set the Specular value.
.MaterialGlossness (Gloss) : floatGet/set the Glossiness value.
.MaterialSelfShadow (Self_Shadow) : floatGet/set the SelfShadow value. This parameter controls the magnitude of the self shadowing. A value of 0.0 defeats self shadowing, while a value of 100.0 results in maximum self shadowing.Default is 100.0
.MaterialGeomShadow (Geom_Shadow) : floatGet/set the Geom. Shadow value. Default is 100.0
.MaterialGeomMtlID (Geom_Mtl_ID) : integerGet/set the Geom. Mat. ID value. Default is 1
The Frizz effect calculates two Perlin noise fields and displaces the root and the tip of the hair. Both noise fields share the same frequency settings, and the same tip/root amplitudes. One of the noise fields is static relative to the hair.The second field can be animated through the hair over time to achieve effects like grassy fields in the wind with small computational overhead compared to real dynamics.
.FrizzRoot (Frizz_Root) : floatGet/set the Frizz Root value. Default is 15.5. This parameter controls the displacement of the hair at its root relatively to the surface normal. When Frizz Root is set to 0, the root of the hair is parallel to the surface normal.
.FrizzTip (Frizz_Tip) : floatGet/set the Frizz Tip value. Default is 130.0. This parameter controls the displacement of the hair's tip.
.FrizzFreqX (Frizz_Freq_X) : float .FrizzFreqY (Frizz_Freq_Y) : float .FrizzFreqZ (Frizz_Freq_Z) : floatGet/set the Frizz Frequency values in all 3 axes. These parameters control the frequency of the Frizz displacement noise fields.
.FrizzAnim (Frizz_Anim) : floatGet/set theFrizz Anim value which adjusts the bias between the contributions of the static and animated noise fields. When set to 0, only the static field affects the hair. When set to 1, only the animated field affects the hair. If Anim Speed is set to 0, then a value of 1 will produce an identical result to a setting of 0 (if Anim Speed is set to 0, both noise fields will be coincident).
.FrizzAnimSpeed (Frizz_Anim_Speed) : floatGet/set theAnim Speed value. It is a multiplier controlling the speed at which the second (animated) noise field moves through space. When set to 0,there will be no effect when increasing the Frizz Anim parameter. This value is multiplied by the X, Y, and Z components of the Frizz Anim Dir to determine the per frame offset of the animated noise field.
.FrizzAnimDir (Frizz_Anim_Dir) : point3Get/set theFrizz Anim Dir vector which controls the direction of the frizz animation. This vector is not normalized before use. This means that you can apply little tweaks to the values to achieve fine control over the speed of the animation on a given axes.
The kink displacement works similar to Frizz, but it evaluates noise lookups along the whole length of the guide.
.KinkRoot (Kink_Root) : floatGet/set the Kink Root value.
.KinkTip (Kink_Tip) : floatGet/set the Kink Tip value.
.KinkFreqX (Kink_Freq_X) : float .KinkFreqY (Kink_Freq_Y) : float .KinkFreqZ (Kink_Freq_Z) : floatGet/set the Kink Frequency values in all 3 axes.
Multi Strand generates clumps of hair by scattering multiple hair strands per each hair strand that would normally be rendered.
.MultiStrandCount (Multi_Strand_Count) : integerGet/set the Count value.This parameter controls how many hairs will be generated per clump.
.MultiStrandRootSplay (Root_Splay) : floatGet/set the Root Splay value.This parameter varies the offset from the center of the clump at the root.
.MultiStrandTipSplay (Multi_Strand_Tip_Splay) : floatGet/set the Root Splay value.This parameter varies the offset from the center of the clump at the tip.
.MultiRandomize (Multi_Strand_Random) : floatGet/set the Randomize value.This parameter varies the scale of each hair in the clump.
.dynamicsMode (Dynamics_Mode) : integerGet/set the Dynamics Mode.
Possible values are:
0 - None
1 - Live
2 - Precomputed
.simulationStart (Simulation_Start) : integerGet/set the Simulation Start value.
.simulationEnd (Simulation_End) : integerGet/set the Simulation End value.
.DynamicsGravity (Gravity) : floatGet/set the Gravity value.
.DynamicsStiffness (Stiffness) : floatGet/set the Stiffness value.
.DynamicsRootHold (Root_Hold) : floatGet/set the Root Hold value.
.DynamicsDampen (Dampen) : floatGet/set the Dampen value.
.collisionMethod (Collision_Method) : integerGet/set the Collision method.
Possible values are:
0 - None
1 - Sphere
2 - Polygon
.autoCollision: booleanToggle the "Use Growth Object" option on and off.Default is off.
.collisionNodes (Collision_Nodes) : node arrayGet/set the list of collision nodes.
.forceFields (Force_Fields) : node arrayGet/set the list of External Forces.
.displayShowGuides (Display_Show_Guides) : booleanToggle the "Display Guides" option on and off. Default is off.
.DisplayGuideColor (Guide_Color) : colorGet/set the Guide Color value.
.displayShowHairs (Display_Show_Hairs) : booleanToggle the "Display Hairs" option on and off. Default is on.
.DisplayHairColor (Hair_Color) : colorGet/set the Hair Guide Color value.
.DisplayHairPercent (Hair_Percentage) : floatGet/set the Display Percentage value.This parameter controls the percentage of hairs to be displayed in the viewports.
.DisplayMaxHairs (Max_Display_Hairs) : integerGet/set the Max. Hairs value.This parameter controls the absolute maximum number of hairs to be displayed in the viewports.
.displayHairAsGeometry (Display_Hairs_As_Geometry) : booleanToggle the "As Geometry" option on and off. Default is off. When set to true, the hair strands will be displayed as geometry. When set to false, the hairs will be displayed as lines.
.maps: texturemap arrayGet/set the texture maps assigned to the hair controls.
Possible indices into the texture map array are:
1 - Density Map
2 - Cut Map
3 - Scale Map
4 - Rand. Scale Map
5 - Root Thickness Map
6 - Tip Thickness Map
7 - Self Shadow Map
8 - Geom.Shadow Map
9 - Specular Map
10 - Glossiness Map
11 - Occluded Amb. Map
12 - Tip Color Map
13 - Hue Variation Map
14 - Value Variation Map
15 - Root Color Map
16- Mutant Color Map
17- Mutant Percentage Map
18 - Frizz Root Map
19 - Frizz Tip Map
20 - Frizz X Frequency Map
21 - Frizz Y Frequency Map
22 - Frizz Z Frequency Map
23 - Frizz Anim Map
24 - Anim Speed Map
25 - Kink Root Map
26 - Kink Tip Map
27 - Kink X Frequency Map
28 - Kink Y Frequency Map
29 - Kink Z Frequency Map
30 - Multi Strand Count Map
31 - Multi Strand Root Splay Map
32 - Multi Strand Tip Splay Map
33 - Multi Strand Randomize Map
34 - Dynamic Stiffness Map
35 - Dynamic Root Hold Map
36 - Dynamic Dampen Map
37 - Displacement Map
.mapEnables (Maps_Enable) : boolean arrayGet/set the elements of the array controlling whether to use the respective texture maps listed above. Setting the i-th element to false disables the texture map temporarily without removing it from the map slot - the capital "M" on the button turns into a lower-case "m". The indices into the array are identical to the ones listed above.
.mergeInstanceMaterial (Merge_Instance_Material) : booleanGet/set the state of the "Merge Material" checkbox in the "Instance Node" group of controls in the Tools rollout. When set to true, the material assigned to the instance node will be used.
Interface:HairMethods
The same modifier can be applied as instance to multiple scene nodes.
Some of the methods below provide an optional instance: keyword parameter. If supplied, only the instance of the modifier applied to the specified node will be affected. If not supplied, all nodes sharing the modifier will be affected.
<void> LaunchGUIinstance :<node>instance default value: undefined
Opens the Hair Style editor window. If the optional instance keyword parameter is supplied,only the hair instance applied tothe given node will be loaded in the Style editor.
Corresponds to pressing the "Style Hair..." button in the Tools rollout.
<void> RecombFromSplines<node>shapeNode instance :<node> instance default value: undefinedConverts the Hair to Mesh. If the optional instance keyword parameter is supplied, the hair from the given node will be converted. Corresponds to pressing the "Hair -> Mesh" button in the Tools rollout.
<void> ResetRest instance :<node> instance default value: undefinedResets the Rest. If the optional instance keyword parameter is supplied, the hair from the given node will be reset. Corresponds to pressing the "Reset Rest" button in the Tools rollout.
<void> RegrowHair instance :<node> instance default value: undefinedRegrows the Hair. If the optional instance keyword parameter is supplied, the hair from the given node will be regrown. Corresponds to pressing the "Regrow Hair" button in the Tools rollout.
<void> LoadPreset <filename> presetNameLoads the Preset with the given name. Corresponds to pressing the "Load" button in the "Presets:" group of controls in the Tools rollout.
<void> SavePreset <filename> presetNameSaves a Preset under the given name. Corresponds to pressing the "Save" button in the "Presets:" group of controls in the Tools rollout.
<void> CopyHairdo instance:<node>instance default value: undefined
Copies the Hairdo.If the optional instance keyword parameter is supplied, the hair will be copied from the given node.Corresponds to pressing the "Copy" button in the "Hairdo:" group of controls in the Tools rollout.
<void> PasteHairdo instance :<node> instance default value: undefinedPastes the Hairdo.. If the optional instance keyword parameter is supplied, the hair will be pasted onto the given node.Corresponds to pressing the "Copy" button in the "Hairdo:" group of controls in the Tools rollout.
<boolean> SetInstance <node> instanceSets the Instance to the given node.
<void> ClearInstance()Removes the Instance node.
<node> ConvertGuidesToSplines instance :<node> instance default value: undefinedConverts the Guides to Splines. If the optional instance keyword parameter is supplied, the hair from the given node will be converted. Corresponds to pressing the "Guides -> Splines" button in the Tools rollout.
<node>ConvertHairsToSplines instance:<node> instance default value: undefinedConverts the Hair to Splines. If the optional instance keyword parameter is supplied, the hair from the given node will be converted. Corresponds to pressing the "Hair -> Splines" button in the Tools rollout.
<node> ConvertToMesh instance :<node>instance default value: undefinedConverts the Hair to Mesh. If the optional instance keyword parameter is supplied, the hair from the given node will be converted. Corresponds to pressing the "Hair -> Mesh" button in the Tools rollout.