def _build( cls, **kw ): scale = kw.get( 'scale', skeletonBuilder.TYPICAL_HEIGHT ) scale /= 1.5 world = buildControl( 'main', shapeDesc=ShapeDesc( None, 'hex', AX_Y ), oriented=False, scale=scale, niceName='The World' ) parts = group( empty=True, name='parts_grp' ) qss = sets( empty=True, text="gCharacterSet", n="body_ctrls" ) masterQss = sets( empty=True, text="gCharacterSet", n="all_ctrls" ) exportRelative = buildControl( 'exportRelative', shapeDesc=ShapeDesc( None, 'cube', AX_Y_NEG ), pivotModeDesc=PivotModeDesc.BASE, oriented=False, size=(1, 0.5, 1), scale=scale ) parentConstraint( world, exportRelative ) attrState( exportRelative, ('t', 'r', 's'), *LOCK_HIDE ) attrState( exportRelative, 'v', *HIDE ) setAttr( '%s.v' % exportRelative, False ) #turn scale segment compensation off for all joints in the scene for j in ls( type='joint' ): setAttr( '%s.ssc' % j, False ) sets( qss, add=masterQss ) attrState( world, 's', *NORMAL ) connectAttr( '%s.scale' % world, '%s.scale' % parts ) connectAttr( '%s.scaleX' % world, '%s.scaleY' % world ) connectAttr( '%s.scaleX' % world, '%s.scaleZ' % world ) #add right click items to the world controller menu worldTrigger = Trigger( str( world ) ) qssIdx = worldTrigger.connect( str( masterQss ) ) #add world control to master qss sets( world, add=masterQss ) sets( exportRelative, add=masterQss ) #turn unwanted transforms off, so that they are locked, and no longer keyable attrState( world, 's', *NO_KEY ) attrState( world, ('sy', 'sz'), *LOCK_HIDE ) attrState( parts, [ 't', 'r', 's', 'v' ], *LOCK_HIDE ) controls = world, exportRelative namedNodes = parts, masterQss, qss return controls, namedNodes
def createLineOfActionMenu( controls, joints ): ''' deals with adding a "draw line of action" menu to each control in the controls list. the line is drawn through the list of joints passed ''' if not joints: return if not isinstance( controls, (list, tuple) ): controls = [ controls ] joints = list( joints ) jParent = getNodeParent( joints[ 0 ] ) if jParent: joints.insert( 0, jParent ) for c in controls: cTrigger = Trigger( c ) spineConnects = [ cTrigger.connect( j ) for j in joints ] Trigger.CreateMenu( c, "draw line of action", "zooLineOfAction;\nzooLineOfAction_multi { %s } \"\";" % ', '.join( '"%%%d"'%idx for idx in spineConnects ) )