Skip to content

[Warp] Part 6/6: Allow --video on the Warp frontend - #7012

Draft
hujc7 wants to merge 9 commits into
isaac-sim:mainfrom
hujc7:jichuanh/warp-video-recording
Draft

hujc7 wants to merge 9 commits into
isaac-sim:mainfrom
hujc7:jichuanh/warp-video-recording

Conversation

@hujc7

@hujc7 hujc7 commented Aug 10, 2026 •

Copy link
Copy Markdown
Collaborator

Review Map

PR Status Depends on Exact changes
#6646 Part 1/6: mask-correct partial resets (draft) — —
#8783 Part 2/6: shared Warp RNG state (draft) #6646 link
#6607 Part 3/6: per-term capture, stable stepping parity (draft) #8783 link
#8228 Part 4/6: Warp commands, Rough tasks, live term changes (draft) #6607 link
#6582 Part 5/6: Shadow Warp twin, Allegro twin fixes (draft) #6607 link
📌 #7012 Part 6/6: --video on the Warp frontend (draft) — —

Summary

--video now works with --frontend warp (main raises ValueError): the Warp environments drive env_cfg.video_recorders, and the default --video source records from main's headless newton_gl, so no Isaac Sim install is needed.

Description

Update (2026-10-20): merged main 2dbb6146d75 (the default branch, renamed from develop; "main" below means main without this PR, measured at aa9bafef8a0). Main now initializes visualizers in sim.reset(), so the Warp environments create their video recorders after the simulation starts, as the stable environments do; the test uses WindowCfg. #8356 fixed the Warp observation manager's history_order rejection on main, so the manager case no longer needs #6646. test_video_recording_warp.py (2) and test_apply_video_recording.py (30) pass.

Update (2026-10-04): merged develop aa9bafef8a0, which redesigned --video (#8198) and fixed blank headless Newton frames itself. This PR now only lets the Warp environments record; its own visual-shape fix, the frontend-specific visualizer injection and their tests are removed.

1. Changes

  1. ManagerBasedEnvWarp, ManagerBasedRLEnvWarp and DirectRLEnvWarp create the configured video recorders, advance them once per step outside the recorded stages, and flush them on close. Main ignores the setting.
  2. isaaclab_rl no longer rejects --video with --frontend warp in pre_launch_video_config.
  3. Docs: the Warp environments page no longer says --video is rejected.

2. Evidence (MEASURED at 3e2eb74dd4b, desk RTX PRO 6000, task defaults: 4096 envs, 150 iterations)

  • Isaac-Cartpole-Direct --frontend warp presets=newton_mjwarp --video, Isaac-Cartpole --frontend warp ... and the torch-frontend Isaac-Cartpole ... --video each wrote two 1920x1080 clips of 200 frames whose frames change across the clip; none is flat (minimum per-frame spatial std 51.7–52.5).
  • test_apply_video_recording.py 28 passed, test_entrypoints_common.py 28 passed, Kit-lane test_simulation_context_visualizers.py 37 passed and test_video_recording.py 3 passed; test_video_recording_warp.py passes both cases (at b25c6c013f0).

3. Dependencies / follow-ups

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)

Release backport

  • Backport this pull request to the active release branch after it merges into main

Screenshots

Frame 25 of the Isaac-Cartpole-Direct Warp clip:

[ATTACH: /tmp/warp-video-frames/cartpole_direct_f25.png]

Checklist

Docker and GPU tests run on demand. Push the commits you want tested, then
comment run-ci on the pull request.

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with uv run isaaclab --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have validated the changed behavior with focused coverage and applied the test-audit criteria to any test changes
  • I have added a changelog fragment under source/<pkg>/changelog.d/ for every touched package (do not edit CHANGELOG.rst or bump package versions — CI handles that)
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@github-actions github-actions Bot added isaac-lab Related to Isaac Lab team documentation Improvements or additions to documentation labels Aug 10, 2026
The Warp environment classes never wired the VideoRecorder hook, so
env_cfg.video_recorders was dropped: ManagerBasedEnvWarp logged a warning
and DirectRLEnvWarp ignored it.

Create the recorders before the simulation starts, advance them once per
step after rendering and outside the captured stages, and flush them on
close, mirroring DirectRLEnv, ManagerBasedEnv and ManagerBasedRLEnv.

The test builds both hierarchies through WarpFrontend.build_env, so the
scene is InteractiveSceneWarp, and runs kitless from a Newton
SimulationCfg. It steps fewer times than one clip, so the clip reaches
disk only through close() and its frame count pins one tick per step.
apply_video_recording rejected --video on any non-torch frontend because
the Warp environments did not drive recorders. They do now, so drop the
guard.

Make the visualizer pre_launch_video_config adds for --video without
--viz frontend-aware: a headless Kit visualizer on the torch frontend,
as before, and a headless Newton GL visualizer on the Warp frontend.
The Warp frontend always runs Newton physics and is commonly run
without the Isaac Sim install that Kit needs.

Update the Warp environments guide, which still said --video is
rejected, and the 3.0 migration guide, which described the Kit default
as unconditional.
A headless Newton GL visualizer declared in sim.visualizer_cfgs recorded
a single flat colour. Headless visualizers do not render continuously,
so is_rendering is False, and has_active_visualizers only sees --viz.
The Newton cloner therefore resolved load_visual_shapes to False and
built the model without the shapes the viewer draws.

This is the visualizer --video injects on the Warp frontend, so every
Warp recording without --viz was empty. The same config is empty on the
torch frontend; --viz newton_gl was unaffected.

Have each configured visualizer that draws the Newton model request the
visual shapes before cloning, the contract camera sensors already use.

Assert the Warp recording test's frames show the scene and change over
the clip; without the fix both cases fail with a flat frame.
@hujc7

hujc7 commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator Author

run-ci

@isaaclab-bot isaaclab-bot Bot added ci:run-docker Trigger the on-demand Docker and GPU CI workflow and removed ci:run-docker Trigger the on-demand Docker and GPU CI workflow labels Oct 1, 2026
hujc7 added 3 commits October 4, 2026 02:12
Develop's SimulationContext.can_render_rgb_array() now returns True whenever
SimulationCfg.visualizer_cfgs lists a visualizer (isaac-sim#8198), so Newton cloning
loads visual shapes for a headless visualizer without the explicit
require_visual_shapes() call. The Warp video test records non-flat frames
without it, and records flat frames once that develop clause is removed.
Develop moved the Warp rejection into pre_launch_video_config when isaac-sim#8198
made --video take a source that launch_simulation resolves. Remove it there:
the default source already records from a headless newton_gl when --viz
selects no capture-capable visualizer, which is what Part 5 injected for the
Warp frontend by hand. The source-resolution test now pins that --frontend
warp resolves like the torch frontend, the Warp test uses the canonical
viz:newton_gl source, and the docs and fragment drop the Kit-vs-Newton GL
frontend split that no longer exists.
@github-actions github-actions Bot added asset New asset feature or request isaac-sim Related to Isaac Sim team isaac-mimic Related to Isaac Mimic team infrastructure labels Oct 4, 2026
@hujc7 hujc7 changed the title [Warp] Part 5/5: Allow --video on the Warp frontend and fix blank headless Newton recordings [Warp] Part 5/5: Allow --video on the Warp frontend Oct 4, 2026
@hujc7 hujc7 changed the title [Warp] Part 5/5: Allow --video on the Warp frontend [Warp] Part 6/6: Allow --video on the Warp frontend Oct 22, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

asset New asset feature or request documentation Improvements or additions to documentation infrastructure isaac-lab Related to Isaac Lab team isaac-mimic Related to Isaac Mimic team isaac-sim Related to Isaac Sim team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant