Enable Newton RTX video capture - #7056
Conversation
Greptile SummaryThe PR enables video capture from the Newton RTX visualizer by exposing its OVRTX LDR framebuffer and rendering it on demand in headless mode.
Confidence Score: 5/5The PR appears safe to merge with no concrete blocking or independently actionable non-blocking issues identified. The changed recorder selection, headless render lifecycle, and framebuffer readback form a consistent capture path, and the investigated initialization, pause, and source-selection cases did not establish an observable changed-code failure. Important Files Changed
Sequence DiagramsequenceDiagram
participant Env as Environment step
participant Recorder as VideoRecorder
participant Adapter as NewtonRTXVisualizer
participant Viewer as NewtonViewerRTX / OVRTX
Env->>Recorder: step()
Recorder->>Adapter: render_rgb_array()
alt Headless with current state
Adapter->>Viewer: begin_frame(sim_time)
Adapter->>Viewer: log_state(state)
Adapter->>Viewer: end_frame()
end
Adapter->>Viewer: get_frame()
Viewer->>Viewer: read LdrColor pixels
Viewer-->>Adapter: contiguous RGB ndarray
Adapter-->>Recorder: frame
Recorder->>Recorder: append and export MP4
Reviews (1): Last reviewed commit: "Enable Newton RTX video capture" | Re-trigger Greptile |
There was a problem hiding this comment.
Isaac Lab Review Bot
The PR consistently wires Newton RTX framebuffer capture through the existing visualizer recorder path and updates the relevant documentation, tests, and package changelogs. One compatibility issue remains: render_rgb_array() now raises when the RTX viewer is unavailable instead of preserving its documented None result.
- Design and architecture: The framebuffer readback remains encapsulated in the Newton RTX adapter and reuses the existing
visualizer:newton_rtxsource routing without introducing a parallel recording path. - API: The new recorder source is documented consistently, but
NewtonRTXVisualizer.render_rgb_array()changes the existing public contract fromnp.ndarray | Nonetonp.ndarrayand raises when the viewer was skipped or unavailable. Preserve the nullable return for that state so existing callers that handleNonecontinue to work. - Implementation: The headless capture path renders the latest state before readback and reliably closes the frame in a
finallyblock. Tests cover successful frame return and RL source selection, and changelog fragments cover all affected packages; the unavailable-viewer behavior still needs correction.
Minor fixes needed. Posted 1 actionable finding inline.
Automated review; human maintainers own approval decisions.
Signed-off-by: Kelly Guo <kellyg@nvidia.com>
Summary
NewtonRTXVisualizer.render_rgb_array()--videowith--viz newton_rtxand the explicitvisualizer:newton_rtxrecorder sourceMotivation
ViewerRTX.save_screenshot()already reads the OVRTXLdrColorrender product, but Isaac Lab's RTX adapter leftrender_rgb_array()as a stub and classifiednewton_rtxas a non-capturing visualizer. This keeps the Newton-specific readback inside the adapter and reuses Isaac Lab's existing video recorder and H.264 export path.Scope
This is backend-generic support. It contains no task or conveyor-specific code and only updates the two closest existing unit tests.
Validation
88 passed: Newton adapter, RL video configuration, and video recorder test files