Stepping and Rendering
When to Use
Use this skill when the user asks to render a frame, step the renderer, simulate a sensor, or get an image from ovrtx.
Inputs
Resolve inputs in this order: existing repository files and referenced snippets, explicit user request, then broader agent context.
- Target API surface: Python, C/C++, or both.
- Application lifecycle stage: renderer creation, scene loading, stepping, warmup, output readback, or cleanup.
- Repository source snippets referenced below. Treat these snippets as the API source of truth.
Prerequisites
- Use an ovrtx checkout that contains the referenced examples and docs tests.
- Read the relevant
> **Source:** snippet before writing or explaining API usage.
- For code changes, preserve renderer lifecycle ordering and cleanup semantics for the selected language.
Instructions
- Identify the requested language and lifecycle stage before choosing an example.
- Read the referenced snippet that matches the requested stage and language.
- Preserve the normal ovrtx order: create or initialize the renderer, load or compose USD, step or wait for work, read outputs when needed, then release C resources explicitly.
- Apply the async, status-query, error-handling, and warmup skills when the workflow crosses those concerns.
- When changing code, run the narrow example or docs test that owns the snippet whenever practical.
Output Format
- For explanations, cite the relevant API names, source snippets, and caveats.
- For code changes, summarize the files changed, snippets affected, and validation run.
Scripts
This skill has no scripts.
Limitations
- The referenced snippets remain the source of truth; update or add tested snippets before documenting new API usage.
Overview
After loading USD content, you render frames by calling step(). Each step advances the simulation by delta_time and produces output for the specified render products (cameras/sensors). The result contains a hierarchy of products, frames, and render variables that can be mapped to access pixel data.
Python
Single frame
Source: examples/python/minimal/main.py snippet step
Iterate over results
Source: examples/python/minimal/main.py snippet read-render-output
Render loop
Source: tests/docs/python/test_camera_sensors.py snippet doc-step-and-map-camera-outputs
Reset simulation time
Source: tests/docs/python/test_support_api.py snippet doc-reset-async
renderer.reset(time=0.0) resets accumulated simulation time (distinct from reset_stage()).
C
Step, wait, fetch
Source: examples/c/minimal/main.cpp snippet step-renderer
Followed by: examples/c/minimal/main.cpp snippet fetch-results
Iterate over C results
Source: examples/c/minimal/main.cpp snippet find-output-helper
Key Types / Functions
| Python |
C |
renderer.step(products, dt) |
ovrtx_step() + ovrtx_wait_op() + ovrtx_fetch_results() |
renderer.step_async(products, dt) |
ovrtx_step() (always async) |
renderer.reset(time) |
ovrtx_reset(renderer, time) |
RenderProductSetOutputs |
ovrtx_render_product_set_outputs_t |
ProductOutput |
ovrtx_render_product_output_t |
FrameOutput |
ovrtx_render_product_frame_output_t |
RenderVarOutput |
ovrtx_render_product_render_var_output_t |
Result hierarchy:
RenderProductSetOutputs
-> ProductOutput (one per render product path)
-> FrameOutput (one per frame produced during the step)
-> RenderVarOutput (one per output variable: LdrColor, HdrColor, depth, etc.)
Troubleshooting
- In C, you must call
ovrtx_destroy_results() after processing to free resources. ovrtx will warn if results are leaked.
delta_time controls sensor simulation timing. A camera without motion blur produces one frame per step regardless of delta.
- The render product paths must match actual RenderProduct prims in the USD stage.
- In Python,
RenderProductSetOutputs auto-destroys on garbage collection. Step result metadata is released when products falls out of scope; live render-var mappings and their DLPack views are unaffected (they have their own independent lifetime).
References
- Use the
> **Source:** directives in this skill to locate tested snippets before reusing API patterns.
- Keep related skills, docs, and snippets synchronized when changing the workflow.
1---2name: stepping-and-rendering3description: Running a simulation step to produce rendered frames. Use when user asks to render a frame, step the renderer, simulate a sensor, or get an image from ovrtx.4license: LicenseRef-NvidiaProprietary5---67# Stepping and Rendering89## When to Use1011Use this skill when the user asks to render a frame, step the renderer, simulate a sensor, or get an image from ovrtx.1213## Inputs1415Resolve inputs in this order: existing repository files and referenced snippets, explicit user request, then broader agent context.1617- Target API surface: Python, C/C++, or both.18- Application lifecycle stage: renderer creation, scene loading, stepping, warmup, output readback, or cleanup.19- Repository source snippets referenced below. Treat these snippets as the API source of truth.2021## Prerequisites2223- Use an ovrtx checkout that contains the referenced examples and docs tests.24- Read the relevant `> **Source:**` snippet before writing or explaining API usage.25- For code changes, preserve renderer lifecycle ordering and cleanup semantics for the selected language.2627## Instructions28291. Identify the requested language and lifecycle stage before choosing an example.302. Read the referenced snippet that matches the requested stage and language.313. Preserve the normal ovrtx order: create or initialize the renderer, load or compose USD, step or wait for work, read outputs when needed, then release C resources explicitly.324. Apply the async, status-query, error-handling, and warmup skills when the workflow crosses those concerns.335. When changing code, run the narrow example or docs test that owns the snippet whenever practical.3435## Output Format3637- For explanations, cite the relevant API names, source snippets, and caveats.38- For code changes, summarize the files changed, snippets affected, and validation run.3940## Scripts4142This skill has no scripts.4344## Limitations4546- The referenced snippets remain the source of truth; update or add tested snippets before documenting new API usage.4748## Overview4950After loading USD content, you render frames by calling `step()`. Each step advances the simulation by `delta_time` and produces output for the specified render products (cameras/sensors). The result contains a hierarchy of products, frames, and render variables that can be mapped to access pixel data.5152## Python5354### Single frame5556> **Source:** `examples/python/minimal/main.py` snippet `step`5758### Iterate over results5960> **Source:** `examples/python/minimal/main.py` snippet `read-render-output`6162### Render loop6364> **Source:** `tests/docs/python/test_camera_sensors.py` snippet `doc-step-and-map-camera-outputs`6566### Reset simulation time6768> **Source:** `tests/docs/python/test_support_api.py` snippet `doc-reset-async`69>70> `renderer.reset(time=0.0)` resets accumulated simulation time (distinct from `reset_stage()`).7172## C7374### Step, wait, fetch7576> **Source:** `examples/c/minimal/main.cpp` snippet `step-renderer`77>78> Followed by: `examples/c/minimal/main.cpp` snippet `fetch-results`7980### Iterate over C results8182> **Source:** `examples/c/minimal/main.cpp` snippet `find-output-helper`8384## Key Types / Functions8586| Python | C |87|--------|---|88| `renderer.step(products, dt)` | `ovrtx_step()` + `ovrtx_wait_op()` + `ovrtx_fetch_results()` |89| `renderer.step_async(products, dt)` | `ovrtx_step()` (always async) |90| `renderer.reset(time)` | `ovrtx_reset(renderer, time)` |91| `RenderProductSetOutputs` | `ovrtx_render_product_set_outputs_t` |92| `ProductOutput` | `ovrtx_render_product_output_t` |93| `FrameOutput` | `ovrtx_render_product_frame_output_t` |94| `RenderVarOutput` | `ovrtx_render_product_render_var_output_t` |9596Result hierarchy:97```98RenderProductSetOutputs99 -> ProductOutput (one per render product path)100 -> FrameOutput (one per frame produced during the step)101 -> RenderVarOutput (one per output variable: LdrColor, HdrColor, depth, etc.)102```103104## Troubleshooting105106- In C, you must call `ovrtx_destroy_results()` after processing to free resources. ovrtx will warn if results are leaked.107- `delta_time` controls sensor simulation timing. A camera without motion blur produces one frame per step regardless of delta.108- The render product paths must match actual RenderProduct prims in the USD stage.109- In Python, `RenderProductSetOutputs` auto-destroys on garbage collection. Step result metadata is released when `products` falls out of scope; live render-var mappings and their DLPack views are unaffected (they have their own independent lifetime).110111## References112113- Use the `> **Source:**` directives in this skill to locate tested snippets before reusing API patterns.114- Keep related skills, docs, and snippets synchronized when changing the workflow.