4. 熟悉 Isaac Sim 界面:Stage、Viewport、Property、Content Browser、Script Editor 与 UI 布局自定义

说实话,刚打开 Isaac Sim 的时候,我第一反应是「这玩意儿面板也太多了吧?」。别慌,这章我带你把几个核心面板挨个捋一遍。搞清楚了它们各自是干嘛的,你后面做合成数据生成才会顺手。

4.1 Stage 面板:场景的「骨架」

Stage 面板在默认布局的左上角。它展示的是场景的层级结构——说白了,就是一棵树。你场景里所有的物体、灯光、相机、材质,全挂在这棵树上。

核心要点: Stage 面板里每个条目都是一个 Prim(Primitive,基本体)。Isaac Sim 里一切皆 Prim。

我个人习惯在 Stage 面板里做三件事:

  • 选中物体:在 Stage 里点一下,Viewport 里对应的物体就会被高亮。
  • 调整层级:拖拽 Prim 可以改变父子关系。比如把相机放到一个空物体下面,方便整体移动。
  • 右键操作:右键一个 Prim,可以添加子项、删除、复制,或者查看它的引用路径。
小技巧: 在 Stage 面板里按 Ctrl+F 可以搜索 Prim 名称。场景复杂时,这招能救命。

4.2 Viewport:你的「眼睛」

Viewport 就是那个 3D 渲染窗口。你摆的物体、调的光,最终效果全在这里看。默认情况下,Viewport 上方有一排工具栏,用来控制视角、显示模式、Gizmo 工具等。

我记得刚开始用的时候,经常不小心把视角转得找不着北。后来发现一个快捷键:F 键可以聚焦到选中的物体上。

操作 鼠标/快捷键 说明
旋转视角 按住鼠标中键拖动 围绕场景中心旋转
平移视角 按住鼠标右键拖动 上下左右平移
缩放视角 滚动滚轮 拉近拉远
聚焦物体 选中物体后按 F 快速定位到物体
切换透视/正交 Viewport 菜单栏 合成数据常用透视模式
注意: Viewport 里看到的「效果」不一定等于最终渲染输出。合成数据生成时,请以 Replicator 的相机输出为准。

4.3 Property 面板:调参数的「控制台」

Property 面板通常在 Stage 面板的下方或右侧。你选中一个 Prim 后,它的所有属性都会在这里列出来。位置、旋转、缩放、材质、物理属性……全在这。

举个例子,你选中一个 Cube,在 Property 面板里找到 Transform 栏,就能直接输入 X/Y/Z 的数值来精确定位。我曾经在项目里需要把 100 个物体摆成阵列,就是在 Property 面板里批量改的——虽然累,但管用。

常用属性栏:
  • Transform:位置、旋转、缩放
  • Mesh:网格数据、顶点数
  • Material:材质绑定
  • Semantics:语义标签(合成数据的关键!)
  • Physics:刚体、碰撞形状

4.4 Content Browser:你的「素材库」

Content Browser 在窗口底部,默认是折叠的。点开它,你会看到 Isaac Sim 自带的素材库:模型、材质、纹理、灯光预设……应有尽有。

做合成数据时,我经常从这里拖一些基础物体(比如椅子、桌子、瓶子)进场景,然后给它们打上语义标签。省去了自己建模的麻烦。

  • 拖拽使用:直接从 Content Browser 拖一个物体到 Viewport 或 Stage 面板,它就出现在场景里了。
  • 搜索功能:右上角有搜索框,输入关键词(比如 "chair")快速找素材。
  • 自定义目录:你可以把自己的模型放到指定路径下,Content Browser 也能识别。
我的习惯: 我会在 Content Browser 里建一个「MyAssets」文件夹,把常用的合成数据物体放进去。这样每次开新项目就不用重新拖了。

4.5 Script Editor:写代码的地方

Script Editor 在菜单栏 Window -> Script Editor 里打开。它是你写 Python 脚本、控制 Isaac Sim 的核心面板。

界面分三块:

  1. 编辑器区:写代码的地方,支持语法高亮。
  2. 控制台:运行结果、报错信息都会显示在这里。
  3. 工具栏:运行、停止、保存脚本。

举个例子,下面这段代码可以在场景里创建一个 Cube 并设置位置:

import omni.usd
from pxr import Gf, UsdGeom

stage = omni.usd.get_context().get_stage()
cube_path = "/World/MyCube"
cube = UsdGeom.Cube.Define(stage, cube_path)
cube.AddTranslateOp().Set(Gf.Vec3d(1.0, 2.0, 0.0))

print("Cube created at:", cube_path)

把这段代码粘贴到 Script Editor,点运行,Viewport 里就会多出一个 Cube。嗯,就是这么直接。

避坑: 我曾经在 Script Editor 里写了个死循环,结果 Isaac Sim 直接卡死。建议在脚本里加 time.sleep() 或者用 omni.kit.app.get_app().update() 来控制执行节奏。

4.6 UI 布局自定义:按你的习惯来

Isaac Sim 的布局是可以随便拖拽的。每个面板的标题栏都可以拖动,你可以把它们放到任何位置,甚至合并成标签页。

我个人习惯的布局是这样的:

  • 左上:Stage 面板(场景层级)
  • 左下:Property 面板(调参数)
  • 中间:Viewport(看效果)
  • 右下:Script Editor + Console(写代码)
  • 底部:Content Browser(拖素材)

调好之后,记得保存布局:菜单栏 Window -> Layout -> Save Layout。下次打开 Isaac Sim,直接加载这个布局就行。

小建议: 做合成数据时,我一般会把 Script Editor 和 Console 放在右侧,方便边写边看输出。Viewport 尽量放大,因为你要实时观察渲染效果。

4.7 本章知识结构图

下面这张图帮你理清这六个面板之间的关系:

Isaac Sim 核心面板关系图 Isaac Sim 主界面 Stage 面板 Viewport Property 面板 Content Browser Script Editor Console 核心操作流 Stage 选物体 Property 调参数 Viewport 看效果

从图里能看出来,Stage 是「骨架」,Property 是「控制台」,Viewport 是「眼睛」,Content Browser 是「仓库」,Script Editor 和 Console 是「大脑」和「输出口」。六个面板配合起来,你才能高效地搭建合成数据场景。

本章小结:
  • Stage 面板管理场景层级,一切操作从这里开始。
  • Viewport 是实时预览窗口,快捷键 F 聚焦物体。
  • Property 面板调整选中物体的所有属性。
  • Content Browser 提供内置素材库,支持自定义目录。
  • Script Editor 写 Python 脚本,Console 看输出。
  • UI 布局可以自由拖拽,记得保存。