2016-07-07 20 views
0

私は自分のカメラだけでシーケンスからショットを保存しようとする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

は反復中に、リストのサイズを変更する場合のように聞こえるが、そこ 'mc'、' mc.delete'、 'list_of_shots_to_delete'などのない定義がされていないので、それを言うのは難しいです。 –

+0

"import maya.cmds as mc"を入れるのを忘れてしまいました。 – PSlayer

+0

まあ、 'list_of_shots_to_delete'って何?これはおそらく情報の最も重要な部分です。 –

答えて

1

コードに問題はありません。最初に指定したショット以外のすべてのものと、それに関連付けられたカメラが削除されています。ちょうど確かに、ここで私がいくつかの改良を加えて使用した最終コードがあります。 シーンに問題がある可能性があります。

import maya.cmds as mc 

def getShotsCamera(shot): 
    for camera in mc.listConnections(my_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) 
関連する問題