尝试从Camera Sequencer中删除一个镜头

时间:2016-07-07 19:24:14

标签: python-2.7 loops maya

我正在为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行)。

有人可以帮忙吗?

1 个答案:

答案 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)