コンテンツにスキップ

AttributeにPrimvarを指定する

ipynbFile USDPrimvar__AttributeにPrimvarを指定する.ipynb

[116]:

from pxr import Usd,UsdGeom,Sdf,Vt

[117]:

stage = Usd.Stage.CreateInMemory()

[118]:

prim = stage.DefinePrim("/testPrim")

[119]:

attr = prim.CreateAttribute('hoge',Sdf.ValueTypeNames.Float)

[120]:

# Attributeに対してPrimvarを設定
primvar = UsdGeom.Primvar(attr)
# 補間方法 constant/uniform/varying/vertex/faceVarying
primvar.SetInterpolation(UsdGeom.Tokens.varying)

Success

True

[121]:

primvar.Set(100,Usd.TimeCode(180))
primvar.Set(120,Usd.TimeCode(181))

Success

True

[122]:

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

Success

#usda 1.0

def "testPrim"
{
    custom float hoge (
        interpolation = "varying"
    )
    float hoge.timeSamples = {
        180: 100,
        181: 120,
    }
}

[123]:

primvar.Get(180.8)

Success

116.0

[124]:

# IndexなしならGetとComputeFlattenedは同じになる?
primvar.ComputeFlattened(Usd.TimeCode(180.8))

Success

116.0

PrimvarのGetは、TimeCodeでセットした値をバイリニア補間してくれる
(補間方法について) * https://imagingsolution.net/imaging/interpolation/


最終更新日: 2020-07-13 16:43:47