Practice Free NCP-OUSD Exam Online Questions
Question #21
Which statement accurately describes a key difference between native instancing and point instancing?
- A . Point instancing generates prototypes dynamically, while native instancing uses statically defined prims.
- B . Native instancing can only use a single prototype per scene, while point instancing can use multiple prototypes.
- C . Native instancing requires prototypes to be defined in separate files, while point instancing requires them in the same layer.
- D . Native instances are individually addressable prims in the scene hierarchy after composition, while point instances are not.
Correct Answer: D
D
Explanation:
The key distinction is addressability and representation. Native, or scenegraph, instancing preserves each instance as a prim in the composed scene hierarchy. Each instance root can have its own path, transform, metadata, and root-level refinements while sharing an implicit prototype generated from matching instanceable composition. OpenUSD’s scenegraph instancing documentation explains that prims bringing in common scene description through composition arcs can share those composed subgraphs rather than duplicating them per prim.
Point instancing, by contrast, is a vectorized representation. NVIDIA’s instancing guide states that point instancing represents repeated instances through array attributes such as positions, orientations, scales, prototype indices, and prototype relationships. It is more compact because it does not require a prim for each instance, but this comes with reduced flexibility and addressability.
Option D is correct because native instances remain individually addressable scenegraph prims, while point instances are addressed through array elements and IDs rather than unique prim paths. A reverses prototype behavior: native instancing uses implicit prototypes, while point instancing uses explicit prototype relationships. B and C impose restrictions that do not exist. This aligns with Content Aggregation → Scenegraph Instancing, PointInstancer, Prototypes, Addressability, and Scalable Repetition.
D
Explanation:
The key distinction is addressability and representation. Native, or scenegraph, instancing preserves each instance as a prim in the composed scene hierarchy. Each instance root can have its own path, transform, metadata, and root-level refinements while sharing an implicit prototype generated from matching instanceable composition. OpenUSD’s scenegraph instancing documentation explains that prims bringing in common scene description through composition arcs can share those composed subgraphs rather than duplicating them per prim.
Point instancing, by contrast, is a vectorized representation. NVIDIA’s instancing guide states that point instancing represents repeated instances through array attributes such as positions, orientations, scales, prototype indices, and prototype relationships. It is more compact because it does not require a prim for each instance, but this comes with reduced flexibility and addressability.
Option D is correct because native instances remain individually addressable scenegraph prims, while point instances are addressed through array elements and IDs rather than unique prim paths. A reverses prototype behavior: native instancing uses implicit prototypes, while point instancing uses explicit prototype relationships. B and C impose restrictions that do not exist. This aligns with Content Aggregation → Scenegraph Instancing, PointInstancer, Prototypes, Addressability, and Scalable Repetition.
Question #22
What is the fundamental data type in USD that enables API schemas to be non-destructively removed in stronger layers?
- A . list ops
- B . arrays
- C . booleans
Correct Answer: A
A
Explanation:
The correct answer is list ops. API schemas are not encoded as a simple boolean flag on a prim. Instead, applied API schemas are stored in the apiSchemas metadata as token-valued listOp data. OpenUSD’s UsdPrim::ApplyAPI() documentation states that applying an API schema stores the schema name by adding it to the token-valued listOp metadata apiSchemas. Its RemoveAPI() documentation states that removing an API schema authors an explicit deletion of that schema name from the same listOp metadata.
This is what enables non-destructive removal in stronger layers. A weaker layer may apply an API schema, while a stronger layer can delete that schema token from the composed list without modifying the weaker source layer. NVIDIA’s OpenUSD glossary describes list editing as sparse ordered-list composition using operations such as prepend, append, delete, and explicit replacement, allowing stronger layers to modify lists contributed by weaker layers.
Option B is incorrect because arrays store values but do not provide list-edit composition semantics.
Option C is incorrect because booleans cannot represent ordered additive and subtractive composition. This aligns with Customizing USD → API Schemas, apiSchemas Metadata, List Editing, and Non-Destructive Layering.
A
Explanation:
The correct answer is list ops. API schemas are not encoded as a simple boolean flag on a prim. Instead, applied API schemas are stored in the apiSchemas metadata as token-valued listOp data. OpenUSD’s UsdPrim::ApplyAPI() documentation states that applying an API schema stores the schema name by adding it to the token-valued listOp metadata apiSchemas. Its RemoveAPI() documentation states that removing an API schema authors an explicit deletion of that schema name from the same listOp metadata.
This is what enables non-destructive removal in stronger layers. A weaker layer may apply an API schema, while a stronger layer can delete that schema token from the composed list without modifying the weaker source layer. NVIDIA’s OpenUSD glossary describes list editing as sparse ordered-list composition using operations such as prepend, append, delete, and explicit replacement, allowing stronger layers to modify lists contributed by weaker layers.
Option B is incorrect because arrays store values but do not provide list-edit composition semantics.
Option C is incorrect because booleans cannot represent ordered additive and subtractive composition. This aligns with Customizing USD → API Schemas, apiSchemas Metadata, List Editing, and Non-Destructive Layering.
