/** * Generates two global proc that enable the creation and adding of the * SoftVolumeSphere node and the SurfaceGenerator node. * author Hannes Ricklefs * NCCA 2005 * */ global proc createMetaball() { string $metaball = `createNode softVolumeSphere`; /*Get the transform*/ string $transform[] = `pickWalk -d up`; //select $transform[0]; string $surface = `createNode SurfaceGenerator`; string $mesh = `createNode -n "mbMesh#" mesh`; sets -add initialShadingGroup $mesh; string $polyNormal = `createNode polyNormalPerVertex`; connectAttr ($surface+".out_mesh") ($polyNormal+".inputPolymesh"); connectAttr ($polyNormal+".output") ($mesh+".inMesh"); connectAttr ($transform[0]+".worldMatrix") ($surface+".ellipsoid_TWorldMatrix[0]"); connectAttr ($transform[0]+".boundingBoxMin") ($surface+".ellipsoid_BBoxMin[0]"); connectAttr ($transform[0]+".boundingBoxMax") ($surface+".ellipsoid_BBoxMax[0]"); connectAttr ($metaball+".radius") ($surface+".ellipsoid_Radius[0]"); connectAttr ($metaball+".weight") ($surface+".ellipsoid_Weight[0]"); } global proc addMetaball() { string $ls[]=`ls -sl`; for($nn in $ls){ string $cs[]=stringArrayRemoveDuplicates(`listConnections -d 1 -t SurfaceGenerator $nn`); for($mbc in $cs){ string $metaball = `createNode softVolumeSphere`; /*Get the transform*/ string $transform[] = `pickWalk -d up`; connectAttr -na ($transform[0]+".worldMatrix") ($mbc+".ellipsoid_TWorldMatrix"); connectAttr -na ($transform[0]+".boundingBoxMin") ($mbc+".ellipsoid_BBoxMin"); connectAttr -na ($transform[0]+".boundingBoxMax") ($mbc+".ellipsoid_BBoxMax"); connectAttr -na ($metaball+".weight") ($mbc+".ellipsoid_Weight"); connectAttr -na ($metaball+".radius") ($mbc+".ellipsoid_Radius"); return; } } error "select an existing metaball"; }