3DCGbook

映像プロダクションに所属しています。主に毎日のアウトプットを配信していこうと思います。

はじめてのOpenMaya ~Iterator~

正直言います。
OpenMaya…心が折れる程、理解不能な時あり。
それでもやります!頑張ります。

さて、簡単に今日やったIteratorの使い方をまとめておきます。

気づいたけど、結構会社で自分のブログを見てます。
困った時にメモっておくと意外と使えるなーと思いました。

kDepthFirst = 深さ優先探索
kBreadthFirst = 幅優先探索
ここへきて基本情報の知識が役に立ちそうな(笑)

import maya.OpenMaya as OpenMaya

dagIterator = OpenMaya.MItDag(OpenMaya.MItDag.kDepthFirst, OpenMaya.MFn.kInvalid)
#dagIterator = OpenMaya.MItDag(OpenMaya.MItDag.kBreadthFirst, OpenMaya.MFn.kInvalid)


dagNodeFn = OpenMaya.MFnDagNode()
while not dagIterator.isDone():
    currentObj = dagIterator.currentItem()
    depth = dagIterator.depth()
    dagNodeFn.setObject(currentObj)   
    
    name = dagNodeFn.name()
    type = currentObj.apiTypeStr()
    path = dagNodeFn.fullPathName()
    
    printStair = ""
    for i in range(0,depth):
        printStair += "------->"
        
    printStair += name + "  :  " + type
    print printStair
      
    dagIterator.next()