コンテンツにスキップ

Metadataを仕込む

ipynbFile USDMetadata__Metadataを仕込む.ipynb

[67]:

from pxr import Usd,Vt

[68]:

stage = Usd.Stage.CreateInMemory()
layer = stage.GetRootLayer()
prim = stage.DefinePrim('/testPrim')
path = prim.GetPath()

layer.defaultPrim = '/testPrim'

[69]:

# レイヤーに対して色々Metadataを入れる
layer.comment = 'hello world'
layer.documentation = 'docs'
layer.startTimeCode = 1
layer.endTimeCode = 30

[70]:

# Primに対しても入れる
# 配列の場合は Vt.~~Arrayを使う必要あり。
prim.SetCustomDataByKey('value', 10) # Int
prim.SetCustomDataByKey('listdata',Vt.StringArray(['a','b','c']))
prim.SetCustomDataByKey('intlist',Vt.IntArray([1,2,3,4,5]))
prim.SetDocumentation('hello world')

Success

True

[71]:

# AttributeにもMetadataを入れられる
attr = prim.CreateAttribute('testAttr',Sdf.ValueTypeNames.String)
attr.Set('hoge')
# Attributeに対してもMetadataを仕込める
attr.SetCustomDataByKey('meta','data')

[72]:

prim.GetAllMetadata()

Success

{'customData': {'intlist': Vt.IntArray(5, (1, 2, 3, 4, 5)),
  'listdata': Vt.StringArray(3, ('a', 'b', 'c')),
  'value': 10},
 'documentation': 'hello world',
 'specifier': Sdf.SpecifierDef}

[73]:

print(layer.ExportToString())

Success

#usda 1.0
(
    "hello world"
    defaultPrim = "/testPrim"
    doc = "docs"
    endTimeCode = 30
    startTimeCode = 1
)

def "testPrim" (
    customData = {
        int[] intlist = [1, 2, 3, 4, 5]
        string[] listdata = ["a", "b", "c"]
        int value = 10
    }
    doc = "hello world"
)
{
    custom string testAttr = "hoge" (
        customData = {
            string meta = "data"
        }
    )
}

最終更新日: 2020-10-18 11:57:21