MEL How-To #81 | ||
| ||
How do I find the deformers influencing an object?To find the skinClusters (smooth bind) and its joints influencing a polymesh: findRelatedSkinCluster myObject; // Result: skinCluster1 // skinPercent -q -t skinCluster1 "myObject.vtx[*]"; // Result: joint1 joint2 joint3 joint4 // For a NURBS object: findRelatedSkinCluster myNurbsObject; // Result: skinCluster2 // skinPercent -q -t skinCluster2 "myNurbsObjects.cv[*]"; // Result: joint5 joint6 joint7 joint8 // To find clusters, jointClusters (rigid bind), joints and lattices influencing an object: proc string getShape( string $xform ) { string $shapes[]; $shapes[0] = $xform; if ( "transform" == `nodeType $xform` ) // If given node is not a transform, assume it is a shape // and pass it through { $shapes = `listRelatives -fullPath -shapes $xform`; } return $shapes[0]; } // Returns an array of the 'cluster', 'jointCluster', // or 'lattice' nodes influencing the specified objects. // Note that a 'jointCluster' is also a 'cluster'. // $obj: The object to query. // $deformerType: "cluster", "jointCluster" or "lattice". global proc string[] findRelatedDeformer( string $obj, string $deformerType ) { string $related[]; string $longName = getShape( $obj ); string $shortName[] = `ls -sn $longName`; string $deformers[] = `ls -type $deformerType`; for ( $deform in $deformers ) { string $geometry[]; switch ( $deformerType ) { case "cluster": case "jointCluster": { $geometry = `cluster -q -g $deform`; break; } case "lattice": { $geometry = `lattice -q -g $deform`; break; } } for ( $g in $geometry ) { if ( ( $g == $longName ) || ( $g == $shortName[0] ) ) { $related[`size $related`] = $deform; } } } return $related; } // Returns the 'joint' nodes related to a 'jointCluster', // or the 'clusterHandle' nodes related to a 'cluster'. // or the 'joint' nodes related to a 'skinCluster'. global proc string[] findDeformerDAGs( string $deformerNode ) { string $DAGs[]; string $connect[] = `listConnections -source true ( $deformerNode + ".matrix" )`; for ( $c in $connect ) { $DAGs[`size $DAGs`] = $c; } return $DAGs; } | ||
Copyright ©2005 by Bryan Ewert, maya@ewertb.com Maya is a Registered Trademark of Alias |