ReferenceをしているPrimからUsdのFilePathを取得
ipynbFile UsdReference1__ReferenceをしているPrimからUsdのFilePathを取得.ipynb
In [18]:
|  | from pxr import Usd, UsdGeom, Sdf
sample_usd = "D:/work/usd_py36/usd/ref.usda"
stage = Usd.Stage.Open(sample_usd)
 | 
In [19]:
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12 | prim = stage.GetPrimAtPath("/ref")
# PrimがReferencによって定義されてるか
print(prim.HasAuthoredReferences())
# Primを構成するLayerを取得
print(prim.GetPrimStack())
for findLayer in prim.GetPrimStack():
    print(findLayer)
    # SdfPathを取得
    print(findLayer.path)
    # AssetPathを取得
    for ref in findLayer.referenceList.prependedItems:
        print(ref.assetPath)
 | 
Success
|  | True
[Sdf.Find('d:/work/usd_py36/usd/ref.usda', '/ref'), Sdf.Find('d:/work/usd_py36/usd/testDD.usda', '/hogehoge')]
Sdf.Find('d:/work/usd_py36/usd/ref.usda', '/ref')
/ref
D:/work/usd_py36/usd/testDD.usda
Sdf.Find('d:/work/usd_py36/usd/testDD.usda', '/hogehoge')
/hogehoge
 | 
 
GetPrimStackで得られる Sdf.Find は、Primを構成するPrimSpec?と
その元になるAssetPathを取得できる。
リファレンスで読み込んでいるPrimの場合、
このFindで取得できるSdfPathは、Referenceの場合はReferenceで読み込んでるファイル内の
SdfPath。