TechNuggets Academy

Pipeline Development with the USD APIs (Python and C++)

Free NVIDIA-Certified Professional: OpenUSD Development practice — 6 questions on Pipeline Development with the USD APIs (Python and C++), with explanations. No sign-up. Full 12-question mixed test →

Question 1 of 6 · Pipeline Development with the USD APIs (Python and C++)
A pipeline tool needs to rename a prim from /World/Geo/OldName to /World/Geo/NewName on a stage composed from multiple sublayers, and any relationship targets or attribute connections elsewhere in the stage that point at /World/Geo/OldName (or its descendants) must automatically be updated to the new path across all contributing layers. Which API is the correct choice?
Usd.NamespaceEditor is the high-level stage-aware API purpose-built for renames/reparents/deletes; it inspects the full composed stage, edits the relevant opinions in every contributing layer, and automatically fixes up relationship targets and attribute connections that reference the moved path anywhere in the scene.
Question 2 of 6 · Pipeline Development with the USD APIs (Python and C++)
You are authoring a rig's local transform in Python so that Maya, Houdini, and Omniverse Kit all interpret the pivot, rotation, and scale identically without any DCC-specific reinterpretation. Which authoring approach guarantees this canonical, cross-application-compatible xformOpOrder?
UsdGeom.XformCommonAPI enforces the single canonical op ordering (translate, pivot, rotateXYZ, scale, inverse-pivot) that every USD-compliant DCC and Hydra imaging plugin is required to recognize, guaranteeing consistent interpretation across tools.
Question 3 of 6 · Pipeline Development with the USD APIs (Python and C++)
An attribute 'points' already has time samples authored at frames 1 through 24. In a later pipeline pass you run: attr.Set(Vt.Vec3fArray([...])) with no time argument. When the stage is subsequently queried at UsdTimeCode(12), what value does UsdAttribute.Get() return?
Calling Set() without a UsdTimeCode argument authors the attribute's *default* opinion (equivalent to UsdTimeCode.Default()). When time samples exist, they take precedence for any non-default time query; the default value is only ever returned when no time samples exist or when explicitly querying Default time, so frame 12 still resolves from the 1-24 sample range.
Question 4 of 6 · Pipeline Development with the USD APIs (Python and C++)
A pipeline validation script needs to traverse the stage and visit every prim exactly as stage.Traverse() would by default -- skipping inactive prims, undefined overs, abstract classes, and unloaded payloads -- but the author wants to make the predicate explicit in the code for clarity. Which call is equivalent to the default behavior of stage.Traverse()?
Usd.PrimDefaultPredicate is exactly the composed predicate (active && defined && loaded && !abstract) that stage.Traverse() applies internally by default, so explicitly passing it to Usd.PrimRange reproduces the same traversal set.
Question 5 of 6 · Pipeline Development with the USD APIs (Python and C++)
You need to determine whether the attribute 'displayColor' has an opinion authored directly in a specific sublayer (contents.usda), independent of any stronger opinions from other sublayers or the session layer. Which approach correctly answers this?
Opening the layer directly with Sdf.Layer.FindOrOpen and querying GetAttributeAtPath operates purely on that layer's raw specs, showing exactly what is authored in contents.usda with no composition applied -- which is what's needed to check a single layer's opinion in isolation.
Question 6 of 6 · Pipeline Development with the USD APIs (Python and C++)
In the Hydra rendering architecture used by UsdImagingGLEngine, which component is responsible for translating composed USD prims into Hydra's internal Rprim/Sprim representations that get registered in the render index?
The Scene Delegate, implemented by UsdImagingDelegate, walks the composed USD stage and uses prim adapters to convert each supported prim type into Hydra Rprims/Sprims/Bprims, which it then populates into the render index for consumption by any render delegate.
Ready for the real thing?

The full course: two full-length practice tests, video lessons for every exam domain, hands-on labs and detailed explanations.

$109.99 $34.99 with code FREETEST33 — valid through September 7.

Get my $34.99 deal →