Isaac Sim Version 5.0.0
Operating System Windows 10/11
GPU Information
-
Model: NVIDIA GeForce RTX 4070 Ti
-
Driver Version: Latest
Topic Description How to Run a Viewport-Only Application Without Loading the Full Editor
Detailed Description I am looking for the official method to run an Isaac Sim application in a true “viewer-only” mode. My goal is to launch an application that displays only the simulation viewport, without loading the full editor application at all.
Currently, my script successfully launches the application and then programmatically hides the editor UI elements to create a viewer-like appearance. However, this approach still loads the entire editor in the background, which is inefficient for a standalone runtime application.
I am seeking a more direct and lightweight method to bypass the editor entirely and launch directly into a viewport. This would be crucial for creating efficient, distributable runtime applications for end-users.
Steps to Reproduce My current workaround, which loads the editor and then hides it, is as follows:
-
Create a Python script that launches
SimulationAppwith{"headless": False}. -
The script loads the full Isaac Sim editor environment.
-
After the editor is loaded, the script iterates through all UI windows and hides them, leaving only the viewport visible.
-
APIs are then used to disable selection and interaction within the viewport.
-
This is run via
python.bat your_script.py.
This process achieves the visual goal but does not prevent the initial loading and resource consumption of the full editor.
Error Messages Not applicable. This is a request for guidance on best practices for creating a lightweight runtime.
What I’ve Tried My current implementation successfully mimics a viewer by modifying the full editor after it has loaded. This includes:
-
Hiding all windows except the “Viewport” using
omni.ui.Workspace.show_window(). -
Disabling interactions using
omni.kit.viewport.utility.disable_selection()anddisable_context_menu(). -
Blocking object picking using
omni.usd.get_context().set_pickable("/", False).
Here is a summary of the script:
from omni.isaac.kit import SimulationApp
import omni.ui
import omni.kit.viewport.utility as vutil
from omni.isaac.core import World
from omni.isaac.core.utils.stage import open_stage
simulation_app = SimulationApp({“headless”: False})
simulation_app.update() # Wait for UI to initialize
for win in omni.ui.Workspace.get_windows():
if “Viewport” in str(win):
omni.ui.Workspace.show_window(str(win), True)
else:
omni.ui.Workspace.show_window(str(win), False)
world = World()
while simulation_app.is_running():
world.step(render=True)
simulation_app.close()
Additional Context My core questions are focused on achieving a true, editor-less runtime:
-
Is it possible to launch an Isaac Sim application that shows only the viewport, without loading the full editor UI in the first place?
-
If so, what is the official method? Does it involve a specific launch flag, a minimal
.kitfile configuration that excludes editor extensions (omni.kit.editor, etc.), or a different entry point thanSimulationApp? -
If a minimal
.kitfile is the recommended path, could you provide a basic template or guidance on which extensions are essential for a viewport-only simulation application?