// =========================================================================== // Copyright 2018 Autodesk, Inc. All rights reserved. // // Use of this software is subject to the terms of the Autodesk license // agreement provided at the time of installation or download, or which // otherwise accompanies this software in either electronic or hard copy form. // =========================================================================== // // Procedure Name: // AEhairSystemTemplate // // Description: // Creates the attribute editor controls for the hairSystemNode // // Input Value: // nodeName // // Output Value: // None // global proc AEhsysBaldnessMapNew (string $attrName ) { setUITemplate -pst attributeEditorTemplate; attrNavigationControlGrp -label (uiRes("m_AEhairSystemTemplate.kBaldnessMap")) -at $attrName baldnessControl; setUITemplate -ppt; } global proc AEhsysBaldnessMapReplace (string $attrName ) { attrNavigationControlGrp -edit -at $attrName baldnessControl; } global proc AEhairSystemUpdateCollide( string $nodeName ) { int $collide = getAttr($nodeName + ".collide" ); int $selfCollide = getAttr($nodeName + ".selfCollide" ); editorTemplate -dimControl $nodeName "collideOverSample" (!$collide); editorTemplate -dimControl $nodeName "collideWidthOffset" (!($selfCollide||$collide)); } global proc _setVis( string $node, string $attr, int $state ) { string $controls[] = `editorTemplate -queryName $node $attr`; if( size($controls) == 1 ){ string $controlName = $controls[0]; if( `control -exists $controlName` ){ control -e -m $state $controlName; } } } global proc AEhairSystemUpdateSelfCollide( string $nodeName ) { int $collide = getAttr($nodeName + ".collide" ); int $selfCollide = getAttr($nodeName + ".selfCollide" ); //int $useNucleus = getAttr($nodeName + ".active" ); //editorTemplate -dimControl $nodeName "staticCling" (!$selfCollide && !$useNucleus); editorTemplate -dimControl $nodeName "staticCling" (!$selfCollide); editorTemplate -dimControl $nodeName "numCollideNeighbors" (!$selfCollide); editorTemplate -dimControl $nodeName "collideWidthOffset" (!($selfCollide||$collide)); } global proc AEhairSystemUpdateNucleus( string $nodeName ) { int $useNucleus = getAttr($nodeName + ".active" ); int $old = !$useNucleus; //int $selfCollide = getAttr($nodeName + ".selfCollide" ); //editorTemplate -dimControl $nodeName "staticCling" (!$selfCollide && !$useNucleus); _setVis( $nodeName, "stretchResistance", $useNucleus ); _setVis( $nodeName, "compressionResistance", $useNucleus ); _setVis( $nodeName, "bendResistance", $useNucleus ); _setVis( $nodeName, "twistResistance", $useNucleus ); _setVis( $nodeName, "collideStrength", $useNucleus ); _setVis( $nodeName, "collisionFlag", $useNucleus ); _setVis( $nodeName, "selfCollisionFlag", $useNucleus ); _setVis( $nodeName, "collisionLayer", $useNucleus ); _setVis( $nodeName, "maxSelfCollisionIterations", $useNucleus ); _setVis( $nodeName, "bounce", $useNucleus ); _setVis( $nodeName, "stickiness", $useNucleus ); _setVis( $nodeName, "restLengthScale", $useNucleus ); _setVis( $nodeName, "stretchDamp", $useNucleus ); _setVis( $nodeName, "selfCollideWidthScale", $useNucleus ); _setVis( $nodeName, "ignoreSolverGravity", $useNucleus ); _setVis( $nodeName, "ignoreSolverWind", $useNucleus ); _setVis( $nodeName, "extraBendLinks", $useNucleus ); _setVis( $nodeName, "solverDisplay", $useNucleus ); _setVis( $nodeName, "displayColor", $useNucleus ); _setVis( $nodeName, "repulsion", $old ); _setVis( $nodeName, "stiffness", $old ); _setVis( $nodeName, "lengthFlex", $old ); _setVis( $nodeName, "iterations", $old ); _setVis( $nodeName, "evaluationOrder", $old ); //_setVis( $nodeName, "noStretch", $old ); _setVis( $nodeName, "collideOverSample", $old ); _setVis( $nodeName, "stiffness", $old ); //_setVis( $nodeName, "collideWidthOffset", $old ); _setVis( $nodeName, "numCollideNeighbors", $old ); _setVis( $nodeName, "collideGround", $old ); _setVis( $nodeName, "groundHeight", $old ); _setVis( $nodeName, "gravity", $old ); _setVis( $nodeName, "drawCollideWidth", $old ); _setVis( $nodeName, "widthDrawSkip", $old ); } global proc AEhairSystemUpdateCollideGround( string $nodeName ) { int $collideGround = getAttr($nodeName + ".collideGround" ); editorTemplate -dimControl $nodeName "groundHeight" (!$collideGround); } global proc AEhairSystemUpdateDrawCollide( string $nodeName ) { int $drawCollide = getAttr($nodeName + ".drawCollideWidth" ); editorTemplate -dimControl $nodeName "widthDrawSkip" (!$drawCollide); } global proc AEhairSystemUpdateBendAnisotropy( string $nodeName ) { int $bendModel = getAttr($nodeName + ".bendModel" ); editorTemplate -dimControl $nodeName "bendAnisotropy" (!$bendModel); } global proc AEhairSystemUpdateNoiseMethod( string $nodeName ) { int $noiseMethod = getAttr($nodeName + ".noiseMethod" ); int $smoothNoise = ($noiseMethod > 0); editorTemplate -dimControl $nodeName "detailNoise" (!$smoothNoise); editorTemplate -dimControl $nodeName "noiseFrequencyU" (!$smoothNoise); editorTemplate -dimControl $nodeName "noiseFrequencyV" (!$smoothNoise); editorTemplate -dimControl $nodeName "noiseFrequencyW" (!$smoothNoise); } global proc AEhairSystemUpdateStartAttract( string $nodeName ) { float $startAttract = getAttr($nodeName + ".startCurveAttract" ); editorTemplate -dimControl $nodeName "attractionScale" ($startAttract == 0); editorTemplate -dimControl $nodeName "attractionDamp" ($startAttract == 0); } global proc AEhairSystemTemplate( string $nodeName ) { editorTemplate -beginScrollLayout; editorTemplate -suppress "baldnessMap"; editorTemplate -addControl "simulationMethod"; editorTemplate -addControl "displayQuality"; editorTemplate -label (uiRes("m_AEhairSystemTemplate.kUseNucleus")) -addControl "active" "AEhairSystemUpdateNucleus"; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kClumpandHairShape")) -collapse 1; editorTemplate -addControl "hairsPerClump"; editorTemplate -callCustom "AEhsysBaldnessMapNew" "AEhsysBaldnessMapReplace" "baldnessMap"; editorTemplate -addControl "subSegments"; editorTemplate -addControl "thinning"; editorTemplate -addControl "clumpTwist"; editorTemplate -addControl "bendFollow"; editorTemplate -addControl "clumpWidth"; editorTemplate -addControl "hairWidth"; AEaddRampControl ($nodeName+".clumpWidthScale"); AEaddRampControl ($nodeName+".hairWidthScale"); AEaddRampControl ($nodeName+".clumpCurl"); AEaddRampControl ($nodeName+".clumpFlatness"); editorTemplate -addControl "clumpInterpolation"; editorTemplate -addControl "interpolationRange"; editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kCollisions")) -collapse 1; editorTemplate -addControl "collide" "AEhairSystemUpdateCollide"; editorTemplate -addControl "selfCollide" "AEhairSystemUpdateSelfCollide"; editorTemplate -addControl "collisionFlag"; editorTemplate -addControl "selfCollisionFlag"; editorTemplate -addControl "collideStrength"; editorTemplate -addControl "collisionLayer"; editorTemplate -addControl -label (uiRes("m_AEhairSystemTemplate.kMaxSelfCollideIterations")) "maxSelfCollisionIterations"; editorTemplate -addSeparator; editorTemplate -addControl "collideOverSample"; editorTemplate -addControl "collideWidthOffset"; editorTemplate -addControl "selfCollideWidthScale"; editorTemplate -addSeparator; editorTemplate -label (uiRes("m_AEhairSystemTemplate.kSolverDisplay")) -addControl "solverDisplay"; editorTemplate -label (uiRes("m_AEhairSystemTemplate.kDisplayColor")) -addControl "displayColor"; editorTemplate -addSeparator; editorTemplate -addControl "bounce"; editorTemplate -addControl "friction"; editorTemplate -addControl "stickiness"; editorTemplate -addControl "repulsion"; editorTemplate -addControl "staticCling"; editorTemplate -addControl "numCollideNeighbors"; editorTemplate -addControl "collideGround" "AEhairSystemUpdateCollideGround"; editorTemplate -addControl "groundHeight"; editorTemplate -addSeparator; editorTemplate -addControl "drawCollideWidth" "AEhairSystemUpdateDrawCollide"; editorTemplate -addControl "widthDrawSkip"; editorTemplate -suppress "inputHair"; editorTemplate -suppress "diskCache"; editorTemplate -suppress "inputHairPin"; editorTemplate -suppress "inputForce"; editorTemplate -suppress "collisionData"; editorTemplate -suppress "nextState"; editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kDynamicProperties")) -collapse 1; editorTemplate -addControl "iterations"; editorTemplate -addControl "lengthFlex"; editorTemplate -addControl "evaluationOrder"; editorTemplate -addControl "startFrame"; editorTemplate -addControl "currentTime"; editorTemplate -addControl "stiffness"; editorTemplate -addControl "stretchResistance"; editorTemplate -addControl "compressionResistance"; editorTemplate -addControl "bendResistance"; editorTemplate -addControl "twistResistance"; editorTemplate -addControl "extraBendLinks"; editorTemplate -addControl "restLengthScale"; editorTemplate -addControl -label (uiRes("m_AEhairSystemTemplate.kNoStretch")) "noStretch"; AEaddRampControl ($nodeName+".stiffnessScale"); editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kStartcurveattract")) -collapse 0; editorTemplate -addControl "startCurveAttract" "AEhairSystemUpdateStartAttract"; editorTemplate -addControl "attractionDamp"; AEaddRampControl ($nodeName+".attractionScale"); editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kBend")) -collapse 0; editorTemplate -addControl "bendModel" "AEhairSystemUpdateBendAnisotropy"; editorTemplate -addControl "bendAnisotropy"; editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kForces")) -collapse 0; editorTemplate -addControl "mass"; editorTemplate -addControl "drag"; editorTemplate -addControl "tangentialDrag"; editorTemplate -addControl "motionDrag"; editorTemplate -addControl "damp"; editorTemplate -addControl "stretchDamp"; editorTemplate -addControl "gravity"; editorTemplate -addControl "dynamicsWeight"; editorTemplate -addControl "ignoreSolverGravity"; editorTemplate -addControl "ignoreSolverWind"; editorTemplate -addControl "disableFollicleAnim"; editorTemplate -addSeparator; editorTemplate -endLayout; editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kTurbulence")) -collapse 1; editorTemplate -addControl -label (uiRes("m_AEhairSystemTemplate.kIntensity")) "turbulenceStrength"; editorTemplate -addControl -label (uiRes("m_AEhairSystemTemplate.kFrequency")) "turbulenceFrequency"; editorTemplate -addControl -label (uiRes("m_AEhairSystemTemplate.kSpeed")) "turbulenceSpeed"; editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kCaching")) -collapse 1; editorTemplate -addControl "cacheableAttributes"; editorTemplate -suppress "playFromCache"; editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kShading")) -collapse 1; editorTemplate -addControl "hairColor"; AEaddRampControl ($nodeName+".hairColorScale"); editorTemplate -addControl "opacity"; editorTemplate -addControl "translucence"; editorTemplate -addControl "specularColor"; editorTemplate -addControl "specularPower"; editorTemplate -addControl "castShadows"; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kColorrandomization")) -collapse 1; editorTemplate -addControl "diffuseRand"; editorTemplate -addControl "specularRand"; editorTemplate -addControl "hueRand"; editorTemplate -addControl "satRand"; editorTemplate -addControl "valRand"; editorTemplate -endLayout; editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kDisplacements")) -collapse 1; editorTemplate -addControl "curl"; editorTemplate -addControl "curlFrequency"; editorTemplate -addSeparator; editorTemplate -addControl "noiseMethod" "AEhairSystemUpdateNoiseMethod"; editorTemplate -addControl "noise"; editorTemplate -addControl "detailNoise"; editorTemplate -addControl "noiseFrequency"; editorTemplate -addControl "noiseFrequencyU"; editorTemplate -addControl "noiseFrequencyV"; editorTemplate -addControl "noiseFrequencyW"; editorTemplate -addSeparator; editorTemplate -addControl "subClumpMethod"; editorTemplate -addControl "subClumping"; editorTemplate -addControl "subClumpRand"; editorTemplate -addControl "numUClumps"; editorTemplate -addControl "numVClumps"; editorTemplate -addSeparator; AEaddRampControl ($nodeName+".displacementScale"); editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kMultiStreaks")) -collapse 1; editorTemplate -addControl "multiStreaks"; editorTemplate -addControl "multiStreakSpread1"; editorTemplate -addControl "multiStreakSpread2"; editorTemplate -addControl "lightEachHair"; editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEhairSystemTemplate.kRenderStats")) ; editorTemplate -beginNoOptimize; editorTemplate -label (uiRes("m_AEhairSystemTemplate.kReceiveShadowsmentalray")) -addControl "receiveShadows"; editorTemplate -label (uiRes("m_AEhairSystemTemplate.kVisibleInReflectionsmentalray")) -addControl "visibleInReflections"; editorTemplate -label (uiRes("m_AEhairSystemTemplate.kVisibleInRefractionsmentalray")) -addControl "visibleInRefractions"; editorTemplate -suppress "primaryVisibility"; editorTemplate -suppress "castsShadows"; editorTemplate -suppress "motionBlur"; editorTemplate -suppress "doubleSided"; editorTemplate -suppress "opposite"; editorTemplate -suppress "shadingSamplesOverride"; editorTemplate -suppress "shadingSamples"; editorTemplate -suppress "maxShadingSamples"; editorTemplate -suppress "volumeSamplesOverride"; editorTemplate -suppress "volumeSamples"; editorTemplate -suppress "maxVisibilitySamplesOverride"; editorTemplate -suppress "maxVisibilitySamples"; editorTemplate -suppress "exportWidth"; editorTemplate -suppress "exportHeight"; editorTemplate -suppress "attachObjectId"; editorTemplate -endNoOptimize; editorTemplate -endLayout; AEshapeTemplate $nodeName; editorTemplate -addExtraControls; editorTemplate -endScrollLayout; }