コンテンツにスキップ

useresolveの中の実装を調べる

ipynbFile useresolve__useresolveの中の実装を調べる.ipynb

In [1]:

1
from pxr import Ar

In [20]:

1
2
3
# AssetResolverを取得
resolver = Ar.GetResolver()
print(resolver)

Success

1
<pxr.Ar.Resolver object at 0x000002135C6F1D50>

In [25]:

1
2
3
4
5
6
# ResolvedPathが、すでに解決済のPath
# このPathから、新しいAssetPathを作成するのが CreateIdentifierForNewAsset
resolved = Ar.ResolvedPath("D:/usdsample/hoge.usda")
assetPath = "./change.usda"
inputPath = resolver.CreateIdentifierForNewAsset(assetPath,resolved)
resolver.Resolve(inputPath)

Success

1
Ar.ResolvedPath('d:\usdsample\change.usda')

In [10]:

1
2
# AssetPathからContextを作成する
resolver.CreateDefaultContextForAsset('D:/usdsample/sample.usda')

Success

1
Ar.ResolverContext(Ar.DefaultResolverContext(['D:\\usdsample\\']))

In [17]:

1
2
3
4
5
6
# DefaultResolverContextにDefaultSearchPathをセットする。
# そのContextは、Binderにセットして使用する。
# C++の場合は、そのスコープ内で有効になるが、Pythonの場合は with の範囲内で有効になる。
context = Ar.DefaultResolverContext(['D:/usdsample'])
with Ar.ResolverContextBinder(context):
    print(resolver.Resolve('sample.usda'))

Success

1
d:\usdsample\sample.usda