MEL How-To #71 | ||
| ||
How do I determine what Blind Data types are defined and assigned?MEL includes 'blindDataType', 'polyBlindData' and 'polyQueryBlindData' commands to control and query Blind Data. It is these commands which are used by Maya's Blind Data Editor. To fully understand how and why Blind Data does what it does it's useful to know how Maya stores Blind Data within a scene. When you create a Blind Data Type in the Blind Data Editor, Maya creates a
‘ When you assign this Blind Data Type to a poly object, Maya creates a
‘ blindDataTemplate To find the nodes representing which Blind Data Types are currently defined in the scene: ls -type "blindDataTemplate";Example: string $blindDataTemplates[] = `ls -type "blindDataTemplate"`; for ( $template in $blindDataTemplates ) { int $id = `getAttr ( $template + ".typeId" )`; print ( "Blind Data ID #" + $id + " found.\n" ); }; Blind Data ID #1222 found. Blind Data ID #9001 found.The configuration for the Blind Data type is defined via its compound attribute ".bdUserInfo". You can use this attribute to determine the association type for the Blind Data, for example. string $blindDataTemplates[] = `ls -type "blindDataTemplate"`; for ( $template in $blindDataTemplates ) { int $id = `getAttr ( $template + ".typeId" )`; print ( "Blind Data ID #" + $id + " found.\n" ); // Get configuration info for this Blind Data int $compoundSize = `getAttr -size ( $template + ".bdui" )`; string $userInfoName; string $userInfoValue; string $attrInfoName; string $attrInfoValue; for ( $i = 0; $i < $compoundSize; $i++ ) { // String assignments expanded for clarity // start with node $attrInfoName = $template; // extend to array element for .bdUserInfo $attrInfoName += ( ".bdui[" + $i + "]" ); // extend to .bdUserInfoName $attrInfoName += ( ".bdun" ); $userInfoName = `getAttr $attrInfoName`; // start with node $attrInfoValue = $template; // extend to array element for .bdUserInfo $attrInfoValue += ( ".bdui[" + $i + "]" ); // extend to .bdUserInfoValue $attrInfoValue += ( ".bduv" ); $userInfoValue = `getAttr $attrInfoValue`; // Skip if name is blank if ( $userInfoName != "" ) { print ( $userInfoName + " = \"" + $userInfoValue + "\"\n" ); } } print "\n"; }; Blind Data ID #1222 found. typeTag = "groupID" assocType = "vertex" freeSet = "1" dataCount = "1" group = "int" Blind Data ID #9001 found. typeTag = "collisionType" assocType = "object" freeSet = "1" dataCount = "1" sector = "int" polyBlindData To find the nodes representing Blind Data that has been assigned to polymesh components: ls -type "polyBlindData"; // Result: polyBlindData1 polyBlindData2 // You'll need to do a bit more work to determine to which objects this polyBlindData is assigned. These nodes are part of the object's upstream graph, so you can use the listConnections MEL command to trace downstream from the polyBlindData node until you find the object at the end of the chain. If the Blind Data assignment is part of the object's Construction History then
it will be networked from the ‘ listConnections -shapes true -plugs true polyBlindData2.message; // Result: pCylinderShape1.blindDataNodes[0] // Object-Level Blind Data The ‘ listAttr -ud pCylinderShape1; // Result: BlindData9001 collisionAttr // Note: As of Maya v4.0 the 'polyQueryBlindData' MEL command is able to query the object-level Blind Data it creates. In previous versions of Maya it is not possible to query object-level Blind Data. Remember that you must specify (or select) the shape node to successfully retrieve Blind Data with an "object" association type. | ||
Copyright ©2005 by Bryan Ewert, maya@ewertb.com Maya is a Registered Trademark of Alias |