
一、从图看Isaac Sim的“层级结构”
这张图直观展示了Isaac Sim中5个核心概念的包含关系:
-
最外层:Application(App)
对应图中绿色边框的“软件界面”——它是整个Isaac Sim的“容器”,是你启动的程序本身。
编程中,你需要先初始化Application对象,才能加载后续所有模块。 -
中间层:Simulation(Sim)
对应图中黄色区域——它是App内部的“仿真引擎核心”,负责调度物理计算、时间推进等。
你的场景、世界都会运行在Sim的调度下。 -
核心层:World
对应图中蓝色区域——它是Sim内的“虚拟世界实例”,一个App可以创建多个World(但通常用一个),用来管理所有场景、物体。 -
内容层:Scene + Stage
对应图中蓝色圆圈内的部分:- Stage(红色标识):是World里的“数据容器”,存储所有3D物体、灯光、相机等资源的原始数据(比如模型文件、位置信息)。
- Scene(灰色标识):是Stage的“逻辑封装”,你通过Scene来操作Stage里的物体(比如移动模型、添加物理属性)。
二、Python编程中的实际对应
用Isaac Sim的Python API时,这些概念会对应具体的代码对象:
from omni.isaac.kit import SimulationApp
# 启动App(参数是配置文件,默认用空即可)
sim_app = SimulationApp()
from omni.isaac.core import World
# 在App的Sim中创建World实例
my_world = World()
# 也可以显式指定Sim:World(stage_units_in_meters=1.0, simulation_app=sim_app)
World会自动创建scene对象,而Stage是Scene的底层依赖:
# 获取当前World的Scene
my_scene = my_world.scene
# 通过Scene向Stage添加物体(比如立方体)
from omni.isaac.core.objects import DynamicCuboid
cube = my_scene.add(
DynamicCuboid(prim_path="/World/Cube", # Stage中存储的路径
name="my_cube",
position=[0,0,0.5],
scale=[0.1,0.1,0.1])
)
# 从Stage中读取物体(也可以通过Scene获取)
from pxr import UsdGeom
stage = my_world.stage # 获取当前World的Stage
cube_prim = stage.GetPrimAtPath("/World/Cube")
# 初始化World(加载Stage中的资源)
my_world.reset()
# 循环运行仿真
while sim_app.is_running():
my_world.step(render=True) # Sim推进一帧,同时渲染画面
三、总结:概念关系表
| Application | 整个Isaac Sim程序容器 | SimulationApp()创建的对象 |
| Simulation | 仿真引擎调度核心 | 隐式关联在World中 |
| World | 虚拟世界实例 | World()创建的对象 |
| Stage | 3D资源的数据存储层 | my_world.stage |
| Scene | 操作Stage资源的逻辑层 | my_world.scene |




