commands.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:config 作者: mindbender-studio 项目源码 文件源码
def connect_transform(driver, driven, source=WorldSpace, compensate=False):
    """Connect translation, rotation and scale via decomposeMatrix

    Arguments:
        driver (str): Absolute path to driver
        driven (str): Absolute path to driven
        source (str, optional): Either WorldSpace or LocalSpace,
            default WorldSpace
        compensate (bool, optional): Whether or not to take into account
            the current transform, default False.

    Returns:
        output (list): Newly created nodes

    """

    outputattr = ".matrix" if source == LocalSpace else ".worldMatrix[0]"

    assert cmds.objExists(driver), "%s not found" % driver
    assert cmds.objExists(driven), "%s not found" % driven

    decompose = driver + "_decompose"
    output = [decompose]

    if not cmds.objExists(decompose):
        decompose = cmds.createNode("decomposeMatrix", name=decompose)

        if compensate:

            multMatrix = cmds.createNode(
                "multMatrix", name=driver + "_multMatrix")

            # Compensate for drivens parentMatrix.
            cmds.connectAttr(driver + outputattr,
                             multMatrix + ".matrixIn[0]")
            cmds.connectAttr(driven + ".parentInverseMatrix",
                             multMatrix + ".matrixIn[1]")
            cmds.connectAttr(multMatrix + ".matrixSum",
                             decompose + ".inputMatrix")

            output.append(multMatrix)
        else:
            cmds.connectAttr(driver + outputattr,
                             decompose + ".inputMatrix")

    # Drive driven with compensated driver.
    cmds.connectAttr(decompose + ".outputTranslate", driven + ".t")
    cmds.connectAttr(decompose + ".outputRotate", driven + ".r")
    cmds.connectAttr(decompose + ".outputScale", driven + ".s")

    return output
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号