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

更改所有摄影机属性

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

    我要做的是搜索场景中所有用户创建的摄影机,同时更改它们的属性。这是我到目前为止得到的,这只改变了一个相机的属性。我能得到一些建议吗?我想我需要知道如何建立一个名单,这个定义的用户创建的相机,以便我可以改变所有的人在同一时间。

    先谢谢你。

    import maya.cmds as cmds
    
    allCams = cmds.ls(type=('camera'), l=True)
    dfCams = [camera for camera in cameras if     cmds.camera(cmds.listRelatives(camera, parent=True)[0],startupCamera=True, q=True)]
    myCams = list(set(allCams) - set(dfCams))
    cmds.setAttr((myCams[0] + '.nearClipPlane'), 0.01)
    cmds.setAttr((myCams[0] + '.farClipPlane'), 1000000)
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   DrWeeny    7 年前

    一个简单的循环应该可以做到这一点,这里有一个dictionnary示例,但是您也可以将属性/值压缩到一个列表中

    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(类型=('camera'),l=True)

    会给你的亲戚起很长的名字:

    cmds.listRelatives(摄影机,父级=True)

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