代码之家  ›  专栏  ›  技术社区  ›  TrueView55

Maya中的Python:main函数在传递变量时调用其他函数?

  •  0
  • TrueView55  · 技术社区  · 7 年前

    我是一个动画师谁是一个初学者在编码。。。我感谢你的帮助!

    我在调用函数“nullGrouper(side,boney,I,ctrl)”的行上得到一个错误,该错误表示“全局变量‘ctrl’未定义”。但它是在“ctrlDup”函数中定义的,我使用了“return-ctrl”,我认为它会将该变量发送回“handCtrls()”。

    代码如下:

    import maya.cmds as c
    
    def ctrlDup(side, boney, i, ctrlOrig):
        #Select and duplicate the original Control, and place it at the appropiate boney
        c.select(ctrlOrig)
        ctrl = c.duplicate(ctrlOrig, n=side + boney + str(i) + '_CTRL')
        print(ctrl)
        print('ctrlDup passed')
        return ctrl
    
    def nullGrouper(side, boney, i, ctrl):
        #Create null group at same position as Control
        print(ctrl)
        print(ctrl[0])
        nullGrp = c.group(n=side + boney + str(i) + '_GRP', empty=1, world=1)
        print(nullGrp)
        c.parentConstraint(ctrl, nullGrp, n='nullGrp_parentConstr_temp')
        c.delete('nullGrp_parentConstr_temp')
        print('nullGrouper passed')
        return ctrl, nullGrp
    def handCtrls():
        #First select the Controller to be duplicated
        sel = c.ls(sl=1)
        ctrlOrig = sel[0]
        #List sides
        sideList = ['L_', 'R_']
        #List bones of part
        boneyList = ['thumb', 'index', 'middle', 'ring', 'pinky']
        #Now, iterate across finger joints, up to 3, group controls, and parent them
        for side in sideList:
            for boney in boneyList:
                for i in range(1, 4, 1):
                    #Check if boney is thumb, and joint number is 3
                    if (boney!='thumb') or (i!=3):
                        ctrlDup(side, boney, i, ctrlOrig)
                        nullGrouper(side, boney, i, ctrl)
                    else:
                        pass
    
        print("It's done.")
    
    handCtrls()
    

    有几个“print”命令只是为了检查变量是否被传递。非常感谢。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Achayan    7 年前

    这是因为您没有存储报税表

    ...
    ctrl = ctrlDup(side, boney, i, ctrlOrig)
    nullGrouper(side, boney, i, ctrl)