usdCacheを使う_Stageをリロードする
ipynbFile UsdStageCache__usdCacheを使う_Stageをリロードする.ipynb
USDのステージを依頼たあとにアップデートする方法がようやくわかった。
ついでにCacheまわり。
開いたStageはキャッシュに入れることができる。
UsdUtils.StageCache(シングルトンのUsdCache)を取得してから、
そのStageCacheにステージを入れておくと
あとでそのStageを取得できたりするらしい。
In [1]:
| from pxr import Usd,Pcp,UsdUtils
|
In [2]:
| stage = Usd.Stage.Open(r'S:\fav\work\programming\python\JupyterUSD\pyDev\usd\root.usda')
# 一度ロードした内容を更新したい場合は、Reloadを実行する
# これを実行しないと、途中でusdをアップデートしてもロードされない
stage.Reload()
# UsdUtils.StageCache はシングルトン
cache = UsdUtils.StageCache.Get()
cacheID = cache.Insert(stage)
|
In [3]:
| prim = stage.GetPrimAtPath('/sublayerReference')
|
In [4]:
| for i in stage.Traverse():
print(i)
|
Success
| Usd.Prim(</subLayerB>)
Usd.Prim(</subLayerA>)
Usd.Prim(</sublayerReference>)
Usd.Prim(</Cube>)
|
In [5]:
| # キャッシュに入れていたStageを確認する
for s in cache.GetAllStages():
print(s)
|
Success
| Usd.Stage.Open(rootLayer=Sdf.Find('s:/fav/work/programming/python/JupyterUSD/pyDev/usd/root.usda'), sessionLayer=Sdf.Find('anon:000002C12DA6C1B0:root-session.usda'), pathResolverContext=Ar.DefaultResolverContext(['S:\\fav\\work\\programming\\python\\JupyterUSD\\pyDev\\usd\\']))
|
In [6]:
| # キャッシュからStageを探して取得
stage = cache.Find(cacheID)
|
In [7]:
| # Stage内のPrimを確認
for i in stage.Traverse():
print(i)
|
Success
| Usd.Prim(</subLayerB>)
Usd.Prim(</subLayerA>)
Usd.Prim(</sublayerReference>)
Usd.Prim(</Cube>)
|
In [8]:
| # キャッシュをクリア
cache.Clear()
|