2. 加载并操作基础场景
任务说明
本案例目标是在 Isaac Sim 中加载一个内置基础场景(如简易房间或工厂环境),并完成视口的基本操控练习:平移(Pan)、旋转(Orbit)、缩放(Zoom)以及帧选(Frame Selection)。你将通过键盘快捷键与鼠标操作完成这些动作,并观察视口导航器的状态变化以确认操作生效。
实现步骤
Isaac Sim 提供两种加载场景的方式:通过 Omniverse 菜单加载内置素材,或通过 Python API 在启动时自动装载。本案例采用后者,以保证可复现性。以下代码将启动 Isaac Sim 并加载一个包含地面、简单几何体和光源的基础 USD 场景。
# 文件: load_basic_scene.py
# 运行方式: ./isaac_sim.sh --python load_basic_scene.py
from isaacsim import SimulationApp
# 初始化仿真应用(必须在导入其他 Isaac Sim 模块之前)
sim_app = SimulationApp({"headless": False})
# 等待场景加载完成
from isaacsim.core.utils.stage import add_reference_to_stage
from isaacsim.core.utils.extensions import enable_extension
# 启用必要的扩展
enable_extension("omni.kit.viewport.menus")
# 加载内置基础场景(简易仓库环境,包含货架、地面和灯光)
ASSET_PATH = "/Isaac/Environments/Simple_Room/Simple_Room.usd"
add_reference_to_stage(ASSET_PATH, "/World")
# 设置默认视角,便于观察
from omni.usd import get_context
stage = get_context().get_stage()
from pxr import UsdGeom
camera_prim = stage.GetPrimAtPath("/World/Camera")
if camera_prim.IsValid():
UsdGeom.XformCommonAPI(camera_prim).SetTranslate((3.0, 3.0, 2.0))
UsdGeom.XformCommonAPI(camera_prim).SetRotate((0, 0, 0), UsdGeom.XformCommonAPI.RotationOrderXYZ)
print("场景加载完成。请使用鼠标和键盘进行视口操作练习。")
print("操作提示:")
print(" - 平移: Alt + 鼠标中键拖拽")
print(" - 旋转: Alt + 鼠标左键拖拽")
print(" - 缩放: Alt + 鼠标右键拖拽 或 滚轮")
print(" - 帧选: F 键(选中物体后)")
# 保持仿真运行,直到用户关闭窗口
sim_app.run()
sim_app.shutdown()
操作练习与验证
运行上述脚本后,Isaac Sim 窗口将打开并显示一个带有货架、地面和光源的简易房间场景。请依次执行以下操作并观察视口变化:
- 平移视图:按住
Alt键并拖拽鼠标中键,场景整体应随鼠标移动而平移。 - 旋转视图:按住
Alt键并拖拽鼠标左键,视口将围绕当前观察点旋转,可从不同角度观察货架。 - 缩放视图:按住
Alt键并拖拽鼠标右键,或直接滚动滚轮,场景应放大或缩小。 - 帧选物体:在视口中点击选中任意货架或地面物体(物体高亮),然后按
F键,视口将自动调整使该物体居中并充满画面。
判定标准
- 场景成功加载:窗口中出现包含货架、地面和光照的 3D 场景,无报错日志。
- 平移、旋转、缩放操作均能实时响应,视口画面随鼠标输入连续变化。
- 帧选操作后,选中物体被置于视口中心且缩放比例合适。
- 若操作过程中视口无响应,请检查是否按住
Alt键,或确认鼠标焦点在视口区域内。
常见问题排查
- 场景未加载:确认 USD 路径是否正确,或尝试更换为其他内置场景(如
/Isaac/Environments/Factory/Factory.usd)。 - 视口无响应:检查是否在窗口模式下运行(非 headless),并确认鼠标焦点位于视口区域。
- 帧选无效:需先通过鼠标左键单击选中物体(物体出现高亮轮廓),再按
F键。