OpenUSD Data Types#
The OpenUSD API Documentation has a list of USD Basic Data Types that are used for Attribute types. Type Name are provided by the Sdf.ValueTypeNames
module, which is a useful resource for reference.
In order to pass a valid value for the type
for the CreateAttribute(name, type)
function, it needs to be a reference to a Sdf.ValueTypeNames.TypeName
object. There are three ways of getting these:
Using Python Objects
The current values and how to construct an object that will function as that value are in a table here for convenience, please refer to the USD Basic Data Types page for an explanation on explicit definitions. The Value Type Token column denotes how each Type Name appears in a
.usda
file.Tip
Gf.Vec3d/f/h
instances below can be constructed with just a(float, float, float)
tuple (andVec2d/f/h ``, ``Vec4d/f/h
as well), but the explicit declaration is passed below for completeness.Note
[]
denotes a list of types. The left column of this list was generated with the method from 1) above.
Type Name
Value Type Token
Python Constructor
Asset
asset
string
AssetArray
asset[]
[string]
Bool
bool
bool
BoolArray
bool[]
[bool]
Color3d
color3d
Gf.Vec3d(float, float, float)
Color3dArray
color3d[]
[Gf.Vec3d(float, float, float)]
Color3f
color3f
Gf.Vec3f(float, float, float)
Color3fArray
color3f[]
[Gf.Vec3f(float, float, float)]
Color3h
color3h
Gf.Vec3h(float, float, float)
Color3hArray
color3h[]
[Gf.Vec3h(float, float, float)]
Color4d
color4d
Gf.Vec4d(float, float, float, float)
Color4dArray
color4d[]
[Gf.Vec4d(float, float, float, float)]
Color4f
color4f
Gf.Vec4f(float, float, float, float)
Color4fArray
color4f[]
[Gf.Vec4f(float, float, float, float)]
Color4h
color4h
Gf.Vec4h(float, float, float, float)
Color4hArray
color4h[]
[Gf.Vec4h(float, float, float, float)]
Double
double
float
Double2
double2
(float, float)
Double2Array
double2[]
[(float, float)]
Double3
double3
(float, float, float)
Double3Array
double3[]
[(float, float, float)]
Double4
double4
(float, float, float, float)
Double4Array
double4[]
[(float, float, float, float)]
DoubleArray
double[]
[float]
Float
float
float
Float2
float2
(float, float)
Float2Array
float2[]
[(float, float)]
Float3
float3
(float, float, float)
Float3Array
float3[]
[(float, float, float)]
Float4
float4
(float, float, float, float)
Float4Array
float4[]
[(float, float, float, float)]
FloatArray
float[]
[float]
Frame4d
frame4d
float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float
Frame4dArray
frame4d[]
[Gf.Matrix4d(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float)]
Half
half
float
Half2
half2
(float, float)
Half2Array
half2[]
[(float, float)]
Half3
half3
(float, float, float)
Half3Array
half3[]
[(float, float, float)]
Half4
half4
(float, float, float, float)
Half4Array
half4[]
[(float, float, float, float)]
HalfArray
half[]
[float]
Int
int
int
Int2
int2
(int, int)
Int2Array
int2[]
[(int, int)]
Int3
int3
(int, int, int)
Int3Array
int3[]
[(int, int, int)]
Int4
int4
(int, int, int, int)
Int4Array
int4[]
[(int, int, int, int)]
Int64
int64
int
(long
in Python2)Int64Array
int64[]
[int]
([long]
in Python2)IntArray
int[]
[int]
Matrix2d
matrix2d
float, float, float, float
Matrix2dArray
matrix2d[]
[Gf.Matrix2d(float, float, float, float)]
Matrix3d
matrix3d
float, float, float, float, float, float, float, float, float
Matrix3dArray
matrx3d[]
[Gf.Matrix3d(float, float, float, float, float, float, float, float, float)]
Matrix4d
matrix4d
float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float
Matrix4dArray
matrix4d[]
[Gf.Matrix4d(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float)]
Normal3d
normal3d
Gf.Vec3d(float, float, float)
Normal3dArray
normal3d[]
[Gf.Vec3d(float, float, float)]
Normal3f
normal3f
Gf.Vec3f(float, float, float)
Normal3fArray
normal3f[]
[Gf.Vec3f(float, float, float)]
Normal3h
normal3h
Gf.Vec3h(float, float, float)
Normal3hArray
normal3h[]
[Gf.Vec3h(float, float, float)]
Point3d
point3d
Gf.Vec3d(float, float, float)
Point3dArray
point3d[]
[Gf.Vec3d(float, float, float)]
Point3f
point3f
Gf.Vec3f(float, float, float)
Point3fArray
point3f[]
[Gf.Vec3f(float, float, float)]
Point3h
point3h
Gf.Vec3h(float, float, float)
Point3hArray
point3h[]
[Gf.Vec3h(float, float, float)]
Quatd
quatd
Gf.Quatd(float, Gf.Vec3d(float, float, float))
QuatdArray
quatd[]
[Gf.Quatd(float, Gf.Vec3d(float, float, float))]
Quatf
quatf
Gf.Quatf(float, Gf.Vec3f(float, float, float))
QuatfArray
quatf[]
[Gf.Quatf(float, Gf.Vec3f(float, float, float))]
Quath
quath
Gf.Quath(float, Gf.Vec3h(float, float, float))
QuathArray
quath[]
[Gf.Quath(float, Gf.Vec3h(float, float, float))]
String
string
str
StringArray
string[]
[str]
TexCoord2d
texCoord2d
Gf.Vec2d(float, float)
TexCoord2dArray
texCoord2d[]
[Gf.Vec2d(float, float)]
TexCoord2f
texCoord2f
Gf.Vec2f(float, float)
TexCoord2fArray
texCoord2f[]
[Gf.Vec2f(float, float)]
TexCoord2h
texCoord2h
Gf.Vec2h(float, float)
TexCoord2hArray
texCoord2h[]
[Gf.Vec2h(float, float)]
TexCoord3d
texCoord3d
Gf.Vec3d(float, float, float)
TexCoord3dArray
texCoord3d[]
[Gf.Vec3d(float, float, float)]
TexCoord3f
texCoord3f
Gf.Vec3f(float, float, float)
TexCoord3fArray
texCoord3f[]
[Gf.Vec3f(float, float, float)]
TexCoord3h
texCoord3h
Gf.Vec3h(float, float, float)
TexCoord3hArray
texCoord3h[]
[Gf.Vec3h(float, float, float)]
TimeCode
timecode
float
TimeCodeArray
timecode[]
[float]
Token
token
str
TokenArray
token[]
string
UChar
uchar
ord(char)
(where char is a single letter string)UCharArray
uchar[]
[ord(char)]
(where char is a single letter string)UInt
uint
int
UInt64
uint64
int
(long
in Python2)UInt64Array
uint64[]
[int]
([long]
in Python2)UIntArray
uint[]
[int]
Vector3d
vector3d
Gf.Vec3d(float, float, float)
Vector3dArray
vector3d[]
[Gf.Vec3d(float, float, float)]
Vector3f
vector3f
Gf.Vec3f(float, float, float)
Vector3fArray
vector3f[]
[Gf.Vec3f(float, float, float)]
Vector3h
vector3h
Gf.Vec3h(float, float, float)
Vector3hArray
vector3h[]
[Gf.Vec3h(float, float, float)]
Get Reference From a String
Use
Sdf.ValueTypeNames.Find(string)
to get the reference from a string (valid inputs are the left column in the table above)Exact Value
Look up the exact value for TypeName in the Sdf.ValueTypeNames module ( Sdf.ValueTypeNames.Color3h
for example is valid):
from pxr import Sdf
print(dir(Sdf.ValueTypeNames))
# output is: ['Asset', 'AssetArray', 'Bool', 'BoolArray', 'Color3d', 'Color3dArray', 'Color3f', 'Color3fArray', 'Color3h', 'Color3hArray', 'Color4d', 'Color4dArray', 'Color4f', ... snipped ]
Working with Attributes#
You can call the prim_ref.CreateAttribute(name, type)
function to create the attribute, and we can use the information above to select a valid type. It returns a reference to the attribute created, which we can set with attribute_ref.Set(value)
, and again we can construct a valid value by looking up the constructor above.
from pxr import Usd, UsdGeom
stage_ref = Usd.Stage.Open('stage.usda')
# get a reference to the Xform instance, this works fine since it is also a Usd.Prim
xform_ref = UsdGeom.Xform.Define(stage, '/XformPrim')
# create an attribute reference, using an explicit reference to the type
weight_attr = xform_ref.CreateAttribute('weight', Sdf.ValueTypeNames.Float)
print(weight_attr.Get()) # prints empty string for default Float values, not 0!
print(weight_attr.Get() == None) # prints "True"
print(weight_attr.Get() == 0) # prints "False"
# to set an attribute we use the attribute_ref.Set(value) function
weight_attr.Set(42.3)
print(weight_attr.Get()) # prints "42.3"
# also, you can chain calls like so
print(xform_ref.GetPrim().GetAttribute('weight').Get()) # prints "42.3"