更改所有相机属性

时间:2018-11-06 04:13:42

标签: python list camera maya

伙计们。 我想做的是在场景中搜索所有用户创建的摄像机,并同时更改它们的属性。到目前为止,这是我得到的,并且仅更改了一个摄像机的属性。我可以得到一些建议吗?我想我需要知道如何列出此定义的用户创建的摄像机,以便我可以同时更改所有摄像机。

谢谢。

def fast_calc(X):

    colsum=np.sum(X,axis=0)
    X=X[:,colsum!=0]
    return X.dot(X.T)

    Y=np.empty([X.shape[0],X.shape[0]])
    for i in range(X.shape[0]):
        for j in range(i,X.shape[0]):
            Y[i][j]=sum(X[i,:]*X[j,:])
            Y[j][i]=Y[i][j]
    return Y

1 个答案:

答案 0 :(得分:2)

一个简单的循环应该可以解决问题,这是字典的示例,但是您也可以将attrs / values压缩到一个列表中

import maya.cmds as cmds

allCams = cmds.ls(type='camera')
defCam = ['perspShape','topShape', 'sideShape', 'frontShape']
cams = list(set(allCams)-set(defCam))
attributes = {'nearClipPlane':0.01,
              'farClipPlane':1000000}
for c in cams:
    for attrName in attributes.keys():
        cmds.setAttr('{}.{}'.format(c, attrName), attributes[attrName])

还要注意,在您的代码中:

  

allCams = cmds.ls(type =('camera'),l = True)

将根据您的listRelatives给出长名:

  

cmds.listRelatives(camera,parent = True)

需要标志-fullPath返回长路径

否则,您将无法保留您的布景。我建议这样做:

defaultcam = [i for i in allCams if cmds.camera(i, startupCamera=True, q=True)]
fullDefCam = cmds.ls(defaultcam, l=True)