Maya API How-To #08 | ||
| ||
How do I assign polygon objects (and individual face components) to a Shading Group?Given the MEL example: string $select = `ls -sl`; string $shadingGroup = "initialShadingGroup`; // Assign to Shading Group sets -e -forceElement $shadingGroup $select; Here's a static member function that I created to allow me to do the same thing: //******************************************************************** // Function: MShadingGroup::AssignToShadingGroup (static) // // Description: Assigns the provided DAG (and optional component) to // the specified Shading Group. // // Input: const MObject & shadingGroup: The Shading Group set. // const MDagPath & dagPath: The DAG. // const MObject & component: (optional) The DAG's // components. // // Output: (MStatus): The usual. // // Notes: dagPath must be the _shape_ node! // //******************************************************************** MStatus MShadingGroup::AssignToShadingGroup( const MObject & shadingGroup, const MDagPath & dagPath, const MObject & component ) { MStatus status; MFnSet fnSG( shadingGroup, &status ); if ( fnSG.restriction() != MFnSet::kRenderableOnly ) return MS::kFailure; status = fnSG.addMember( dagPath, component ); if ( status != MS::kSuccess ) { cerr << " ! MShadingGroup::assignToShadingGroup could not add Dag/Component to SG ! " << endl; } return status; } So, to duplicate the MEL commands above you would use something like this: MSelectionList selList; MDagPath dagPath; MObject component; MObject initialSG; MGlobal::getSelectionListByName( MString( "initialShadingGroup" ), selList ); selList.getDependNode( 0, initialSG ); MGlobal::getActiveSelectionList( selList ); MItSelectionList iter( selList ); for ( ; !iter.isDone(); iter.next() ) { iter.getDagPath( dagPath, component ); dagPath.extendToShape(); MShadingGroup::AssignToShadingGroup( initialSG, dagPath, component ); } Related How-To's | ||
Copyright ©2005 by Bryan Ewert, maya@ewertb.com Maya is a Registered Trademark of Alias |