Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
5057b17
working commit
ooctipus Feb 6, 2026
f1eb48c
fixed some bug and added deprecation cycle
ooctipus Feb 6, 2026
3f15770
save
ooctipus Feb 7, 2026
5efc9a1
fix bug
ooctipus Feb 7, 2026
7ab8c21
pass precommit
ooctipus Feb 7, 2026
7826c9a
update changelog and extension
ooctipus Feb 7, 2026
101ea27
rename physx ov visualizer to ov visualizer
ooctipus Feb 7, 2026
ff70cbe
bug fixes
ooctipus Feb 7, 2026
2607065
ensure proper stage clearance
ooctipus Feb 7, 2026
b045603
fix small bugs
ooctipus Feb 7, 2026
3204739
resolve deprecation api calls
ooctipus Feb 7, 2026
5101e4e
simplified visualizer implementation
ooctipus Feb 7, 2026
576d7d7
clean up
ooctipus Feb 7, 2026
753a29d
pass precommit
ooctipus Feb 7, 2026
a570537
migrate isaacsim prim usage to isaaclab prim usage
ooctipus Feb 7, 2026
cdc03b6
fix problematic double nested deformable test
ooctipus Feb 7, 2026
f61fe18
fixes bugs
ooctipus Feb 8, 2026
ce190cd
fixes bugs
ooctipus Feb 8, 2026
7538c65
fix stage clearance ordering issue
ooctipus Feb 8, 2026
f2116eb
fix prim delete predicate
ooctipus Feb 8, 2026
db67a35
fix drop down logic
ooctipus Feb 8, 2026
477008e
simplified the rendering mode query
ooctipus Feb 8, 2026
88185a8
pass precommit
ooctipus Feb 8, 2026
cc2fc63
rename drop manager for cfg for simplicity
ooctipus Feb 8, 2026
4332262
fixed many test bugs
ooctipus Feb 9, 2026
d92798e
remove redundancy
ooctipus Feb 9, 2026
b8dbe92
added annotation to fix docs
ooctipus Feb 9, 2026
a8e1dc0
initial work on omni physx compat newton-based viewers
matthewtrepte Jan 22, 2026
d93b6de
testing
matthewtrepte Jan 24, 2026
b75b419
wip: initial design for adding viz
matthewtrepte Jan 27, 2026
f3ef06a
simplify
matthewtrepte Jan 27, 2026
550ced3
correction
matthewtrepte Jan 27, 2026
a69482b
clean
matthewtrepte Jan 27, 2026
3728ac0
rm files
matthewtrepte Jan 27, 2026
ddf646a
revert file
matthewtrepte Jan 27, 2026
79ecb5b
fixes + rm contact debug
matthewtrepte Jan 27, 2026
c44efe7
fix ov visualizer, edit docs
matthewtrepte Jan 28, 2026
223c708
prepping for review
matthewtrepte Jan 29, 2026
f4c5cc7
sanatize ov camera path
matthewtrepte Jan 30, 2026
b5c03cd
refactor scene data provider, unify apis
matthewtrepte Feb 3, 2026
181a21c
prepr
matthewtrepte Feb 6, 2026
2dda785
clean
matthewtrepte Feb 6, 2026
f6bf0e2
add initial impl for partial viz
matthewtrepte Feb 10, 2026
b1f04ee
wip on fixing merge
matthewtrepte Feb 10, 2026
8b539e7
fixes
matthewtrepte Feb 10, 2026
2132141
remove files
matthewtrepte Feb 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion apps/isaaclab.python.kit
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ keywords = ["experience", "app", "usd"]
"isaacsim.core.api" = {}
"isaacsim.core.cloner" = {}
"isaacsim.core.nodes" = {}
"isaacsim.core.simulation_manager" = {}
"isaacsim.core.throttling" = {}
"isaacsim.core.utils" = {}
"isaacsim.core.version" = {}
Expand Down
1 change: 0 additions & 1 deletion apps/isaacsim_5/isaaclab.python.kit
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ keywords = ["experience", "app", "usd"]
"isaacsim.core.api" = {}
"isaacsim.core.cloner" = {}
"isaacsim.core.nodes" = {}
"isaacsim.core.simulation_manager" = {}
"isaacsim.core.throttling" = {}
"isaacsim.core.utils" = {}
"isaacsim.core.version" = {}
Expand Down
4 changes: 4 additions & 0 deletions docs/source/api/lab_physx/isaaclab_physx.assets.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
isaaclab\_physx.assets
======================

.. automodule:: isaaclab_physx.assets
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Visualization

Isaac Lab offers several lightweight visualizers for real-time simulation inspection and debugging. Unlike renderers that process sensor data, visualizers are meant for fast, interactive feedback.

You can use any visualizer regardless of your chosen physics engine or rendering backend.
You can launch any number of visualizers at once, and they work with any physics engine or rendering backend.


Overview
Expand All @@ -31,7 +31,7 @@ Isaac Lab supports three visualizer backends, each optimized for different use c
- Webviewer, time scrubbing, recording export


*The following visualizers are shown training the Isaac-Velocity-Flat-Anymal-D-v0 environment.*
*The following visualizers are shown training Isaac-Velocity-Flat-Anymal-D-v0 with 4096 concurrent environments.*

.. figure:: ../../_static/visualizers/ov_viz.jpg
:width: 100%
Expand Down Expand Up @@ -139,8 +139,8 @@ Omniverse Visualizer
window_height=720, # Viewport height in pixels

# Camera settings
camera_position=(8.0, 8.0, 3.0), # Initial camera position (x, y, z)
camera_target=(0.0, 0.0, 0.0), # Camera look-at target
camera_position=(8.0, 8.0, 3.0), # Initial camera position (x, y, z)
camera_target=(0.0, 0.0, 0.0), # Camera look-at target

# Feature toggles
enable_markers=True, # Enable visualization markers
Expand Down Expand Up @@ -195,8 +195,8 @@ Newton Visualizer
window_height=1080, # Window height in pixels

# Camera settings
camera_position=(8.0, 8.0, 3.0), # Initial camera position (x, y, z)
camera_target=(0.0, 0.0, 0.0), # Camera look-at target
camera_position=(8.0, 8.0, 3.0), # Initial camera position (x, y, z)
camera_target=(0.0, 0.0, 0.0), # Camera look-at target

# Performance tuning
update_frequency=1, # Update every N frames (1=every frame)
Expand All @@ -213,9 +213,9 @@ Newton Visualizer
enable_wireframe=False, # Enable wireframe mode

# Color customization
background_color=(0.53, 0.81, 0.92), # Sky/background color (RGB [0,1])
ground_color=(0.18, 0.20, 0.25), # Ground plane color (RGB [0,1])
light_color=(1.0, 1.0, 1.0), # Directional light color (RGB [0,1])
sky_upper_color=(0.53, 0.81, 0.92), # Sky upper color (RGB [0,1])
sky_lower_color=(0.18, 0.20, 0.25), # Sky lower color (RGB [0,1])
light_color=(1.0, 1.0, 1.0), # Directional light color (RGB [0,1])
)


Expand All @@ -241,8 +241,8 @@ Rerun Visualizer
web_port=9090, # Port for local web viewer (launched in browser)

# Camera settings
camera_position=(8.0, 8.0, 3.0), # Initial camera position (x, y, z)
camera_target=(0.0, 0.0, 0.0), # Camera look-at target
camera_position=(8.0, 8.0, 3.0), # Initial camera position (x, y, z)
camera_target=(0.0, 0.0, 0.0), # Camera look-at target

# History settings
keep_historical_data=False, # Keep transforms for time scrubbing
Expand All @@ -260,7 +260,7 @@ To reduce overhead when visualizing large-scale environments, consider:

- Using Newton instead of Omniverse or Rerun
- Reducing window sizes
- Higher update frequencies
- Lower update frequencies
- Pausing visualizers while they are not being used


Expand Down
3 changes: 1 addition & 2 deletions docs/source/how-to/optimize_stage_creation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@ be called after the stage is created.
sim = SimulationContext(cfg=SimulationCfg(create_stage_in_memory=True))

# grab stage in memory and set stage context
stage_in_memory = sim.get_initial_stage()
with stage_utils.use_stage(stage_in_memory):
with stage_utils.use_stage(sim.stage):
# create cartpole scene
scene_cfg = CartpoleSceneCfg(num_envs=1024)
scene = InteractiveScene(scene_cfg)
Expand Down
11 changes: 5 additions & 6 deletions scripts/benchmarks/benchmark_view_comparison.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,7 @@
import time

import torch

from isaacsim.core.simulation_manager import SimulationManager
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.sim.views import XformPrimView
Expand Down Expand Up @@ -98,7 +97,9 @@ def benchmark_view(view_type: str, num_iterations: int) -> tuple[dict[str, float
sim_utils.create_new_stage()
# Create simulation context
start_time = time.perf_counter()
sim_cfg = sim_utils.SimulationCfg(dt=0.01, device=args_cli.device, use_fabric=(view_type == "xform_fabric"))
sim_cfg = sim_utils.SimulationCfg(
device=args_cli.device, physics=PhysxCfg(dt=0.01, use_fabric=(view_type == "xform_fabric"))
)
sim = sim_utils.SimulationContext(sim_cfg)
stage = sim_utils.get_current_stage()

Expand Down Expand Up @@ -138,7 +139,7 @@ def benchmark_view(view_type: str, num_iterations: int) -> tuple[dict[str, float
num_prims = view.count
view_name = "XformPrimView (Fabric)"
else: # physx
physics_sim_view = SimulationManager.get_physics_sim_view()
physics_sim_view = sim.physics_manager.get_physics_sim_view()
view = physics_sim_view.create_rigid_body_view(pattern)
num_prims = view.count
view_name = "PhysX RigidBodyView"
Expand Down Expand Up @@ -196,8 +197,6 @@ def benchmark_view(view_type: str, num_iterations: int) -> tuple[dict[str, float
computed_results["world_orientations_after_set"] = orientations_after_set.clone()

# close simulation
sim.clear()
sim.clear_all_callbacks()
sim.clear_instance()

return timing_results, computed_results
Expand Down
2 changes: 0 additions & 2 deletions scripts/benchmarks/benchmark_xform_prim_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,8 +274,6 @@ def benchmark_xform_prim_view( # noqa: C901
timing_results["interleaved_world_set_get"] = (time.perf_counter() - start_time) / num_iterations

# close simulation
sim.clear()
sim.clear_all_callbacks()
sim.clear_instance()

return timing_results, computed_results
Expand Down
3 changes: 2 additions & 1 deletion scripts/demos/bin_packing.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import math

import torch
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
import isaaclab.utils.math as math_utils
Expand Down Expand Up @@ -327,7 +328,7 @@ def main() -> None:
None: The function drives the simulation for its side-effects.
"""
# Load kit helper
sim_cfg = sim_utils.SimulationCfg(dt=0.005, device=args_cli.device)
sim_cfg = sim_utils.SimulationCfg(device=args_cli.device, physics=PhysxCfg(dt=0.005))
sim = SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view((2.5, 0.0, 4.0), (0.0, 0.0, 2.0))
Expand Down
3 changes: 2 additions & 1 deletion scripts/demos/bipeds.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"""Rest everything follows."""

import torch
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.assets import Articulation
Expand Down Expand Up @@ -114,7 +115,7 @@ def run_simulator(sim: sim_utils.SimulationContext, robots: list[Articulation],
def main():
"""Main function."""
# Load kit helper
sim_cfg = sim_utils.SimulationCfg(dt=0.005, device=args_cli.device)
sim_cfg = sim_utils.SimulationCfg(device=args_cli.device, physics=PhysxCfg(dt=0.005))
sim = SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view(eye=[3.0, 0.0, 2.25], target=[0.0, 0.0, 1.0])
Expand Down
3 changes: 2 additions & 1 deletion scripts/demos/deformables.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import numpy as np
import torch
import tqdm
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.assets import DeformableObject, DeformableObjectCfg
Expand Down Expand Up @@ -178,7 +179,7 @@ def run_simulator(sim: sim_utils.SimulationContext, entities: dict[str, Deformab
def main():
"""Main function."""
# Initialize the simulation context
sim_cfg = sim_utils.SimulationCfg(dt=0.01, device=args_cli.device)
sim_cfg = sim_utils.SimulationCfg(device=args_cli.device, physics=PhysxCfg(dt=0.01))
sim = sim_utils.SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view([4.0, 4.0, 3.0], [0.5, 0.5, 0.0])
Expand Down
3 changes: 2 additions & 1 deletion scripts/demos/hands.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@

import numpy as np
import torch
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.assets import Articulation
Expand Down Expand Up @@ -143,7 +144,7 @@ def run_simulator(sim: sim_utils.SimulationContext, entities: dict[str, Articula
def main():
"""Main function."""
# Initialize the simulation context
sim_cfg = sim_utils.SimulationCfg(dt=0.01, device=args_cli.device)
sim_cfg = sim_utils.SimulationCfg(device=args_cli.device, physics=PhysxCfg(dt=0.01))
sim = sim_utils.SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view(eye=[0.0, -0.5, 1.5], target=[0.0, -0.2, 0.5])
Expand Down
3 changes: 2 additions & 1 deletion scripts/demos/markers.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"""Rest everything follows."""

import torch
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.markers import VisualizationMarkers, VisualizationMarkersCfg
Expand Down Expand Up @@ -94,7 +95,7 @@ def define_markers() -> VisualizationMarkers:
def main():
"""Main function."""
# Load kit helper
sim_cfg = sim_utils.SimulationCfg(dt=0.01, device=args_cli.device)
sim_cfg = sim_utils.SimulationCfg(device=args_cli.device, physics=PhysxCfg(dt=0.01))
sim = SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view([0.0, 18.0, 12.0], [0.0, 3.0, 0.0])
Expand Down
4 changes: 3 additions & 1 deletion scripts/demos/multi_asset.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@

import random

from isaaclab_physx.physics import PhysxCfg

from pxr import Gf, Sdf

import isaaclab.sim as sim_utils
Expand Down Expand Up @@ -275,7 +277,7 @@ def run_simulator(sim: SimulationContext, scene: InteractiveScene):
def main():
"""Main function."""
# Load kit helper
sim_cfg = sim_utils.SimulationCfg(dt=0.005, device=args_cli.device)
sim_cfg = sim_utils.SimulationCfg(device=args_cli.device, physics=PhysxCfg(dt=0.005))
sim = SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view([2.5, 0.0, 4.0], [0.0, 0.0, 2.0])
Expand Down
3 changes: 2 additions & 1 deletion scripts/demos/procedural_terrain.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
import random

import torch
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.assets import AssetBase
Expand Down Expand Up @@ -154,7 +155,7 @@ def run_simulator(sim: sim_utils.SimulationContext, entities: dict[str, AssetBas
def main():
"""Main function."""
# Initialize the simulation context
sim_cfg = sim_utils.SimulationCfg(dt=0.01, device=args_cli.device)
sim_cfg = sim_utils.SimulationCfg(device=args_cli.device, physics=PhysxCfg(dt=0.01))
sim = sim_utils.SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view(eye=[5.0, 5.0, 5.0], target=[0.0, 0.0, 0.0])
Expand Down
5 changes: 3 additions & 2 deletions scripts/demos/quadcopter.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"""Rest everything follows."""

import torch
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.assets import Articulation
Expand All @@ -47,7 +48,7 @@
def main():
"""Main function."""
# Load kit helper
sim_cfg = sim_utils.SimulationCfg(dt=0.005, device=args_cli.device)
sim_cfg = sim_utils.SimulationCfg(device=args_cli.device, physics=PhysxCfg(dt=0.005))
sim = SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view(eye=[0.5, 0.5, 1.0], target=[0.0, 0.0, 0.5])
Expand All @@ -73,7 +74,7 @@ def main():
# Fetch relevant parameters to make the quadcopter hover in place
prop_body_ids = robot.find_bodies("m.*_prop")[0]
robot_mass = robot.root_view.get_masses().sum()
gravity = torch.tensor(sim.cfg.gravity, device=sim.device).norm()
gravity = torch.tensor(sim.cfg.physics.gravity, device=sim.device).norm()

# Now we are ready!
print("[INFO]: Setup complete...")
Expand Down
3 changes: 2 additions & 1 deletion scripts/demos/quadrupeds.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@

import numpy as np
import torch
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.assets import Articulation
Expand Down Expand Up @@ -170,7 +171,7 @@ def main():
"""Main function."""

# Initialize the simulation context
sim = sim_utils.SimulationContext(sim_utils.SimulationCfg(dt=0.01))
sim = sim_utils.SimulationContext(sim_utils.SimulationCfg(physics=PhysxCfg(dt=0.01)))
# Set main camera
sim.set_camera_view(eye=[2.5, 2.5, 2.5], target=[0.0, 0.0, 0.0])
# design scene
Expand Down
5 changes: 4 additions & 1 deletion scripts/demos/sensors/cameras.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import matplotlib.pyplot as plt
import numpy as np
import torch
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.assets import ArticulationCfg, AssetBaseCfg
Expand Down Expand Up @@ -280,7 +281,9 @@ def run_simulator(sim: sim_utils.SimulationContext, scene: InteractiveScene):
def main():
"""Main function."""
# Initialize the simulation context
sim_cfg = sim_utils.SimulationCfg(dt=0.005, device=args_cli.device, use_fabric=not args_cli.disable_fabric)
sim_cfg = sim_utils.SimulationCfg(
device=args_cli.device, physics=PhysxCfg(dt=0.005, use_fabric=not args_cli.disable_fabric)
)
sim = sim_utils.SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view(eye=[3.5, 3.5, 3.5], target=[0.0, 0.0, 0.0])
Expand Down
3 changes: 2 additions & 1 deletion scripts/demos/sensors/contact_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"""Rest everything follows."""

import torch
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.assets import AssetBaseCfg, RigidObjectCfg
Expand Down Expand Up @@ -154,7 +155,7 @@ def main():
"""Main function."""

# Initialize the simulation context
sim_cfg = sim_utils.SimulationCfg(dt=0.005, device=args_cli.device)
sim_cfg = sim_utils.SimulationCfg(device=args_cli.device, physics=PhysxCfg(dt=0.005))
sim = sim_utils.SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view(eye=[3.5, 3.5, 3.5], target=[0.0, 0.0, 0.0])
Expand Down
3 changes: 2 additions & 1 deletion scripts/demos/sensors/frame_transformer_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"""Rest everything follows."""

import torch
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.assets import AssetBaseCfg, RigidObjectCfg
Expand Down Expand Up @@ -148,7 +149,7 @@ def main():
"""Main function."""

# Initialize the simulation context
sim_cfg = sim_utils.SimulationCfg(dt=0.005, device=args_cli.device)
sim_cfg = sim_utils.SimulationCfg(device=args_cli.device, physics=PhysxCfg(dt=0.005))
sim = sim_utils.SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view(eye=[3.5, 3.5, 3.5], target=[0.0, 0.0, 0.0])
Expand Down
3 changes: 2 additions & 1 deletion scripts/demos/sensors/imu_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"""Rest everything follows."""

import torch
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.assets import AssetBaseCfg
Expand Down Expand Up @@ -121,7 +122,7 @@ def main():
"""Main function."""

# Initialize the simulation context
sim_cfg = sim_utils.SimulationCfg(dt=0.005, device=args_cli.device)
sim_cfg = sim_utils.SimulationCfg(device=args_cli.device, physics=PhysxCfg(dt=0.005))
sim = sim_utils.SimulationContext(sim_cfg)
# Set main camera
sim.set_camera_view(eye=[3.5, 3.5, 3.5], target=[0.0, 0.0, 0.0])
Expand Down
Loading