更改所有相机属性
Change all cameras attribute
伙计们。
我想做的是搜索场景中所有用户创建的相机并同时更改它们的属性。这是我到目前为止得到的,这只会改变一个相机的属性。我能得到一些建议吗?我想我需要知道如何列出这个定义的用户创建的相机,以便我可以同时更改所有这些相机。
提前致谢。
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)
一个简单的循环就可以解决问题,这里是一个字典示例,但您也可以将 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 到 return 长路径
否则您将无法减免您的布景。我建议这样做:
defaultcam = [i for i in allCams if cmds.camera(i, startupCamera=True, q=True)]
fullDefCam = cmds.ls(defaultcam, l=True)
伙计们。 我想做的是搜索场景中所有用户创建的相机并同时更改它们的属性。这是我到目前为止得到的,这只会改变一个相机的属性。我能得到一些建议吗?我想我需要知道如何列出这个定义的用户创建的相机,以便我可以同时更改所有这些相机。
提前致谢。
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)
一个简单的循环就可以解决问题,这里是一个字典示例,但您也可以将 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 到 return 长路径
否则您将无法减免您的布景。我建议这样做:
defaultcam = [i for i in allCams if cmds.camera(i, startupCamera=True, q=True)]
fullDefCam = cmds.ls(defaultcam, l=True)