// =========================================================================== // 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. // =========================================================================== global proc addCurvesToHairSystem() { string $hsys[] = getSelectedHairSystems(); int $numHsys = size( $hsys ); if( $numHsys < 1 ){ warning( uiRes("m_doDeleteHairPB.kNoHairSystemSelected")); return; } int $i; int $numCurves = 0; for( $i = 0; $i < $numHsys; $i++ ){ string $hsysOutHairGroup = ""; string $hsysParent[] = `listTransforms $hsys[$i]`; if( size($hsysParent) > 0 ){ $hsysOutHairGroup = ($hsysParent[0] + "OutputCurves"); if( !objExists( $hsysOutHairGroup ) ){ $hsysOutHairGroup = `group -em -name $hsysOutHairGroup`; } string $follicles[] = `listConnections -shapes true ( $hsys[$i] + ".inputHair")`; string $follicle; for( $follicle in $follicles ){ if(size(`listConnections ($follicle + ".outCurve")`) > 0) { continue; } string $newCurve = `createNode nurbsCurve`; string $curveXform[] = `listTransforms $newCurve`; connectAttr ($follicle + ".outCurve") ($newCurve + ".create"); string $hairCons[] = `listConnections -plugs true ($follicle + ".outHair")`; string $parts[]; tokenize( $hairCons[0],"[]",$parts ); if(size($parts[1]) > 0) { string $backCons[] = `listConnections -plugs true ($follicle + ".currentPosition")`; if(size($backCons) == 0) { connectAttr ($hsys[$i] + ".outputHair[" + $parts[1] + "]") ($follicle + ".currentPosition"); } } parent -relative $curveXform[0] $hsysOutHairGroup; $numCurves++; } } } if($numCurves == 0){ warning (uiRes("m_addCurvesToHairSystem.kNoCurvesCreated")); } }