Practice Free NCP-OUSD Exam Online Questions
A key responsibility of the pipeline is to assemble content that may have divergent stage metadata across layer stacks.
Which of these metadata is automatically handled by composition when they diverge across layer stacks?
- A . timeCodesPerSecond
- B . upAxis
- C . kilogramsPerUnit
- D . metersPerUnit
A
Explanation:
The metadata automatically handled by composition is timeCodesPerSecond. NVIDIA’s Learn OpenUSD units guidance states the distinction directly: timeCodesPerSecond is automatically reconciled during composition, while metersPerUnit, kilogramsPerUnit, and upAxis are not. Pipelines must therefore explicitly handle geometric orientation, spatial scale, and physics mass-unit mismatches when assembling assets from different sources.
Option A is correct because OpenUSD can automatically scale time-sampled values across sublayer, reference, and payload arcs when source and target layer stacks use different timeCodesPerSecond values. OpenUSD’s time-value documentation explains that when a targeted layer specifies timeCodesPerSecond, TimeCode coordinates and animated value coordinates are automatically scaled into the time frame defined by the source layer’s timeCodesPerSecond.
Options B, C, and D are incorrect because USD does not automatically rotate geometry for different upAxis, scale geometry for different metersPerUnit, or convert physics mass semantics for different kilogramsPerUnit. Those require pipeline conventions, validation, or corrective transforms. This aligns with Pipeline Development → Stage Metadata, Units, TimeCode Scaling, Asset Assembly, and Pipeline Validation.
If you have a Usd.Prim object named my_prim and you want to specifically retrieve an attribute named "size", which method would you typically use?
- A . my_prim.GetAttribute("size")
- B . my_prim.GetRelationship("size")
- C . my_prim.GetProperty("size")
- D . my_prim.GetPrimvar("size")
A
Explanation:
The correct method is my_prim.GetAttribute("size") because the question asks for a specific
attribute, not a relationship or generic property. NVIDIA’s Learn OpenUSD material defines properties as the data-bearing namespace objects on prims and distinguishes two property categories: attributes and relationships. Attributes hold typed values, while relationships point to other objects in the scene description. NVIDIA’s Omniverse developer reference also states that Usd.Prim.GetAttribute() returns a Usd.Attribute, after which Usd.Attribute.Get() is used to resolve the actual authored or composed value.
Option A is therefore the precise API call.
Option B is incorrect because GetRelationship() retrieves relationship properties, not value-bearing attributes.
Option C is less specific: GetProperty("size") can retrieve either an attribute or relationship as a generic UsdProperty, requiring additional type handling.
Option D is incorrect because primvars are accessed through schema-specific APIs such as UsdGeom.PrimvarsAPI, not directly as a general Usd.Prim method. This aligns with Pipeline Development → USD Python API, Property Access, Attributes, Relationships, and Scenegraph Authoring.
Which of the following are immutable once a USD Stage has been opened? Choose two.
- A . Rules for loading payloads from prims in the stage.
- B . Layers that are muted or unmuted in the stage.
- C . The path resolver context that is bound to the stage.
- D . Variant fallbacks for prims without variant selection in the stage.
C, D
Explanation:
The immutable stage-opening concerns are the path resolver context and the variant fallback configuration used for unselected variants. The resolver context is bound when the stage is created or opened and is used for future asset-path resolution on that stage, regardless of what other resolver context may be bound elsewhere. The OpenUSD UsdStage API documentation describes this binding behavior during stage creation, making option C correct.
Option D is also correct because global variant fallback preferences are defined as preferences “used in new UsdStages.” Once a stage has been composed with its fallback preferences, changing global fallback settings affects newly opened stages, not the already-opened stage’s established fallback behavior.
Option A is incorrect because payload loading is mutable: Load(), Unload(), LoadAndUnload(), and SetLoadRules() modify the stage’s payload working set after opening.
Option B is incorrect because layers can be muted and unmuted on an existing stage through MuteLayer(), UnmuteLayer(), and MuteAndUnmuteLayers(). This aligns with Pipeline Development → Stage Opening, Asset Resolution, Variant Fallbacks, Load Rules, and Layer Muting.
What is a key difference between referencing and sublayering?
- A . Reference cannot be reordered like sublayers.
- B . Reference have a stronger strength ordering than sublayers.
- C . A prim can have many sublayers, but only one reference.
- D . Referencing brings in a hierarchy rooted at a single prim, while sublayering brings in all of a layer’s content.
D
Explanation:
The key distinction is the scope of what each composition arc contributes. Sublayering composes the contents of one layer into another layer stack, bringing in the layer’s scene description as a whole. It is commonly used to combine broad workstream layers such as modeling, layout, animation, lighting, or shot overrides. Referencing, by contrast, is authored on a prim and brings scene description from an external layer, typically rooted at a selected prim or the referenced layer’s default prim. This makes references ideal for asset composition, where a model, prop, environment element, or component is introduced at a specific namespace location.
Option D is correct because it precisely captures this namespace behavior: references target and compose a prim hierarchy, while sublayers contribute all layer contents into the layer stack.
Option A is incorrect because reference list operations can also be ordered and edited.
Option B is misleading because composition strength is governed by USD’s LIVERPS ordering and layer-stack strength, not a simple statement that references are always stronger.
Option C is incorrect because a prim can have multiple references through list editing. This aligns with Composition → Sublayers, Reference, Layer Stacks, Namespace Composition, and LIVERPS Strength Ordering.
You are setting up an outdoor scene with realistic lighting and want to simulate the effect of the sun.
Which UsdLux light type is most appropriate for this purpose, providing a directional light source with parallel rays?
- A . RectLight
- B . DomeLight
- C . DistantLight
- D . SphereLight
C
Explanation:
The correct UsdLux light type is DistantLight. NVIDIA’s Learn OpenUSD lighting guide identifies UsdLux.DistantLight as a schema where light is emitted from a distant source along the negative Z axis, commonly known as a directional light. This makes it the most appropriate light type for representing sunlight in an outdoor scene.
Option C is correct because sunlight is effectively modeled as coming from an extremely distant source, so its rays are treated as broadly parallel across the scene. The OpenUSD DistantLight schema documentation explicitly describes it as typically used for distant, broad light sources like sunlight, where rays affect the entire scene and are roughly parallel. It also notes that the inputs:angle attribute controls angular diameter; the fallback value approximates the Sun’s apparent angular size from Earth.
Option A, RectLight, is better suited for rectangular area emitters such as panels or windows.
Option B, DomeLight, is commonly used for environment or HDRI lighting.
Option D, SphereLight, represents local emission from a spherical source, such as a bulb. This aligns with Visualization → UsdLux, Lighting Schemas, DistantLight, Directional Lighting, and Outdoor Illumination.
Consider the following prim hierarchies. Each prim hierarchy is represented by nested unordered lists and each list item represents a prim with the following format: PRIM_NAME (KIND). No text within the parentheses means that the kind is unset for that prim. Only evaluate model kind hierarchy correctness and the structural choices.
Which prim hierarchies represent valid model kind hierarchies? Choose three.
- A . CarA (component)
Interior ()
SteeringWheel ()
Chasis ()
Wheels ()
Wheel_FR ()
Wheel_RL () - B . CarA (assembly)
Interior (group)
SteeringWheel (component)
Chasis ()
Wheels (group)
Wheel_FR (component)
Wheel_RL (component) - C . CarA (component)
Interior ()
SteeringWheel (component)
Chasis ()
Wheels ()
Wheel_FR (component)
Wheel_RL (component) - D . CarA (component)
Interior ()
SteeringWheel (subcomponent)
Chasis ()
Wheels (group)
Wheel_FR (subcomponent)
Wheel_RL (subcomponent) - E . CarA (component)
Interior ()
SteeringWheel (subcomponent)
Chasis ()
Wheels ()
Wheel_FR (subcomponent)
Wheel_RL (subcomponent)
A, B, E
Explanation:
The valid model kind hierarchies are A, B, and E. NVIDIA’s Learn OpenUSD material defines group, assembly, and component as model kinds, while subcomponent is explicitly outside the model hierarchy. The hierarchy rule is that all ancestors of a component must be group or a subkind of group, such as assembly, and a component acts as a leaf or pruning point in the model hierarchy; therefore, it cannot contain descendant model kinds such as another component, group, or assembly. (NVIDIA Docs)
A is valid because CarA is a component and every descendant has unset kind, so no nested model violates the component boundary.
B is valid because CarA is an assembly, organizational containers use group, and the leaf model assets are component prims. E is valid because CarA is a component, and internal important parts are marked as subcomponent, which is permitted inside a component and does not count as a model kind.
C is invalid because a component contains descendant component prims.
D is invalid because Wheels (group) appears under a component, placing a model kind below a component boundary. This aligns with Content Aggregation → Asset Structure → Model Hierarchy → Model Kinds.
You are a developer creating an OpenUSD exporter for an application that also supports import of USD assets. To enable collaborative workflows, you’re adding an “export as overrides” option.
Which approach correctly describes which structure your exporter should generate?
- A . Overs of the prims and properties that have been modified or added, omitting unchanged data.
- B . Export each prim separately into multiple layers, and reference them individually to maintain sparsity.
- C . Include explicit definitions of all prims, properties, and relationships exactly matching the imported asset to ensure consistency.
A
Explanation:
For an “export as overrides” workflow, the exporter should generate sparse authored opinions that represent only the modified or added contributions of the current workstream. NVIDIA’s Learn OpenUSD Data Transformation guidance explicitly describes this pattern: third-party developers can use the stage from raw extraction to export data as sparse overrides for multi-workstream workflows. It also explains that if an export represents one workstream within a larger asset structure, it may define new prims, apply overrides on existing prims, or both, and should distill the data down to the workstream’s unique contributions.
Option A is correct because over specs and sparse property opinions preserve USD’s non-destructive composition model. They allow a stronger layer to modify the composed result without duplicating unchanged source data.
Option B is incorrect because splitting each prim into separate layers is not required for sparsity and would add unnecessary composition complexity.
Option C is incorrect because re-exporting the entire imported asset as full definitions would duplicate unchanged data and obscure the actual edits. This aligns with Data Exchange → Data Transformation, Export Options, Sparse Overrides, Round-Trip Exchange, and Multi-Workstream Workflows.
You and your colleague open the same USD layer but one of you observes missing geometry.
What could be the reason why?
- A . USD automatically adjusts composition based on available system memory.
- B . Instance prototypes are composing to different identifiers.
- C . Differently configured asset resolvers are resolving to different versions of the asset.
C
Explanation:
The most plausible cause is that the two environments are resolving asset identifiers differently. NVIDIA’s Learn OpenUSD glossary defines asset resolution as the process of translating an asset path into the actual location of a consumable resource, and identifies ArResolver as the plugin point that can be customized to resolve assets through site logic, databases, or version-control systems.
Option C is correct because the same authored USD layer can contain references, payloads, textures, or other asset-valued paths that are resolved at runtime. If one user’s resolver context maps @character.usd@ to version 12 while another maps it to version 15, or if one environment cannot resolve a dependency at all, the composed stage can differ. This can manifest as missing geometry, stale geometry, missing materials, or unresolved payloads. Reference and payloads are composition arcs that bring external scene description into the stage, so resolution differences directly affect what data is available for composition.
Option A is incorrect because USD does not change composition semantics based on available memory.
Option B is not the primary explanation here; instance prototypes are derived from composed instance data, but the root problem described is inconsistent asset resolution. This aligns with Debugging and Troubleshooting → Asset Resolution, Reference, Payloads, Resolver Contexts, Missing Dependencies.
Which of the following sentences are correct when converting between .usda, .usdc, .usd and .usdz files? Choose two.
- A . A .usda file can be converted to a .usdz file using usdcat.
- B . A .usda file can be converted to a .usdc file using usdcat.
- C . A .usda file can be converted to a .usd file by simply renaming it.
- D . A .usda file can be converted to a .usdc file by simply renaming it.
B, C
Explanation:
Options B and C are correct. The official OpenUSD layer-format conversion tutorial states that usdcat can convert between layer formats using the -o option and an output filename with the desired extension. For example, converting text .usda to binary .usdc is performed with a command such as usdcat -o NewSphere.usdc Sphere.usda.
Option C is also correct because .usd is an extension that can hold either text or binary USD data. The same OpenUSD tutorial explains that a .usda or .usdc file can be converted to .usd without changing the underlying format by simply renaming the file; USD detects the actual format when opening it.
Option A is not correct in this context because .usdz is a package/archive format, and the OpenUSD toolset identifies usdzip, not usdcat, as the utility for creating .usdz packages containing USD assets.
Option D is incorrect because renaming a text .usda file to .usdc does not convert it into USD’s binary crate representation. This aligns with Data Exchange → USD File Formats, usdcat, usdzip, USDA, USDC, USD, and USDZ Packaging.
Which of these operations are likely to be slower when switching variants? Choose two.
- A . Changing reference paths
- B . Changing visibility
- C . Changing activation opinions
- D . Changing attribute values
A, C
Explanation:
The slower operations are those that change the composed structure of the stage rather than merely changing resolved property values. NVIDIA’s Learn OpenUSD variant-set guidance separates lightweight and heavyweight variant switches. Lightweight switches include changing attribute values and visibility because they affect value resolution or rendering state without requiring USD to rebuild the composed scene structure. In contrast, heavyweight switches include changing reference paths and changing activation opinions because these alter what content is composed onto the stage.
Option A is correct because changing a reference path swaps which external layer or asset contributes scene description, requiring recomputation of affected composition indexes.
Option C is correct because activation controls whether prims are composed at all; changing active state can add or remove composed scenegraph structure.
Option B is incorrect because visibility is a rendering/imageability opinion and does not remove prims from composition.
Option D is incorrect because ordinary attribute-value changes are typically lightweight value-resolution changes. This aligns with Composition → Variant Sets → Variant Design Considerations, Lightweight Variant Switches, Heavyweight Variant Switches, Reference, Activation, Visibility, and Attribute Opinions.
