コード例 #1
0
ファイル: core.py プロジェクト: ordinc/rigbits
def mirror_SDK(driverCtl):
    """
    Takes in a driver control and extrapolates out all the other
    information needed to mirror it's connected SDK's.

    Arguments:
        driverCtl (PyNode):

    Returns:
        None
    """

    # Getting The Opposite Driver
    t_driver = pickWalk.getMirror(driverCtl)[0]

    # Getting all the SDK Ctls + RHS Counterparts from Driver Ctl Name.
    driven_ctls_dict = {}
    for sdk_attrs in sdk_io.getConnectedSDKs(driverCtl):
        for sdk_attr in sdk_attrs:
            if pm.nodeType(sdk_attr.node()) in SDK_ANIMCURVES_TYPE:
                destination_ctl = sdk_io.getSDKDestination(sdk_attr.node())[0]
                driven_ctls_dict[destination_ctl] = pickWalk.getMirror(
                    pm.PyNode(destination_ctl))[0]

    # Removing any Already Existing SDK's from the target driver.
    for s_driven, t_driven in driven_ctls_dict.items():
        sdk_io.removeSDKs(t_driven, sourceDriverFilter=[t_driver])

    # Looping over the Drivens + Mirroring.
    for s_driven, t_driven in driven_ctls_dict.items():
        sdk_io.copySDKsToNode(sourceDriven=s_driven,
                              targetDriver=t_driver,
                              targetDriven=t_driven,
                              sourceDriverFilter=[driverCtl])
コード例 #2
0
ファイル: core.py プロジェクト: ordinc/rigbits
def get_driver_from_driven(drivenCtl):
    """
    Finds the Driver controls for a given driven ctl

    Arguments:
        drivenCtl (PyNode): A Driven Node to query.

    Returns:
        list [All found Driver Nodes]

    """
    driver_ctls = []

    retrieved_SDK_nodes = sdk_io.getConnectedSDKs(drivenCtl)
    retrieved_SDK_nodes.extend(sdk_io.getMultiDriverSDKs(drivenCtl))

    for rtv_attrs in retrieved_SDK_nodes:
        for rtv_attr in rtv_attrs:
            if pm.nodeType(rtv_attr) in SDK_ANIMCURVES_TYPE:
                try:
                    SDK_info = sdk_io.getSDKInfo(rtv_attr.node())
                    if SDK_info['driverNode'] not in driver_ctls:
                        driver_ctls.append(SDK_info['driverNode'])
                except:  # noqa: E722
                    pass

    return driver_ctls
コード例 #3
0
ファイル: core.py プロジェクト: ordinc/rigbits
def delete_current_value_keys(current_driver_val, node, sourceDriverFilter):
    """
    Arguments:
        node ():
        sourceDriverFilter ():

    Returns:
        n/a
    """
    sourceSDKInfo = sdk_io.getConnectedSDKs(
        node, sourceDriverFilter=sourceDriverFilter)
    sourceSDKInfo.extend(
        sdk_io.getMultiDriverSDKs(node, sourceDriverFilter=sourceDriverFilter))

    for source_sdk_attr, driven_ctl in sourceSDKInfo:
        source_sdk = source_sdk_attr.node()
        keys = sdk_io.getSDKInfo(source_sdk)['keys']

        for i, key in enumerate(keys):
            if key[0] == current_driver_val:
                pm.cutKey(source_sdk_attr.node(),
                          index=(i, i),
                          option="keys",
                          clear=1)