Keep partitioned environments visible in viewport and XR views - #7270
Keep partitioned environments visible in viewport and XR views#7270rwiltz wants to merge 1 commit into
Conversation
RTX culls geometry carrying omni:scenePartition from any camera whose token does not match, and the Kit builds shipped with the pinned Isaac Sim do not implement /rtx/scenePartitioning/showAllPartitionsByDefault. Enabling the all-environment spectator view therefore had no effect: the Kit viewport and the XR view, which carry no token, lost every partitioned environment while environment-scoped camera sensors still rendered them. Default per-environment scene partitioning off for launches that render such a view. Partitioning only isolates per-environment camera renders, which a spectator launch does not need. An explicit ISAAC_LAB_ENABLE_ISAAC_RTX_PER_ENV_SCENE_PARTITION or a task-set IsaacRtxRendererCfg.enable_scene_partitioning still wins.
Greptile SummaryThis PR keeps partitioned environments visible in untokened viewport and XR views by disabling per-environment RTX scene partitioning by default for spectator launches while preserving explicit configuration precedence.
Confidence Score: 5/5The PR appears safe to merge, with no concrete blocking or independently actionable non-blocking issues identified. The changed launcher path preserves explicit scene-partitioning overrides, and the accompanying tests cover both spectator defaults and environment-variable precedence. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[AppLauncher resolves output intent] --> B{Spectator view requested?}
B -- No --> C[Keep scene partitioning enabled by default]
B -- Yes --> D[Pass showAllPartitionsByDefault Kit argument]
D --> E[Set per-environment partitioning fallback to disabled]
E --> F{Explicit environment or renderer config override?}
F -- Yes --> G[Use explicit value]
F -- No --> H[Do not author per-environment partition tokens]
H --> I[Partitioned geometry remains visible in viewport and XR]
Reviews (1): Last reviewed commit: "Keep partitioned environments visible in..." | Re-trigger Greptile |
There was a problem hiding this comment.
Isaac Lab Review Bot
The change defaults per-environment RTX scene partitioning off for visual-output launches so cameras without partition tokens can display environments on the pinned Kit build. The candidate concern about video and livestream changing camera-sensor content is not established by the supplied context; those modes already share the spectator-view requirement targeted by the fix.
- Design and architecture: The process-wide renderer fallback is set during AppLauncher Kit-argument resolution and consumed when IsaacRtxRendererCfg derives its default. This is a deliberate compatibility path for viewport, recording, livestream, and XR output, while non-spectator launches retain the existing enabled default.
- API: The new setter is documented and changelog-covered. The environment variable continues to take precedence, invalid values still raise, and an explicit IsaacRtxRendererCfg value remains authoritative. The mutable module-level default introduces process-wide state, but the patch documents that behavior and isolates it in tests.
- Implementation: The AppLauncher trigger, Kit setting injection, renderer-default lookup, environment override, and test reset paths were traced. Tests cover visual-output intent and environment-variable precedence. No supplied evidence demonstrates that the intended video or livestream branches corrupt environment-scoped camera output.
No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.
Automated review; human maintainers own approval decisions.
| setting = argument.partition("=")[0] | ||
| if not any(arg.partition("=")[0] == setting for arg in sys.argv + self._kit_args): | ||
| self._kit_args.append(argument) | ||
| self._disable_per_env_scene_partitioning_default() |
There was a problem hiding this comment.
flipping this here would revert the default behavior we flipped. once the public package includes the fix we won't need this. maybe we can mark this with a temporary workaround or we can condition on isaac sim version
#Description
AppLauncherenables the all-environment spectator view by passing--/rtx/scenePartitioning/showAllPartitionsByDefault=truewhenever a Kit visualizer,viewport, recording, livestream, or XR is requested. The Kit builds shipped with the
pinned Isaac Sim (6.0.1.0, Kit
110.1.2+production.326809) do not implement thatsetting — it appears nowhere in the
omni.hydra.rtxbinaries.Since per-environment scene partitioning became the default in #7053, RTX therefore
culls every prim carrying
omni:scenePartitionfrom cameras without a matching token.The Kit viewport and the XR view carry no token, so partitioned environments vanish from
both while environment-scoped camera sensors still render them. RTX honors the token
only for non-instanced geometry, so the failure looks selective: on
IsaacContrib-PickPlace-Locomanipulation-G1-Absthe robot and packing table (USDinstance proxies) render, while the steering wheel and bin (plain meshes) appear only in
the XR picture-in-picture feed.
KitVisualizer._apply_viewport_camera_scene_partition()has a working fallback thattags the viewport camera with
env_0, but it is skipped because the ineffective settingreads back as
true. Nothing tags the XR camera at all.This defaults per-environment scene partitioning off for launches that render a view
without a partition token, in the same
AppLauncherbranch that already decides visualoutput intent. Partitioning only isolates per-environment camera renders, which a
spectator launch does not need. The Kit argument is still passed, so relaxing the gate
is a one-line change once the Isaac Sim bump #7053 assumed (alpha.50 / Kit 360924) lands.
Precedence is unchanged: an explicit
ISAAC_LAB_ENABLE_ISAAC_RTX_PER_ENV_SCENE_PARTITIONor a task-set
IsaacRtxRendererCfg.enable_scene_partitioningstill wins.Reproducer:
Type of change
Checklist
pre-commitchecks with./isaaclab.sh --formatsource/<pkg>/changelog.d/for every touched package (do not editCHANGELOG.rstor bumpextension.toml— CI handles that)CONTRIBUTORS.mdor my name already exists there