Make the tiled ground plane the default - #7399
Conversation
6252f3d to
d1b1cdc
Compare
|
Thanks—this asset-level approach looks good, and the authored metric UVs are the important part. Could we make Newton #4007 is now merged. Newton supports the standard OpenUSD path:
That change intentionally does not read OmniPBR mapping inputs ( My suggestion:
This should give Kit, Newton GL, and Newton RTX the same tiling while preventing the two mappings from drifting. Is there a Kit-specific reason this asset still needs object projection instead of consuming the authored |
|
One clarification on the maintenance boundary: the current dual-authoring approach—OmniPBR object projection plus equivalent authored UVs—is not ideal because the same tiling semantics have two sources of truth and can drift. Making The cleanest end state, if Kit provides the required visual fidelity, is therefore a single standard |
The bundled plane carried the same 5 m tiling twice: an OmniPBR object projection for Kit and an equivalent face-varying primvars:st for renderers that consume mesh UVs. Two sources of truth for one mapping can drift, and only the UV set was rescaled when the plane was resized. Disable project_uvw and set an identity texture_scale so the OmniPBR shader reads UV set 0. primvars:st is now the sole mapping authority for Kit, Newton GL, and Newton Viewer RTX, and the rescale in spawn_ground_plane() keeps the tile metric in all three rather than in two. The MDL output is kept: Newton resolves the albedo and the conventional st primvar from it today, and a universal UsdPreviewSurface output would report no base color to Newton, which falls back to 0.5 grey and darkens the plane.
|
Pushed What it does. What it does not do, and why I am walking back the second half of my earlier suggestion: adding a universal So one mapping, still one material description. Worth filing upstream that a |
…revert Reverting a2a6329 (superseded by cherry-picking PR isaac-sim#7399's asset-level ground-plane fix) also removed _hash_geometry's UV-awareness in newton_visualizer.py, which is a separate concern -- it prevents Newton GL/RTX's prototype cache from conflating differently-UV-mapped textured meshes in general, not just the ground plane. PR isaac-sim#7399 doesn't touch isaaclab_visualizers/ at all, so there's no replacement for this piece. Re-applied it standalone; confirmed via test_newton_viewer_geometry_hash_distinguishes_uvs (was failing after the revert, passes now).
Uses the new default ground plane (PR isaac-sim#7399, cherry-picked in e769c1b/ 6878e5b/38403630a4/325655dcc3) instead of the old black-floor default. All 5 visualizers now show a proper floor (Kit, Newton GL, Newton RTX, Rerun, Viser), where the black-floor/green-sky combination on Newton GL was the original problem this whole thread investigated.
| """Test loading prim for the ground plane from grid world USD.""" | ||
| # Spawn ground plane | ||
| cfg = sim_utils.GroundPlaneCfg(color=(0.1, 0.1, 0.1), size=(10.0, 10.0)) | ||
| cfg = sim_utils.GroundPlaneCfg(color=(0.1, 0.1, 0.1), size=(10.0, 20.0)) |
There was a problem hiding this comment.
hm why is the ground plane rectangular?
This reverts commits 325655d, 3840363, and 6878e5b -- the cherry-picked ground-plane asset/texture change from the still-open upstream PR isaac-sim#7399. Its default_ground_plane.usda asset fails to parse as a valid USD layer on CI ("No collision prim found at path: '/World/ground'"), breaking Installation Tests.
…osted media Restructures docs/source/overview/core-concepts/visualization.rst, docs/source/how-to/record_video.rst, and docs/source/how-to/visualizer_tiled_camera.rst into docs/source/concepts/visualization.rst, docs/source/features/record_video.rst, and docs/source/features/visualizer_tiled_camera.rst, with a hero grid, per-visualizer sections, and shared-features overview covering all 5 visualizers (Kit, Newton GL, Newton RTX, Rerun, Viser). Media - All demo clips are mp4 (h.264) instead of GIFs, hosted on https://download.isaacsim.omniverse.nvidia.com/isaaclab/images/ rather than bundled in the repo; only the two marker screenshots (markers_anymal_d.jpg, markers_franka.jpg) stay local. - Consolidated doc-media generation from 11 ad hoc scripts down to 4 (tools/docs/media/visualizers/capture_common.py, capture_hero.py, capture_showcase.py, capture_streaming.py), each independently re-runnable to regenerate its clips. Bug fixes (isaaclab_visualizers) - Fixed NewtonGLVisualizer.render_rgb_array omitting visualization markers from recorded video. - Fixed NewtonRTXVisualizer unconditionally reporting the streaming/tiled camera view as unsupported; streaming_view=True now creates the owned streaming camera sensor for headless capture. - Implemented RerunVisualizer.set_camera_view / ViserVisualizer.set_camera_view (previously no-op stubs). - Fixed run_video_recording.py's Example 3 Kit streaming view crashing on a stale camera prim path. Reverted from this branch - The cherry-picked ground-plane texture asset (PR isaac-sim#7399) and Newton UV-collision prototype-cache fix (PR isaac-sim#7352), both out of scope for this PR. - Viser ambient-light (light_intensity) and Rerun/Viser HUD-toggle (show_hud) options, added alongside the legitimate visualizer fixes above but out of scope for this PR.
This reverts commit 8a57729.
|
run-ci |
Description
Bundle a warm-white ground plane with NVIDIA-green metric grid lines and make it the default for
GroundPlaneCfgand plane terrains.This change:
primvars:stthe sole texture-mapping authority for Kit, Newton RTX, and Newton GL;st) with projection disabled and identity texture scale;GroundPlaneCfg.sizechanges so its 5 m texture tile and 1 m grid stay metric;The bounded visual mesh matters for standalone visualizers: the previous 2,000 km mesh exhausted useful UV precision near the origin and could sample one green texel across the entire view. Collision behavior is unchanged because the USD
Planecollider is infinite.This is the asset-level solution that superseded #7352. It does not require a Newton-specific OmniPBR compatibility patch or Nucleus upload. Renderer tone mapping and light models can still produce different final brightness.
Renderer comparison
All clips use the bundled default floor, one environment, 300 frames at 60 FPS (5 seconds), and a fixed camera per task. Each renderer panel is captured at 1280 × 720. Kit uses PhysX; Newton RTX and Newton GL use MJWarp.
To keep the warm-white floor below clipping and make the grid legible, these presentation captures use fixed neutral calibration: Kit uses each environment's neutral scene light at 40% of its normal intensity, Newton RTX uses a neutral dome at intensity 400, and Newton GL uses the established neutral ambient profile at exposure 0.40. This calibration affects the media only and is not part of the runtime ground-plane change.
ANYmal-D walking policy
Full-resolution ANYmal-D MP4
Cartpole policy
Full-resolution Cartpole MP4 · Both environments in one MP4
Type of change
Release backport
developTesting
uv run --frozen --no-sync isaaclab -fuv run --frozen --no-sync pytest source/isaaclab/test/sim/test_default_ground_plane.py -q(3 passed)uv run --frozen --no-sync pytest source/isaaclab/test/sim/test_spawn_from_files.py::test_spawn_ground_plane -q(1 passed)uv run --frozen --no-sync pytest source/isaaclab/test/terrains/test_terrain_importer.py::test_plane -q(4 passed)Checklist
uv run --frozen --no-sync isaaclab -fsource/<pkg>/changelog.d/for every touched packageCONTRIBUTORS.md