MEL command reference
The commands available are:
wmWigClump
: Clump creation and handling.wmWigCoil
: Coil creation and handling.wmWigCollide
: Configuring intersections and collisions.wmWigColours
: Setting hair color.wmWigConflictingStrands
: Detect and zap conflicting strands.wmWigCreate
: Creating fur sets.wmWigCurves
: Creating curves from fur nodes.wmWigDeformer
: Using guide curve deformers.wmWigDetectClumps
: Detects clumps within a fur set.wmWigDisplayProperty
: Display properties.wmWigElasticRod
: Elastic rod.wmWigExport
: Export strand data.wmWigFieldCmd
: Field solver creation and handling.wmWigHarmonicSolver
: Harmonic solver.wmWigInfo
: Shows information about the fur set.wmWigIO
: Transfer Wig scenes to other packages.wmWigMerge
: Merges two or more fur sets.wmWigPaint
: Creates paintable meshes allowing you to paint values (density, etc.) onto the surface.wmWigSelect
: Select strands within the fur set.wmWigShotSculpt
: Modify the shotsculpt characteristics of strands.wmWigSkinning
: Modify skinning.wmWigStochasticDeform
: Deform .wmWigStrandAttr
: Add/remove strand attributes.wmWigStrands
: Work with strands directly.wmWigVertexUVs
: Add or edit per-vertex UV sets on furNodes.
There is also a special set of Wig Braid commands.
General information on MEL commands
All the wmWig
commands work like standard Maya commands:
- They're undoable.
- You can pass one or more nodes as parameters, to only apply the command to those nodes. If you don't pass at least one node name as a parameter, the command applies to the current selection. If you don't pass a target as a parameter and don't have anything selected, you'll get an error.
- Use the
-h/-help
flag to get help on the command.
wmWigClump
Detect and manipulate clumps, including generation of corresponding curves and surfaces. Use with selected Fur node(s).
-ram/-rebindMembershipForActiveSet
Rebind Membership For Selected Curves.
-cfw/-wireclump
Create a clump from an existing wire.
-frz/-freezeclump
Internal flag to pass the evaluation of a new created clump node.
-cfr/-wireclumpRadius <double>
Radius to use with -wireclump. None by default, which means all strands.
-clp/-clumpPelt
Creates a clump node with pelt object.
-ccd/-checkDirection <double>
Check the strands direction with the central curve when creating clumps.
-clr/-clumpPeltRadius <double>
Uses a radius when creating clumps with pelts.
-cfs/-clumpFractionOfStrands <double>
Creates a clump node based on a percentage of the groom. Accepts all the same flags as -ccs/-createCurveFromStrands and -cfw/-wireclump.
-swc/-switchToCurveSet <long>
Switch to Clump Curve Set.
-ccm/-createClumpCurveSet
Create a new set for selected clump curves.
-sbc/-SwitchByClumpCurve
Switch to Clump Curve Set by Selected curve.
change
-mcs/-moveCurveToSet
Move a clump curve to a different set.
-acc/-addCurvesToClump <long>
Add existing curves to selected clump set.
-pcc/-pruneClumpCurve
Get rid of those clump curves with no hair bound.
-pcs/-pruneClumpSet
Get rid of those set group nodes with no clump curves attached.
-lc/-lockClumpCurves
Lock clump curves.
-ulc/-unlockClumpCurves
Unlock clump curves
-uos/-updateOriginalShapesForClumpedStrands
Update original shapes for clumped strands.
-rst/-resetClumpStrandLength
Get clumped strand length as the same as clump curve.
-rcs/-resizeCurveFromStrands <double>
Resize the selected curves to be as long as the longest neighboring strand (0.5 radius)
-ns/-noScale
Do not change the length of strands.
-b/-searchBindStrands
When updating curve lengths, this flag looks for those bind strands and ignore the radius
-grw/-growOrTrimCurve
Working with rcs flag to grow or trim the curves according to the surrounding strands
-jtr/-jitterClumpStrands <double> <double>
Jitter the length of clump strands within given range
-eff/-jitterEffects <double>
Percentage of jittering.
-rcc/-RecoverClumpCurves
Recover clump NURBS curves from clump information saved in the fur.
-rcr/-recoverClumpCurvesClumpRegionName <string>
Recover clumps from the named clump region.
-edc/-editClumpsWithinRadius <double>
Edit selected clump curves with specified radius value.
-cer/-clumpEffectRadius <double>
Radius threshold that strands outside of the circle go to un-clumped set.
-ses/-setEnabledClumps <long>
Enable strands by specified clump set.
-sec/-enableClumpCurves
Enable strands by selected clump curves.
-cec/-clearEnabledClumps
Enable strands by selected clump curves.
-apc/-addPeltToClump <long>
Add pelt mesh to selected clump set.
-rcm/-RecalculateClumpMeshMemberShip
Recalculate Clump and strands MeshmemberShip.
-cdd/-clumpFromDetection
Makes editable clump nodes from a previous clump detection run. WARNING: Using the clump nodes alter the shapes of all the strands.
-cdr/-clumpFromDetectionClumpRegionName <string>
Use the named clump detection region.
wmWigCollide
Sets up volume selection meshes and intersection meshes for a Fur node. Use with a selected Fur node, and any meshes, fields, or Synapse SDF fields.
-addIntersectors/-ai
Add intersectors to selected Fur node: using all selected meshes.
-clearIntersectors/-ci
Clear intersectors from selected Fur node.
-clearCachedStrandCuts/-ccc
Clears any cached strand cuts saved on the selected Fur node: created by
intersectors (or any other process.)
-addVolumeSelectors/-av
Add volume selectors to selected Fur node: using all selected meshes, fields, or Synapse fields.
-clearVolumeSelectors/-cv
Clear volume selector from selected Fur Fur node.
wmWigCoil
Command to manipulate a coil node. Use with selected Coil node.
-connectCoilCurve/-ccc
Connect some curves to a coil node. If the curves do not have coil attributes, they are created and initialized with default values.
-disconnectCoilCurve/-dcc
Disconnect curves from a coil node. The curves keep their coil attributes.
-dumpCoilAttributes/-dca
Dumps Coil attributes to output curves.
Examples:
// Connects CurveShape1 to wmCoilNode1.
wmWigCoil -connectCoilCurve CurveShape1 wmCoilNode1";
wmWigColours
Color fur according to EXR files. Use with selected Fur node(s).
-colorFurByTexture/-cft <string exrFilePath>
Given a texture, assign the strand color by UV lookup.
-colorFurByTextureSet/-cfs <string exrDirectoryPath>
Given directory path, look for all textures and assign the strand color by UV lookup.
-startFromTipDistance/-std <double length> <string mode>
How far down from the tip to paint to. How this value is interpreted depends on the mode, which can be either "fraction" or "units". Default: 1.0 "fraction".
wmwigConflictingStrands
Detects and/or zaps conflicting strands inside a fur node. Strands are in conflict when they are intersecting or too close to each other. Use with selected Fur node(s).
-find/-f
Finds all the strands in conflict with another strand.
-zap
Fixes all conflicts by zapping appropriate strands.
-maxGroomRatio/-mgr <ratio>
Sets the maximal portion of the groom to be selected/zapped (0.1 = 10% of the groom).
-minHairOverlap/-mho <overlap_ratio>
Sets the minimal overlap length ratio for a hair to be selected/zapped (0.1 = 10% of the hair length).
-hairWidthScale/-hws <scale>
Sets the scaling to be applied to each hair before detecting conflicts.
wmWigCreate
Create Fur nodes on selected meshes. Use with selected mesh node(s). For normal execution, no flags are needed.
-createOnMesh/-cm
Make new fur on a selected mesh.
-density/-dns
Specify the strand density to use. If not set, defaults to 10. Only works with -createOnMesh
.
-createOnMeshFromBake/-cmb <int cvsPerStrand>
Make new fur on a selected mesh: based on curves found on a selected Bake Proxy node. You must supply how many CVs per strand. IMPORTANT: Right now - if the underlying Bake file comes from an Alembic conversion: it needs to have been created with wtBakeFromAlembicGroom.
-cvsPerStrand/-cvs
How many CVs per strand. If not set, defaults to 10. NOTE: Only works with -createOnMeshFromBake
Examples -
// Creates a FurNode on the object pCube1
wmWigCreate pCube1;
// Creates two FurNodes: one on pCube4, one on pCube2
wmWigCreate pCube4 pCube2;
// Creates a FurNode on the currently selected geo
wmWigCreate;
// Creates a FurNode on the currently selected geo, with density 30
wmWigCreate -dns 30;
wmWigCurves
Generates curves from Fur nodes. Use with selected Fur node(s).
-convertUsingCurveRatio/-ccr <float ratio>
Convert this ratio [0.0..1.0] of existing strands to curves. For example, if this is set to 0.2, 20% of the strands are converted to curves.
-convertUsingCurveDensity/-ccd <float density>
Convert enough strands to reach this density value of curves.
-convertUsingCurveCount/-ccc <int count>
Convert this specific number of strands to curves. The result may not be exact: for example, if you ask to create 100 curves, you may end up with 99 or 101.
-minimumStrandLength/-msl <float length>
Do not convert strands shorter than this length
-numCVs/-ncv <int number>
Sets the number of CVs on each generated curve. If not set, the curves default to using the same number of CVs as the input strands.
Clump curves:
-cullClumpCurvesUsingSelectedFaces/-ccf
Cull clump curves using selected faces. IMPORTANT: If you also have NURBS curves for the clumps, you'll need to delete them, and then get new ones from Fur node (i.e., using wmWig -rcc
).
-clumpRegionName/-crn <string name>
Which clump named region to use. If none is given, then the default region is used.
Examples -
// Convert 20% of the strands in the wmWigFurnode1 and wmWigFurnode2 fursets to curves
// with 6 CVs per curve, ignoring any strands shorter than 1.5cm.
wmWigCurves -cur 0.2 -msl 1.5 -ncv 6 wmWigFurNode1 wmWigFurNode2;
// Converts 50 of the strands on the wmWigFurnode3 to curves (with the same number of CVs
// as the original strands), with the curve density controlled by the specified map.
wmWigCurves -cun 50 -amc /path/to/map/file wmWigFurNode3;
wmWigDeformer
Lets you create guide curve deformers from a set of curves.
Note
Guide curve deformers only work when your groom is locked. Refer to Guide curve deformers for full details.
Creates a guide curve deformer node for the given Fur node. The guide curves are created from Maya NURBS curves. Use with selected Fur node(s), and then selected curve nodes or curve node group.
-guideCurveDeformer/-gcd
Create guide curve deformer.
-name/-n <string name>
Name of the created deformer node.
-clumpRegionName/-crn <string name>
Which clump named region to use. If none is given, then the default region is used.
-bindPoseFilename/-bpf <string filePath>
The filename for the bind file.
-bindDeformer/-bd
Run an explicit re-bind on one or more deformers with the current state.
Note
Creating a new deformer also does a bind, so you only need to run this operation if you want to re-bind.
-retargetGuideCurveDeformer/-rtg
Reconnects guide curve deformer to a different fur node. Select the deformer to retarget, and the Fur node to retarget it to. NOTE: This is unlikely to give you a good result, and is intended for quick turn-arounds and experiments.
-zapClumpByCurveID/-zcc <curveID>
Zap all strands in the clump that a particular curve ID controls.
-zapClumpByStrandID/-zcs <strandID>
Zap all strands in the clump that a particular strand ID is in.
-getClumpStrandsByCurveID/-csc <curveID>
Returns the IDs of all the members (strands) of the clump that a particular curve ID controls.
-getClumpStrandsByStrandID/-css <strandID>
Returns the IDs of all the members (strands) of the clump that a particular strand ID is in.
Examples:
// For the guide curve deformer to work, clumps first must be
// generated on the Fur node. You could use the 'wmWigDetectClumps'
// command to do that. It would detect clumps in the existing Fur node
// and create control curves for them. Then this commands would use
// these curves as guide curves (so you could move the clumps
// by changing the curves.)
wmWigDetectClumps -dc2 0.01 -mnc;
wmWigDeformer;
wmWigDetectClumps
Refer to using_the_clump_tool
for how to use
the clump tool.
Detect clumps on one or more grooms. Use with selected Fur node(s).
-detectClumps0/-dc0
Clears all clump information off the selected Fur node.
-detectClumps1/-dc1 <long maximumCount>
-detectClumps2/-dc2 <double maximumFraction>
Detect clumps automatically using multi-dimensional clustering. You provide the maximum number or clumps you want, either by using:
-dc1
with a maximum count-dc2
with a maximum fraction [0.0-1.0] of the total number of strands
What maximum means is that the total number of clumps you actually get are at, or less than, the value you requested, because the clustering algorithm often collapses results together.
The following four options (-ni
, -cm
, -sd
, -sec
) only work with -dc1 and -dc2:
-numIterations/-ni <long count>
Number of refinement iterations. Fewer iterations give coarser results but are faster. Default: 20
-comparisonMethod/-cm <string name>
Which part of the hairs are compared when looking for clumps. Can be 'roots', 'tips', 'both' (that is, both roots and tips), 'triple' (checks roots, tips, and the midpoint), 'lowerhalf', 'upperhalf', 'lowerthird', 'upperthird', or 'all'. Default: 'both'
-seed/-sd <long seed>
The random number seed used in clump detection. Change this to change the clump detection results. Default: 0
-subdivideExistingClumps/-sec
Subdivide the existing clumps by a certain number of clumps (-detectClumps1/-dc1), or by a percentage of the clump's strands (-detectClumps2/-dc2). (The -detectClumps1/-dc1 and -detectClumps2/-dc2 flags tell it how many strands to subdivide the clumps into, either as a raw count, or as a percentage of the strands in the clump).
-detectClumps3/-dc3 <double radius>
Detect clumps automatically, using a 'smart clumping' algorithm. A
kernel is run, over all of the strands, near the tips, to detect how they are clustered together. The 'radius' value is the radius of an average clump of strands in your scene. Yyou should probably make a guess for this value, based on what you see in the scene. The number of clumps you get is determined by this process, and can't be provided by you.
The following two options (-nss
, -pen
) only work with -dc3
:
-numSubSamples/-nss <long count>
Sets number of strand span sub-samples to use. Less saves memory, more sometimes gives a better result Suggested: 10. Default: 1.
-penetration/-pen <float penetration>
This option is still experimental and may be removed.
Sets how deeply [0.0-1.0] the clump detection should search inside the mass of strands, to find more clumps. A value of 0.0 means don't search inside the mass of strands and to look for clumps mostly on the surface. Higher values mean to search inside the groom more deeply. Warning: High values may actually give less clumps, and always runs a lot more slowly.Suggested: 0.0 (or some low value). Default: 0.0.
The following options work with -dc1
, -dc2
, and -dc3
:
-makeNurbsCurves/-mnc
Make NURBS curves for clumps, (in addition to them being stored on the node).
-doColour/-dc
Display each clump as a different color.
-regionName/-rn <string name>
Name the clump detected results as a region. If none is given, then the default region is used.
-minTipToRootFilter/-mtf <float distance>
Ignore all strands where the tip and root are at or below a certain distance from each other.
-minStrandLengthFilter/-mlf <float length>
Ignore all strands at or below a certain length.
Examples:
// Clears all clumps on the selected Fur node.
wmWigDetectClumps -dc0;
// Creates clumps on the selected Fur node. The number of clumps is 1% of the total number of hair strands. Also, create a guide curve for each clump.
wmWigDetectClumps -dc2 0.01 -mnc;
// Creates 100 clumps on the selected Fur node. Does not create guide curves for the clumps.
` wmWigDetectClumps -dc1 100;`
// As above, but ignores any strands shorter than 1.5.
wmWigDetectClumps -dc1 100 -mtf 1.5;
wmWigDisplayProperty
-qap/-queryAllProps
Shows all properties.
-qp/-queryProp
Shows the specified property.
-sp/-setProp
Sets the specified property.
wmWigElasticRod
Compute the equilibrium of an elastic rod.
-rootTangent/-rt <vector>
Set the root tangent.
-rootCurvDir/-rcd <vector>
Set the root curvature direction.
-length/-len <value>
Set the rod's length in cm (default = 20cm).
-linearMassDensity/-lmd <value>
Set the rod's linear mass density in g/cm.
-naturalCurvature/-nc <value>
Set the rod's natural curvature in cm^-1.
-naturalTwisting/-nt <value>
Set the rod's natural twisting in rad.cm^-1.
-bendingStiffness/-bs <value>
Set the rod's bending stiffness in N.cm^2.
-twistingStiffness/-ts <value>
Set the rod's twisting stiffness in N.cm^2.
-numSegments/-ns <value>
Set the rod's number of segments.
-generateCurve/-gc
Compute the curve.
wmWigExport
Export strands data to an alembic (.abc) file. Use with selected fur nodes.
-file/-f <fileName>
Set the output file.
-widthPerVertex/-wpv
Export widths at the vertex level.
If not set, the widths are exported at the strand level instead.
-packCurves/-pc
Pack all strands in a single curve node.
-exportRatio/-er <ratio>
Set the ratio of strands to be exported from each of the selected fur nodes. A value of 0.1 means only 10% of the strands is exported.
Individual ratios can be set per fur node by creating an "exportPercentage" attribute on the fur nodes. If the "exportPercentage" attribute is set on a fur node, the fraction of strands to be exported is computed as:
exportRatio * exportPercentage/100
-exportClumpCurves/-ecc
Export only one curve per clump. This requires a ClumpID attribute to be defined on the fur nodes. The ClumpID attribute can be computed using the 'wmWigClump' command.
-clumpAttribute/-ca <attribute>
To be used with the -exportClumpCurves/-ecc option.
Set the name of the attribute defining the clump ID of each strand.
-forUnrealEngine/-ue
Export the groom attributes required for the Unreal Engine 4.
-tagGuideCurves/-tgc <ratio>
To be used with the -forUnrealEngine/-ue option.
Export an additional 'groom_guide' attribute that indicates which curves should
drive the animation of the groom.
Guide curves are picked from the strands based on the clump ID attribute - each
clump can have a single guide at most.
The final number of guides is given by numClumps * ratio.
Individual ratios can be set per fur node by creating an "guidesPercentage" attribute on the fur nodes. If the "guidesPercentage" attribute is set on a fur node, the fraction of guides to be exported is computed as:
ratio * guidesPercentage/100
-includeExternalGuides/-ieg
To be used with the -forUnrealEngine/-ue option.
The selected NURBS curves are exported as guides along the strands.
This allows one to export a specific set of guides curves if required.
This option is incompatible with the -tagGuideCurves/-tgc
option.
-overrideGroupId/-og <groupId>
To be used with the -forUnrealEngine/-ue
option.
Override the value of the "groom_group_id" attribute required by Unreal Engine 4.
By default, the groom_group_id is generated in the range [ 0; numFurNodes-1 ]
( 1 value per fur node ).
Examples:
// Export Converts 50 of the strands on the wmWigFurNode1 to curves.
wmWigExport -file \"/var/tmp/test.abc\" -packCurves wmWigFurNode1;
wmWigFieldCmd
Command to create and manipulate a field solver. Field solvers can be used to groom a large number of strands of a Fur node by directing their behavior. The solver can use curves to affect the flow.
The workflow is to create the Field node, with a surface which is used for solving. Then add connecting curves to control the solving and activate Solve Field node in the attribute editor or invoke the wmWigHarmonicSolver
command.
You can also add greater solving control by painting attributes across the proxy mesh node.
-createFieldSolverNode/-cfn
Given a FurNode or a Mesh, create a FieldSolver node connected to it.
-createFieldCurveNode/-cfc
Given a Curve and a FieldSolver node, binds both together.
-createFieldSourceNode/-cfs
Given a FieldSolver node, create a FieldSource node and binds it to the FieldSolver node bounds both together.
-subdivideMesh/-sdm
Given a FieldSolver node, subdivides its input proxy mesh.
-createPaintableMesh/-cpm <string name>
Given a FieldSolver with a connected mesh, creates a paintable attribute map on the proxy mesh and connect it to the FieldSolver node.
You can create paintable attribute map for the following:
- FollicleAngle
- WaveLengthMin
- Amplitude
- HelixDirection
- NormalRotation
- SelfRotation
- NormalFlowRotation
- WaveLengthMax
- StrandLengthMap
-addCurveSetToFieldNode/-asf
Given a FieldSolver with a connected mesh, creates a paintable attribute map on the proxy mesh and connect it to the FieldSolver node.
You can create paintable attribute map for the following:
// Creates a FieldSolver node for wmWigFurNode1.
wmWigField -createFieldSolverNode \"wmWigFurNode1\";
// Creates a paintable attribute map FollicleAngle for the selected FieldNode object.
wmWigField -createPaintableMesh \"FollicleAngle\" \"wmWigFieldSolve1\"";
wmWigHarmonicSolver
Handle harmonic solving. Use with selected Fur node(s).
-harmonicFieldSolver/-hfs
Solve harmonic field.
-harmonicFieldClear/-hfc
Clear harmonic field.
wmWigInfo
Get information from Wig and its nodes. Use with selected Fur node(s).
-numTotalStrands/-nts
Shows the number of strands.
-numVisibleStrands/-nvs
Shows the number of visible strands.
-numTotalVertices/-ntv
Shows the number of vertices.
-numVisibleVertices/-nvv
Shows the number of visible vertices.
-numClumps/-nc
Shows the number of clumps.
-clumpRegionName/-crn <string name>
Which clump named region to use. If none is given, then the default region is used.
-numClumpCurves/-ncc
Shows the number of clump curves.
-clumpRegionName/-crn <string name>
Which clump named region to use. If none is given, then the default region is used.
-realDensity/-rd
Shows the real density of the fur.
-area/-a
Shows the current total area of the surface (cm squared).
-lengthStatistics/-lns
Returns statistics about strand lengths: min, max, average.
-build/-b
Shows the Wig build version string.
-version/-v
Shows a simple Wig build version string.
Examples:
// Gives the number of visible strands on the Fur node wmWigFurNode1
wmWigInfo -nvs wmWigFurNode1;
wmWigIO
Command to transfer Wig scenes to other packages. Use with selected Fur node(s).
-exportWigArchiveFile/-ea <string archiveFilePath>
Exports Wig archive file for the selected Fur node. Needs to be
provided a Bake file that contains the other objects that this this
Fur node needs to operate:
- Surface mesh the Fur is growing from
- Curve objects for the guide curve deformers (if used)
- Intersectors meshes the Fur is using (if used)
-bakeFilePath/-b <string bakeFilePath>
Specify the Bake file to use with this Wig archive file.
wmWigMerge
Refer to merge_fur_sets
for more details on
merging (and emulating) fur sets.
Merges two or more Fur nodes. Use with selected Fur node(s): first Fur node is destination, other Fur nodes are sources.
-emulate/-e
Emulate strands on one Fur node by blending from one or more other Fur nodes.
-emulationBlendWeight/-ebw <double weight>
For use with -emulate/-e
.
Blend weight to use during emulation
-merge/-m
Merge strands on one Fur node by blending from other Fur nodes.
-mergeAlg/-ma <string name>
Selects the algorithm that should be used for merging/interpolating. Valid values are "distance" (default) and "shape". The distance-based method
produces smooth interpolations whereas the shape-based method preserves clumps.
Note that you only see a difference if -maxNumNeighbours
is greater than 1.
-densityTransfer/-dt <string mode>
Specify if/how the target density scale values should be set. Possible values are "none", "relative" and "absolute". A value of "none" doesn't transfer density
at all, "absolute" tries to match the absolute density whereas "relative" maps the highest density in the source to the master density in the target and adjusts all other densities so that the ratios remain intact. The default mode is "relative".
-radius/r <float radius>
Maximum search radius when searching for nearest neighbor strands. Default: 10.0
-maxNumNeighbours/mnn <integer n>
Maximum number of neighboring strands that should be used for interpolation. Default: 1
-relWeightRadius/-rwr <float radiusScale>
Scaling factor for the radius of influence around a strand. An average distance between
strand roots is determined internally which then gets scaled by this factor. With a
relWeightRadius of 1.0 you would just use that average distance, which would mean the
interpolation result is mostly be dominated by one strand. Use values greater than 1
to get smoother interpolation. Default: 4.0
-activeStrandRatio/-ast <float percentage>
This is a percentage value in the range [0, 1] that determines how much of the hair
(measured from the root) is taken into account when interpolating strands. For long
hair it may make sense to reduce this value so that the lower part of the hair gets
used. Lower values may make the interpolation smoother whereas larger values might
better preserve clumps. Default: 1.0 (entire strand is taken into account).
This only has an effect when the shape-based method is enabled.
-sigmaR/-sr <float sr>
Internal parameter of shape-based method affecting residual weights. You probably never
have to change that one. Default: 0.5
-sigmaN/-sn <float sn>
Internal parameter of shape-based method affecting normal weights. You probably never
have to change that one. Default: 1.0
-mergeTransferDensity/-mtd
Deprecated, use -densityTransfer instead. This option has no effect anymore.
-preserveTips/-pt
Preserve world-space tip positions when merging (to keep clumps intact).
-interpolateLength/-il <boolean>
If enabled, the length of the neighboring strands is interpolated and the target strand's
length are set to that value. If disabled, the vertices get interpolated directly
without trying to restore the length which may result in noticeable artifacts. Default: true.
wmWigPaint
The wmWigPaint command lets you create and manipulate
paint maps <paint_hair_density_map>
to
paint values (strand width, density, etc) on the subd surface.
Create and manipulate paint maps on Fur nodes and subdivision surfaces. Use with selected Fur node(s).
-rootPaintMesh/-rpm <double fraction>
Creates a paint mesh based on the root positions of every vertex in the furnode and its associated mesh.
-subdPaintMesh/-spm <long level>
Creates a paintable mesh-based subd. This can be of a higher resolution than the
surface mesh. Level is the subdivision level: 0, 1, 2, or 3.
-paintStrandWidthScales/-psw
For use with -rootPaintMesh/-rpm and -subdPaintMesh/-spm.
Include width scales on root paint or subd paint mesh.
-paintStrandDensityScales/-psd
For use with -rootPaintMesh/-rpm and -subdPaintMesh/-spm.
Include density scales on root paint or subd paint mesh.
Default: yes
-deletePaintMesh/-dpm
Delete the paint mesh from the selected Fur node.
-createSkinPaint/-csp
Adds paintable values to the skin mesh, and connects them to fur selected node.
If you use this, you must select at least one property (below) to create on the skin.
-skinWetnessValues/-swv
For use with -createSkinPaint/-csp
.
Include paintable map for wetness values on skin mesh.
-skinFlexibilityValues/-sfv
For use with -createSkinPaint/-csp
.
Include paintable map for flexibility values on skin mesh. (Flexibility values can be used to control the effect of the guide curve deformer.)
-skinClumpDensityScales/-sds
For use with -createSkinPaint/-csp
.
Include paintable map for clump density scales on skin mesh.
-skinMaskEnablement/-sme
For use with -createSkinPaint/-csp
.
Include paintable map for strand mask enablement on skin mesh.
-deleteSkinPaint/-dsp
Removes paintable values to the skin mesh, and disconnects them from selected Fur node.
Examples:
// Creates a paintable mesh based on the second subdivision level of the mesh associated
// with wmWigFurNode1, to paint strand width values.
wmWigPaint -spm 2 -psw wmWigFurNode1;
// Creates a paintable mesh for the currently selected FurNode, as a root mesh based around
// 10% of the strands. Since the mode wasn't set, it defaults to creating a map to paint
// strand density.
wmWigPaint -rpm -rps 0.1;
// Adds paintable values for wetness to the skin mesh.
wmWigPaint -csp -swv wmWigFurNode1;
wmWigSelect
Lets you use a volume to select strands on the fur node. You can draw a volume that intersects the fur node, then use this command to select the strands that are inside or outside the volume.
Select strands on a fur node. Use with selected Fur node(s).
-volume/-v <string meshName>
Select using a mesh volume. You can select either the strands that are inside or outside the volume.
-inside/-in
Selects strands inside the selection volume (default).
-outside/-out
Selects strands outside the selection volume.
Examples:
// Selects all strands on wmWigFurNode1 that are inside the mesh pCube2.
wmWigSelect -v pCube2 wmWigFurNode1
// Selects all strands on the currently selected FurNode that are outside the mesh pSphere1.
wmWigSelect -v pSphere1 -out
wmWigShotSculpt
Control shot-sculpt characteristics of strands. Shotsculpting lets you make quick changes to your groom without having to rebake or create new grooms.
-mode/-m <string>
Mode.
Mode string is one of the following:
zap: Zaps strands in -strands list.
unzap: Unzaps strands in -strands list.
clearZap: Clears zapped strings list (-strands list is not used).
separate: Allows strands in -strands list to separate from surface.
attach: Attaches strands in -strands list to surface nondeformable: marks strands in -strands list to be non-deforming.
deformable: Marks strands in -strands list to be deforming.
-strands/-s <strandIndexListString>
String list of strands, separated by spaces, used with the -mode flag.
Example: "23 349 351 352 883 2882 2 3"
wmWigSkinning
Creates a skinning node for the given Fur node. The guide curves are created from the given Maya NURBS curves.
Use with selected Fur node(s), and then selected curve nodes or curve node group.
-createNode/-cn
Create a skinning node (binds against current state).
-name/-n <string name>
Name of the created node.
-skinningMode/-sm <string mode>
Set the initial skinning mode of the new skinning node.
Accepted values are: "curves", "surfaces" and "cages".
-clumpRegionName/-crn <string name>
Which clump named region to use. If none is given, then the default
region is be used.
-rebind/-rb
Run an explicit re-bind on one or more skinning nodes with the current state. Creating a new skinning node also does a bind, so you only need to run this operation if you want to re-bind.
-curveIndexRange/-cir <firstCurveIndex> <lastCurveIndex>
To be used when connecting a node.
Restrict the range of curves to be connected from the Figaro node to the skinning node. Example - connect the first 101 curves from the selected Figaro node:
wmWigSkinning -cn -cir 0 100;
wmWigStochasticDeform
Deform strands using random distributions. Use with selected Fur node(s).
-magnitude/-m <orthogonal> <tangential>
-rootPeriod/-rp <length>
-octaves/-o <numOctaves> <octaveRatio>
-strandRatio/-sr <ratio>
wmWigStrandAttr
Add or remove attributes on the strands. Use with selected Fur node(s).
-addProp/-ap <name>
Add a new strand property to the groom.
-remProp/-rp <name>
Remove an existing strand property from the groom.
-type/-t <type>
Set the type of the property to be added.
Accepted types:" WMWIG_STRAND_ATTR_CMD_TYPES( WMWIG_ATTR_STR ) ".
-dimension/-dim <dimension>
Set the dimension of the property to be added (i.e. the number of values per strand).
Default dimension is 1.
-getPropValues/-gpv <name>
Get the values of a specific strand property.
-setPropValues/-spv <name> <values>
Set the values of a specific strand property.
The <values>
argument must be a string containing a list of space separated values.
The number of expected values is: dim * numStrands.
-getPropFlags/-gpf <name>
Get the flags of a specific strand property:
GroomFile = 1 - Store in the groom file
BakeExport = 2 - Export in Bake files
Paintable = 4 - Can be painted in Maya
PaintDirty = 8 - Marks an attribute modified by the Maya paint tool (internal only)
Interpolated = 16 - Marks an attribute that can be interpolated
Displayable = 32 - Can be displayed in Maya ( by coloring the strands )
Renderable = 64 - Exported as a primvar in prman/katana
Serialize = 128 - Exported in the archive ( overrides groom file values )
-setPropFlags/-spf <name> <flags>
Set the flags of a specific strand property.
-cloneProperty/-cp <srcProperty> <dstProperty>
Copy the values of a strand property onto another one.
-transferProps/-tp <properties>
Transfer the properties across fur nodes.
For all selected fur nodes missing one of the given properties, this property is initialized
using the closest strands from the other fur nodes.
-addIntrProps/-aip
Add intrinsic properties to the groom. This also updates the root tangent vector of the strands.
-remIntrProps/-rip
Remove the intrinsic properties from the groom.
-updateRootCurvature/-urc
When used with '-aip', update the root curvature vector based on the shape of the strands.
-detectClumps/-dc <numClumps>
Detect clumps within the groom - create/initialize a ClumpID attribute on the strands.
-detectClumpsRadius/-dcr <radius>
Radius to be used for clump detection.
-detectClumpsNgbs/-dcn <num_ngbs>
Number of neighbouring strands to be used for clump detection.
-buildClumpCurves/-bcc
Build clump curves based ont the ClumpID attribute.
-flood/-fld <name> <value>
Assign the same <value>
to all strands for the property <name>
.
-findFlyAways/-ffa <radius>
Compute an attribute that represents the 'flyAwayness' of a strand, i.e. how much it differs
from the neighboring strands.
The radius gives the size of the search region when looking for neighbor strands.
-isolateFlyAways/-ifa <ratio>
Mask strands based on the attribute computed by the -ffa option.
The ratio gives the proportion of strands that are mask selected (0.1 = 10% of the groom).
-computeSaliencies/-csl <radius>
Compute the local strand saliencies.
-computeLength/-cl
Compute the strands length.
-computeLocalDensities/-cld <radius>
Compute the local strand densities.
wmWigStrands
Command to manipulate strands. Use with selected Fur node(s).
General:
-reshapeFromBake/-rbk <bool matchDistribution>
Reshapes the strands on a selected Fur node, based on curves found
on selected Bake Proxy node. You must also provide 'true' or 'false',
for whether you want to match the appearance of the distribution (which
is done by only enabling only the correct strands.)
-optimizeDensity/-odn
Makes sure the strand density scales on a fur node are normalized,
and adjust the master density to work with these new strand density
scales. (Example: Someone has painted the strand density scales on
a fur node to all be 0.6. But this would be the same as having them
all painted to 1.0, and having the master density lowered by a factor
of 0.6. Lowering the master density ultimately saves memory and speeds
things up.) No undo.
-recalculateDensity/-rd
Recalculate and update master density value on the Fur nodes. No undo.
-recalculateEnablement/-re
Recalculate all the strand enablement based on density calculations. No undo.
-reinterpolateDisabled/-rid
Reinterpolate the shapes of all disabled strands: so that when they are
re-enabled later on, they'll look more plausible. No undo.
-fixAll/-fix
Fix bad strands that might have been created during modeling or by degenerate surfaces. No undo.
-show/-sh
For use with -fixAll/-fix.
Show the strands that were fixed: by recoloring them.
-rootEnableAll/-rea <bool enablement>
Root enable/disable (truly enable) all of the strands.
Warning: Dangerous. No undo.
-randomlyColourAll/-rca
Apply random coloring to strands.
Locating strands:
-locateRoot/-lr <long strandID>
Place a locator at the base of the strand
-locateTip/-lt <long strandID>
Place a locator at the tip of the strand
Masking:
Masking operation flags:
-maskByIndexList/-mil
A masking operation flag: works with -maskAddToExisting and -maskConfineToExisting.
Mask enable only those strands listed on the command line.
-maskByFaceSelection/-mf
A masking operation flag: works with -maskAddToExisting and -maskConfineToExisting.
Mask enable only those strands growing from the selected faces on the Fur node's mesh.
-maskBySurfaceIntersection/-msi
A masking operation flag: works with -maskAddToExisting and -maskConfineToExisting.
Mask enable only those strands that intersect the geometry on the Fur node's mesh.
-maskByLengthRange/-mlr <float minLength> <float maxLength>
A masking operation flag: works with -maskAddToExisting and -maskConfineToExisting.
Mask enable all strands in a length range.
-maskInvert/-mi
A masking operation flag, but does not work with -maskAddToExisting and -maskConfineToExisting.
Use this to invert the effects of a previous mask operation.
-maskClear/-mc
A masking operation flag, but does not work with -maskAddToExisting and -maskConfineToExisting.
Use this to clear the effects of a previous mask operation.
Masking boolean flags:
-maskAddToExisting/-mae
This flag must be used along with a masking operation flag, such as
-maskByIndexList, -maskByFaceSelection, -maskBySurfaceIntersection, or -maskByLengthRange.
The strands chosen by the masking operation are added to the existing mask strands. (Like a boolean OR.)
-maskConfineToExisting/-mce
This flag must be used along with a masking operation flag, such as -maskByIndexList, -maskByFaceSelection, -maskBySurfaceIntersection, or -maskByLengthRange. The strands chosen by the masking operation are confined by the existing mask strands. (Like a boolean AND.)
Textures and UVs:
-checkTextureUVs/-cuv
Checks if texture UVs are different than they are on the surface.
-resetTextureUVs/-ruv
Resets texture UVs to be the same as they are on the surface.
Directional processing:
-rebuildAwayFromPosition/-rap
Rebuild all strands, so that they're facing away from a selected locator.
-rebuildTowardsPosition/-rtp
Rebuild all strands so that they're facing towards a selected locator.
-enableAwayFromPosition/-eap
Enabled all strands whose source faces are facing away from a selected locator.
-enableTowardsPosition/-etp
Enable all strands whose source faces are facing towards a selected locator.
wmWigVertexUVs
Add and edit per-vertex UV sets on fur nodes. Use with selected Fur node(s).
-create/-c
Create a new vertex UV attribute on the selected fur nodes.
-attrName/-an <name>
Set the name of the vertex UV attribute.
-projectOntoMesh/-pom
Initialize the vertex UV attribute from a mesh UV set. The strand vertices are projected onto the mesh and the corresponding UV values are obtained by interpolating the UVs at the corners of the nearest mesh face.
-uvSetName/-uvs <name>
Set the name of the mesh UV set to be used with -projectOntoMesh
.
Wig Braid Commands
To list the available commands, type wmBraidular
in the MEL console.
wmBraidFibersExport
Exports the fibers of the selected braid node in an Alembic file.
-file/-f <file_path>
Defines the path of the exported file (must be provided).
The extension of the file defines its type: .abc
for Alembic files.
-objectPath/-op
Defines the path of the node containing the fibers in the exported Bake file. If not specified, the node is created at the root of the Bake scene.
-skipUnrooted/-su
Do not export fibers not connected to the scalp.
-usePackedCurves/-upc
Use the packed curve representation when exporting.
-asBasisCurves/-abc
Use basis curves instead of NURBS curves when exporting.
-flattenScene/-fs
When exporting alembic files, do not create separate nodes for each braid. Instead, put all the fibers under a single parent node.
-forUnrealEngine/-ue
When exporting alembic files, produce the groom attributes required by Unreal Engine 4.
wmBraidMakeIdentity
Reset the transform of the selected braid curves.
This is command is similar to the Maya 'makeIdentity' command; i.e., it freezes the transformation of the given objects. However, this command properly handles the curve normals (i.e., it preserves the twisting of the braid).
-translate/-t <bool>
If this flag is true, only the translation is applied to the curve. If no flag is specified then all (t, r, s) are applied.
-rotate/-r <bool>
If this flag is true, only the rotation is applied to the curve. If no flag is specified then all (t, r, s) are applied.
-scale/-s <bool>
If this flag is true, only the scale is applied to the curve. If no flag is specified then all (t, r, s) are applied.
wmBraidRebuildPrepare
Store the normal/radius samples of a braid curve in a format that does not depend of the parameterization of the curve.
This can be used with wmBraidRebuildRestore
to preserve the position/value of the samples when rebuilding the curve.
wmBraidRebuildRestore
Restore the normal/radius samples of a braid curve from the data created in a previous call to wmBraidRebuildPrepare
.
-resetTwisting/-rt
Removes any twisting of the braid when restoring the normal samples.
-makeStraight/-ms
Straighten the braid curve, while preserving its length and twisting.
wmConnectBraidDeformer
Connect a deformer node to a braid curve and/or a collection of guide curves (Maya curves). This effectively transfers the guide attributes from the deformer node to the braid curve.
Use with selected deformer node and curve.
-rebind/-rb
Compute new bindings from the current pose of the braid and guide curves.
wmConnectBraidWindMotionNode
Connect a wind motion node to a set of braid curves.
This effectively transfers the guide attributes from the deformer node to the braid curve.
Use with selected wind motion node and curves.
wmConnectCurveToBraid
Connect some curves to a braid node.
The geometry of the braids is generated according to the braid attributes of the curves.
If the curves do not have braid attributes, they are created and initialized with default values.
Use with selected braid node and curves.
wmConnectMeshToBraid
Connect a scalp surface to some braid nodes.
The geometry of the braids is updated based on the scalp properties of the braid curves.
Use with selected mesh and braid nodes.
wmConnectTwistCurvesToBraid
Generate the appropriate connections between the selected twist curves and the corresponding braid curves. The orientation of the braids is updated interactively as the twist curves change.
wmDeserializeBraidAttr
Restore the braid properties from the string representation defined in the 'SerializedAttr' attribute of the selected curves.
This creates and initializes braid attributes according to the contents of the 'SerializedAttr' string.
The 'SerializedAttr' attribute is deleted from the curves.
If existing braid attributes on a curve are no longer compatible with a newer Braidular version,
the wmSerializeBraidAttr
/wmDeserializeBraidAttr
commands can be used for creating new compatible
attributes without losing their original value (i.e., this effectively converts older braid grooms
to newer braid grooms ).
wmDisconnectBraidDeformer
Disconnect deformer nodes from braid curves.
The deformer attributes are removed from the braid curves.
Use with selected deformer nodes.
wmDisconnectBraidWindMotionNode
Disconnect wind motion nodes from braid curves.
The wind motion attributes are removed from the braid curves.
Use with selected wind motion nodes.
wmDisconnectCurveFromBraid
Disconnect curves from a braid node.
The curves keep their braid attributes.
Use with selected curves.
wmDisconnectMeshFromBraid
Disconnect a scalp mesh from a braid node.
Use with selected mesh or braid nodes.
wmExportBraidCurves
Exports the centerline of the braid strands as Maya curves.
Use with selected braid nodes.
-keepConnection/-kc
Keep the curves connected to the braid node.
This ensures the curves are updated when the braids change.
wmExportBraidFlyAwayGuides
Exports guide curves for animating of the braid flyaways.
Use with selected braid nodes.
-keepConnection/-kc
Keep the guide curves connected to the braid node.
This ensures the curves are updated when the braids change.
-ratio/-r <value>
The proportion of guide curves to be generated among the flyaways. The default ratio is 0.2 (20% of flyAways are converted to guides).
-numIterations/-ni <value>
The number of iterations to be used when detecting flyaway clumps. Each detected clump is controlled by a single guide curve. The default is 20.
-segmentLength/-sl <value>
The average segment length on the resulting curves. Increasing this value globally reduces the number of CVs produced. The default is 0.5
wmExportBraidMeshes
Exports the braid strands as Maya meshes. Use with selected braid nodes.
-keepConnection/-kc
Keep the meshes connected to the braid node. This ensures the meshes are updated when the braids change.
wmFindBraidCurves
Search the DAG for curves with braid attributes.
wmMakeTwistCurvesFromBraid
Generate a twist curve for each selected braid curve (or each braid curve connected to the selected braid node).
This also creates a 'twistedCurvePath' attribute on each new twist curve which contains the DAG path to the corresponding braid curve. This attribute is used for connecting curves together (this command generates the twist curves but does not connect them).
-offset/-off <value>
Sets the distance between the twist curve and the braid curve.
wmReconstructBraids
Create a new braid node and connect all curves with braid attributes to it.
-lockTopology/-lt
Create the new braid node with "Lock Topology" enabled.
wmSerializeBraidAttr
Creates a new string representation of the braid properties defined on the selected curves. This string representation is available in a new attribute 'SerializedAttr' on each curve.
The original braid attributes are deleted from the curves.
If existing braid attributes on a curve are no longer compatible with a newer Braidular version, the wmSerializeBraidAttr/wmDeserializeBraidAttr commands can be used for creating new compatible attributes without losing their original value (i.e., this effectively converts older braid grooms to newer braid grooms).
wmSetBraidRefPose
Initialize the reference pose of the braids from their current state.
The reference pose is used for computing the topology of the braid when 'Lock Topology' is enabled on a braid node.
This means the braid maintains its shape when animated.
Use with selected braid nodes and/or curves.
-check/-c
Check if the reference poses are up-to-date (i.e. if they match the current poses of the braid curves).
The reference poses are not updated. Instead, the command returns the names of the curves whose reference pose is not up-to-date.
-checkExistenceOnly/-ceo
To be used with -check/-c. Check that the braid curves have a valid reference pose, but do not compare it against their current pose.