Skip to content

modelAPIとKind

ipynbFile modelAPI__modelAPIとKind.ipynb

In [36]:

1
from pxr import Usd,Sdf

In [2]:

1
stage = Usd.Stage.CreateInMemory()

In [9]:

1
2
prim = stage.DefinePrim("/testPrim")
stage.SetDefaultPrim(prim)

In [47]:

1
2
# APIを取得する
Usd.ModelAPI.Get(stage,Sdf.Path('/testPrim'))

Success

1
Usd.ModelAPI(Usd.Prim(</testPrim>))

In [5]:

1
2
# ModelAPI にPrimを渡してAPIを取得する
api = Usd.ModelAPI(prim)

In [39]:

1
2
3
4
5
6
# Primに対していろんなシーンに関連するMetadataを入れる
api.SetAssetName('testAsset')
api.SetAssetVersion('1.0')
api.SetAssetInfo({'test':'hello world',
                  'num':10,
                  'hoge':[10,11,12]})

In [40]:

1
2
# Kindを設定
api.SetKind('component')

Success

1
True

In [41]:

1
2
3
print(api.IsKind('component'))
print(api.IsModel())
print(api.IsGroup())

Success

1
2
3
True
True
False

In [42]:

1
print(stage.GetRootLayer().ExportToString())

Success

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#usda 1.0
(
    defaultPrim = "testPrim"
)

def "testPrim" (
    assetInfo = {
         hoge = [10, 11, 12]
        int num = 10
        string test = "hello world"
    }
    kind = "component"
)
{
}

Kindを取得する方法

In [48]:

1
from pxr import Kind

In [51]:

1
2
# 登録されているKindを取得する
Kind.Registry().GetAllKinds()

Success

1
2
3
4
5
6
7
8
['charprop',
 'chargroup',
 'subcomponent',
 'model',
 'component',
 'group',
 'assembly',
 'newRootKind']

In [52]:

1
2
# Kindの階層構造を取得できる
Kind.Registry().GetBaseKind('component')

Success

1
'model'

In [54]:

1
2
print(Kind.Registry().HasKind('hoge'))
print(Kind.Registry().HasKind('charprop'))

Success

1
2
False
True