application-flow
High-level overview of a typical ovrtx application lifecycle. Use when user asks how to structure an ovrtx program, what the main…
Cloning USD subtrees to create copies at new paths. Use when user asks to clone, duplicate, copy a prim, or create instances of existing geometry.
$ npx -y skills add nvidia-omniverse/ovrtx --skill cloning-prims --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/cloning-primsContext preview
The summary Claude sees to decide when to auto-load this skill.
Cloning USD subtrees to create copies at new paths. Use when user asks to clone, duplicate, copy a prim, or create instances of existing geometry.
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: LicenseRef-NvidiaProprietary # # NVIDIA CORPORATION, its affiliates and licensors retain all intellectual # property and proprietary rights in and to this material, related # documentation and any modifications thereto. Any use, reproduction, # disclosure or distribution of this material and related documentation # without an express license agreement from NVIDIA CORPORATION or # its affiliates is strictly prohibited. name: cloning-prims description: > Cloning USD subtrees to create copies at new paths. Use when user asks to clone, duplicate, copy a prim, or create instances of existing geometry. license: LicenseRef-NvidiaProprietary author: NVIDIA ovrtx tags: - ovrtx - usd - prims tools: - Read - Grep
Use this skill when the user asks to clone, duplicate, copy a prim, or create instances of existing geometry.
Resolve inputs in this order: existing repository files and referenced snippets, explicit user request, then broader agent context.
1. Identify the source prim path and every destination path the caller wants to create. 2. Confirm whether the workflow needs a synchronous Python ovstage clone, Python async ovstage clone, or C ovstage clone. 3. Read the matching snippet and preserve its source-path, destination-list, wait, and error-checking pattern. Choose explicit clone and customization ordinals that satisfy the configured ovstage admission policy and applicable floors. 4. Do not use cloning when the caller actually needs USD instancing, references, or authoring new geometry from scratch; route to the loading or writing skills instead. 5. When changing code, run the stage-mutation docs test that owns the clone snippet whenever practical.
This skill has no scripts.
`stage.clone` creates copies of an existing prim subtree at one or more new target paths and commits the copied cells at an explicit ordinal. Advance and wait for the write floor before reading or rendering that ordinal. This is useful for duplicating geometry, creating arrays of objects, or spawning instances from a template.
Follow the ordinal and completion rules in [Cloning Prims](../../docs/scene/cloning.rst). For policy choices, see the [admission-policy summary](../../docs/core/ovstage_integration.rst#ordinals-and-write-floor-gates).
> **Source:** `tests/docs/python/test_stage_mutation.py` snippet `doc-clone-usd`
> **Source:** `tests/docs/python/test_stage_mutation.py` snippet `doc-clone-usd`
> **Source:** `tests/docs/python/test_stage_mutation.py` snippet `doc-clone-usd-async`
> **Source:** `tests/docs/c/test_stage_mutation.cpp` snippet `doc-clone-usd-c`
> **Source:** `tests/docs/c/test_stage_mutation.cpp` snippet `doc-clone-usd-c`
> **Source:** `tests/docs/c/test_stage_mutation.cpp` snippet `doc-clone-usd-async-c`
At the C layer `ovstage_clone` is inherently async — the enqueue returns an `ovstage_enqueue_result_t` with an `op_index` you wait on. There is no distinct synchronous variant, so the "async" snippet shows the same call as the base clone snippet; the two are kept for parity with the Python `clone` / `clone_async` split.
| Python | C | |--------|---| | `stage.clone(source, targets, ordinal=...)` | `ovstage_clone(stage, source, targets, count, ordinal)` | | `stage.clone_async(source, targets, ordinal=...)` | `ovstage_clone(...)` (C is always async — wait on the returned `op_index`) |
error names it.
target clones nothing, and the error names the existing target(s) (e.g. `target prim already exists at '/World/Tile3'`), so the whole batch can be corrected in one pass.
subtree are rebased to the corresponding clone. Paths outside the subtree stay unchanged.
ovrtx is a C and Python library for embedding Omniverse RTX sensor simulation and visualization directly into applications.
High-level overview of a typical ovrtx application lifecycle. Use when user asks how to structure an ovrtx program, what the main…
Asynchronous operation patterns including polling, timeouts, and non-blocking workflows. Use when user asks about async…
Replacing persistent ovrtx attribute bindings with reusable ovstage queries for repeated writes or maps. Use when user asks about…
Binding materials to prims at runtime. Use when user asks to assign a material, change a material, set material binding, or swap…
Available camera render outputs for Real-Time Path-Tracing (RT2) mode. Use when user asks what AOVs/render vars are available,…
Authoring and configuring OmniLidar sensor prims and lidar PointCloud render outputs. Use when user asks to create a lidar scene,…