[maya] maya_usdのAPIで 「mel mayaUsdCreateStageWithNewLayer」で作ったsceneの中のレイヤーをpythonで取得するには?

How to get the layer in the scene created with “mel mayaUsdCreateStageWithNewLayer” using python with maya_usd API?



# maya_usdのAPIで 「mayaUsdCreateStageWithNewLayer」で作ったsceneの中のレイヤーを取得するには?
print("--------------------get_layers_in_scene -----------------------")

# トップノードだけを検索、意外と使う。
TopNode_01_list=cmds.ls(assemblies=1)
print("TopNode_01_list= "+str(TopNode_01_list))

# mewl で mayaUsdCreateStageWithNewLayer を呼ぶ。
import maya.mel as mel
mel.eval("$StageWithNewLayer=`mayaUsdCreateStageWithNewLayer`")


# トップノードだけを検索、意外と使う。
TopNode_02_list=cmds.ls(assemblies=1)
print("TopNode_02_list= "+str(TopNode_02_list))
# 差分を比較
TopNode_02_set = set(TopNode_02_list)
TopNode_01_set = set(TopNode_01_list)
print("TopNode_01_set= "+str(TopNode_01_set))
print("TopNode_02_set= "+str(TopNode_02_set))

TopNode_diff_set = TopNode_02_set - TopNode_01_set
print("TopNode_diff_set= "+str(TopNode_diff_set))
TopNode_diff_list = list(TopNode_diff_set)
print("TopNode_diff_list= "+str(TopNode_diff_list))
TopNode_new_diff_str=TopNode_diff_list[0]
print("TopNode_new_diff_str= "+str(TopNode_new_diff_str))
# stage1の番号抽出
stageNumStr=TopNode_new_diff_str[5:]
print("stageNumStr="+stageNumStr)
#-------------------------------------------------------

import mayaUsd.ufe
stagePath="|stage"+stageNumStr+"|stageShape"+stageNumStr
#stagePath="|stage1|stageShape1"
#stage = mayaUsd.ufe.getStage("|stage1|stageShape1")
stage = mayaUsd.ufe.getStage(stagePath)
print("stage= "+str(stage))
# レイヤーを取得
layer = stage.GetRootLayer()
print("layer= "+str(layer))

Output

--------------------get_layers_in_scene -----------------------
TopNode_01_list= ['persp', 'top', 'front', 'side']
TopNode_02_list= ['persp', 'top', 'front', 'side', 'stage1']
TopNode_01_set= {'front', 'side', 'persp', 'top'}
TopNode_02_set= {'persp', 'stage1', 'top', 'front', 'side'}
TopNode_diff_set= {'stage1'}
TopNode_diff_list= ['stage1']
TopNode_new_diff_str= stage1
stageNumStr=1
stage= Usd.Stage.Open(rootLayer=Sdf.Find('anon:000002B5C8D87560:anonymousLayer1'), sessionLayer=Sdf.Find('anon:000002B5C8D87160:anonymousLayer1-session.usda'), pathResolverContext=Ar.DefaultResolverContext())
layer= Sdf.Find('anon:000002B5C8D87560:anonymousLayer1')

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です