コード例 #1
0
ファイル: GenericPropRig.py プロジェクト: rendermotion/RMPY
def SinglePropRig(Object, referencePositionControl):
    # if Object.__class__ == list :
    # elif Object.__class__ in [str,unicode]:
    GRS = RMGenericRigStructure.genericRigStructure()

    NameConv = nameConvention.NameConvention()
    bbMesh = RMRigTools.boundingBoxInfo(Object)
    CtrlPosition = cmds.xform(referencePositionControl, q=True, rp=True, worldSpace=True)
    NameList = Object.split(".")
    cntrlToMeshX = bbMesh.position[0] - CtrlPosition[0]
    cntrlToMeshY = bbMesh.position[1] - CtrlPosition[1]
    cntrlToMeshZ = bbMesh.position[2] - CtrlPosition[2]

    if len(NameList) > 1:
        Ctrl = RMRigShapeControls.RMCreateCubeLine(bbMesh.lenX, bbMesh.lenY, bbMesh.lenZ,
                                                   offsetX=-bbMesh.minDistanceToCenterX + cntrlToMeshX,
                                                   offsetY=-bbMesh.minDistanceToCenterY + bbMesh.lenY / 2 + cntrlToMeshY,
                                                   offsetZ=-bbMesh.minDistanceToCenterZ + bbMesh.lenZ / 2 + cntrlToMeshZ,
                                                   name=NameList[1])
        joint = cmds.joint(name=NameList[1] + "jnt")
    else:
        Ctrl = RMRigShapeControls.RMCreateCubeLine(bbMesh.lenX, bbMesh.lenY, bbMesh.lenZ,
                                                   offsetX=-bbMesh.minDistanceToCenterX + cntrlToMeshX,
                                                   offsetY=-bbMesh.minDistanceToCenterY + bbMesh.lenY / 2 + cntrlToMeshY,
                                                   offsetZ=-bbMesh.minDistanceToCenterZ + bbMesh.lenZ / 2 + cntrlToMeshZ,
                                                   name=NameList[0] + "Ctrl")
        joint = cmds.joint(name=NameList[0] + "jnt")

    Ctrl = NameConv.rename_name_in_format(Ctrl, {'objectType': "control"})
    ResetGroup = RMRigTools.RMCreateGroupOnObj(Ctrl)
    cmds.parent(ResetGroup, GRS.groups["controls"]["group"])
    rigJntGrp = cmds.ls("*SimpleRigJoints*")
    if len(rigJntGrp) == 0:
        jointGroup = cmds.group(empty=True, name="SimpleRigJoints")
        jointGroup = NameConv.rename_name_in_format(jointGroup, {})
        cmds.parent(jointGroup, GRS.groups["rig"]['group'])
    else:
        jointGroup = rigJntGrp
    RMRigTools.RMAlign(referencePositionControl, ResetGroup, 3)

    joint = NameConv.rename_name_in_format(joint, {})

    RMRigTools.RMAlign(referencePositionControl, joint, 3)
    ResetJoint = RMRigTools.RMCreateGroupOnObj(joint)
    cmds.parent(ResetJoint, jointGroup)
    # if cmds.objExists
    # for eachObject in Object:
    cmds.select(clear=True)
    cmds.select(Object)
    cmds.select(joint, add=True)
    cmds.skinCluster()
    cmds.parentConstraint(Ctrl, joint)
コード例 #2
0
ファイル: GenericPropRig.py プロジェクト: rendermotion/RMPY
def addNoiseOnControl(Object, Control):
    if Object.__class__ == list:
        pass

    elif Object.__class__ in [str, unicode]:
        Object = [Object]

    else:
        "Not Valid Arguments on Add Noise"
        return None

    Expresion = '''//{0}
    {0}.rotateX=`noise((time+{2})*{1}.frequency)`*{1}.amplitud;
    {0}.rotateY=`noise((time+{2}+30)*{1}.frequency)`*{1}.amplitud;
    {0}.rotateZ=`noise((time+{2}+60)*{1}.frequency)`*{1}.amplitud;
    {0}.ty=`noise((time+{2}+90)*{1}.frequency)`*{1}.movY + {1}.movY;
    '''
    if not isNoiseControl(Control):
        addAttributes(Control)

    for eachObject in Object:
        constraints = constraintComponents(gessFrom=eachObject)
        ResetGroup = RMRigTools.RMCreateGroupOnObj(eachObject, Type="child")
        for eachkey in constraints.constraintDic:
            cmds.delete(eachkey)
            cmds.parentConstraint(ResetGroup, constraints.constraintDic[eachkey]["affected"], mo=True)
        ExpressionNode = cmds.expression(name="NoiseMainExpresion",
                                         string=Expresion.format(ResetGroup, Control, random.uniform(0, 100)))