我正在为Maya编写一个脚本,我尝试使用自己的相机保存序列中的镜头。
import maya.cmds as mc
list_of_shots_to_delete = mc.sequenceManager( listShots=True )
list_of_shots_to_delete.remove( my_shot )
for k in list_of_shots_to_delete:
cam = getShotsCamera( k )
if cam != None:
if cam == getShotsCamera( my_shot ):
print cam + " is needed!"
else:
mc.delete( getShotsCamera( k ) )
mc.lockNode( k, lock=False )
print "Shot "+ k +" deleted!"
mc.delete( k )
基本上这个循环的作用是,对于序列中的每个不需要的镜头,删除它的相机(除非它是我要保存的镜头中的相同相机),然后删除镜头本身。出于某种原因,如果一个镜头与另一个镜头共享相同的镜头,那么list_of_shots_to_delete
列表中的最后一个镜头将被删除(它将跳过此循环的最后3行)。
有人可以帮忙吗?
答案 0 :(得分:1)
我的代码没有任何问题,除了开头指定的镜头以及与之关联的相机外,它正在删除所有内容。可以肯定的是,这是我使用的最终代码,并进行了一些改进。 也许您的场景中存在问题。
import maya.cmds as mc
def getShotsCamera(shot):
for camera in mc.listConnections(shot + '.currentCamera') or ['']:
return camera
my_shot = 'shot1'
my_shot_camera = getShotsCamera(my_shot)
list_of_shots_to_delete = mc.sequenceManager(listShots=True)
list_of_shots_to_delete.remove(my_shot)
for k in list_of_shots_to_delete:
cam = getShotsCamera(k)
if cam and cam != my_shot_camera:
mc.delete(cam)
mc.lockNode(k, lock=False)
print "Shot " + k + " deleted!"
mc.delete(k)