Basic API Usage¶
Writing to the NDK API is quite similar to writing to the USD API. Here are some examples of performing common tasks.
Defining a Prim¶
Here’s how to define a mesh prim in a layer:
usg::Path path(“/path/to/my/mesh”);
usg::Layer* layer = editLayer(); // See later
usg::MeshPrim prim = usg::MeshPrim::defineInLayer(layer, path);
Overriding an existing prim is similar:
usg::MeshPrim prim = usg::MeshPrim::overrideInLayer(layer, prim);
Getting and Setting Attributes¶
Creating an attribute:
usg::Attribute attr = prim.createAttr("outputs:surface", usg::Value::Token);
usg::Attribute attr = prim.createAttr("wobbliness", usg::Value::Float, true);
Getting an attribute:
usg::Attribute attr = Prim::getAttr(usg::GeomTokens.points);
usg::Vec3fArray points;
attr.getValue(points, time);
Setting an attribute:
attr.setValue(points, time);
Raw USD¶
It’s possible to get to the underlying wrapped USD values for these objects. For example, you can get the raw UsdStageRefPtr for a stage and manipulate it in C++ or Python, but we’re discouraging this if you can do what you want in the NDK API.