【导语】长久以来,为机器人仿真构建逼真 3D 环境耗时费力。如今,借助生成式世界模型,开发者输入文本提示就能快速生成可用虚拟世界。本(běn)教(jiào)程(chéng)将(jiāng)展(zhǎn)示(shì)如(rú)何(hé)将(jiāng) World Labs Marble 与(yǔ) NVIDIA Isaac Sim 结(jié)合(hé),从(cóng)获(huò)取(qǔ) 3D 厨(chú)房(fáng)场(chǎng)景(jǐng)开(kāi)始(shǐ),经(jīng)格(gé)式(shì)转(zhuǎn)换(huàn)、导(dǎo)入(rù)构(gòu)建(jiàn)场(chǎng)景(jǐng),到(dào)添(tiān)加(jiā)机(jī)器(qì)人(rén)运(yùn)行(xíng)仿(fǎng)真(zhēn),数(shù)小(xiǎo)时(shí)完(wán)成(chéng)端(duān)到(dào)端(duān)流(liú)程(chéng),为(wèi)机(jī)器(qì)人(rén)仿(fǎng)真(zhēn)开(kāi)发(fā)规(guī)模(mó)化(huà)落(luò)地(de)提(tí)供(gōng)可(kě)能(néng),还(hái)介(jiè)绍(shào)了(le)更(gèng)多(duō)探(tàn)索(suǒ)方(fāng)向(xiàng)与(yǔ)作(zuò)者(zhě)信(xìn)息(xi)。

一(yī)直(zhí)以(yǐ)来(lái),为(wèi)机(jī)器(qì)人(rén)仿(fǎng)真(zhēn)构(gòu)建(jiàn)逼(bī)真(zhēn)的(de) 3D 环(huán)境(jìng)是(shì)一(yī)项(xiàng)非(fēi)常(cháng)耗(hào)费(fèi)人(rén)力(lì)的(de)工(gōng)作(zuò),往(wǎng)往(wǎng)需(xū)要(yào)数(shù)周(zhōu)的(de)手(shǒu)动(dòng)建(jiàn)模(mó)与(yǔ)配(pèi)置(zhì)。如(rú)今(jīn),借(jiè)助(zhù)生(shēng)成(chéng)式(shì)世(shì)界(jiè)模(mó)型(xíng),开(kāi)发(fā)者(zhě)只(zhǐ)需(xū)输(shū)入(rù)文本(běn)提(tí)示(shì),就(jiù)能(néng)在(zài)极(jí)短(duǎn)时(shí)间(jiān)内(nèi)生(shēng)成(chéng)一(yī)个(gè)逼(bī)真(zhēn)、可(kě)直(zhí)接(jiē)用(yòng)于(yú)仿(fǎng)真(zhēn)的(de)虚(xū)拟(nǐ)世界。将开源机器人参考框架 NVIDIAIsaac Sim与生成式模型,比如World Labs 推出的 Marble等相结合,即可通过文本或图像提示,为机器人开发创建完整的 3D 场景。
World Labs 近期发布了题为“借助 Marble 实现机器人仿真规模化”的案例研究,展示了研究人员如何利用 Marble 的生成式虚拟世界,加速机器人的训练、测试及仿真到现实的迁移。
本教程将带你完成一套端到端工作流:
场景导出:从 Marble 资源库中导出 Gaussian splats(PLY 格式)与碰撞网格(GLB 格式)
场景格式转换:通过 NVIDIA Omniverse NuRec 将 Marble 导出文件转换为 USD 格式
场景导入与构建:将转换后的文件导入 NVIDIA Isaac Sim
在Isaac Sim中开展仿真:添加机器人并运行仿真
完成全部步骤后,你将获得一个支持机器人物理交互的逼真的虚拟环境,且整个生成过程耗时远低于传统方法。接下来,让我们正式开始。
步骤1:从World Labs Marble获取3D厨房场景
World Labs Marble 可生成包含丰富视觉细节与几何数据(如深度信息、表面法向量)的场景,同时输出可用(yòng)于(yú)物(wù)理(lǐ)仿(fǎng)真(zhēn)的碰撞网格文件。
本教程不会从零生成新的厨房场景,而是直接使用 Marble 示例资源库中现成的厨房场景模板。这一做法既能节省时间,又能确保我们获得一个开箱即用的逼真的仿真环境。所选场景为(wèi)细(xì)节(jié)丰富的厨房与客厅室内空间,内置全套家具及常见厨房用品。
Marble厨房场景导出步骤
登录Marble平台:在网页端登录你的 Marble 账户,登录后导航至预制厨房场景模板。
打开场景:点击目标场景,在 Marble 3D 查看器中加载。你可以像玩游戏一样,通过 WASD 按键与鼠标操控视角浏览场景,确认场景效果是否符合预期。
下载场景文件:在 Marble 界面底部工具栏找到“下载”按钮。
选择“Splats(PLY)”下载场景的 Gaussian splat 表示文件。Marble 提供的 Gaussian splat 文件为 .ply 格式,内含数百万个半透明粒子,可高精度还原场景细节。
选择“Collider Mesh(GLB)”下载(zài)场景的三角网格文件。该文件为标准(zhǔn) glTF 模(mó)型(xíng)格(gé)式(shì),包(bāo)含(hán)厨(chú)房(fáng)场(chǎng)景(jǐng)的(de)完(wán)整(zhěng)几(jǐ)何(hé)结(jié)构(gòu)。
注(zhù)意(yì):在(zài) World Labs Marble 中(zhōng)导(dǎo)出(chū) PLY 与(yǔ) GLB 文件(jiàn)需(xū)订(dìng)阅(yuè)付(fù)费(fèi)套(tào)餐(cān)。若(ruò)暂(zàn)未(wèi)订(dìng)阅(yuè),可(kě)使(shǐ)用(yòng) Marble 资(zī)源(yuán)库(kù)提(tí)供(gōng)的(de)示(shì)例(lì) PLY 与(yǔ) GLB 文件。本教程将以厨房(fáng)场(chǎng)景(jǐng)的(de)示(shì)例(lì)PLY与(yǔ)GLB文件(jiàn)进(jìn)行(xíng)演(yǎn)示(shì),建(jiàn)议(yì)将(jiāng)文件(jiàn)分(fēn)别(bié)命(mìng)名为(wèi) MarbleKitchenwithLight.ply 和 MarbleKitchenwithLight_collider.glb 保存。
至此,我们已获取两种格式的厨房环境文件——Gaussian splats(PLY)与三角网格格式(GLB),二者功能各有侧重:PLY 文件负责呈现场景的完整视觉细节,GLB 文件则提供仿真所需的物理碰撞几何结构。
步骤2:将下载的PLY文件转换为USDZ格式
NVIDIA Isaac Sim 采用通用场景描述(USD)作为标准场景格式。若要在 Isaac Sim 中使用 Marble 生成的场景,需先将导出的 PLY 文件转换为 USD 格式,导入后,再借助 NVIDIA Omniverse NuRec 的功能,高效渲染基于点云的场景。
NuRec 的核心是基于高斯模型的重建与渲染算法 3DGUT。NVIDIA3DGRUT 代码库中提供了将 .ply splat 文件转换为 USDZ 文件的脚本,USDZ 是一种基于 ZIP 压缩的 USD 专用归档格式。具体转换步骤如下:
1. 配置 3DGRUT 环境:克隆 3DGRUT 代(dài)码(mǎ)库(kù)并(bìng)完(wán)成(chéng)环(huán)境(jìng)部(bù)署(shǔ)。本(běn)教(jiào)程(chéng)将(jiāng)在(zài)名为(wèi)“3dgrut”的(de)独(dú)立(lì) Conda 环(huán)境(jìng)中(zhōng)进(jìn)行(xíng)配(pèi)置(zhì)。
该(gāi)环(huán)境(jìng)需(xū)运(yùn)行(xíng)于(yú) Linux 系(xì)统(tǒng),且(qiě)需(xū)配(pèi)备(bèi) NVIDIA GPU、CUDA 11.8 及(jí)以(yǐ)上(shàng)版(bǎn)本(běn)、GCC 11 及(jí)以(yǐ)下(xià)版(bǎn)本(běn)。若(ruò)你(nǐ)已(yǐ)拥(yōng)有(yǒu)包(bāo)含(hán) PyTorch 等(děng)必(bì)要(yào)依(yī)赖(lài)库(kù)的(de) Python 环(huán)境(jìng),也(yě)可(kě)直(zhí)接(jiē)在(zài)该(gāi)环(huán)境(jìng)中(zhōng)运(yùn)行(xíng)格(gé)式(shì)转(zhuǎn)换(huàn)脚(jiǎo)本(běn)。
git clone --recursive https://github.com/nv-tlabs/3dgrut.gitcd 3dgrutchmod +x install_env.sh./install_env.sh 3dgrutconda activate 3dgrut
2.PLY 转 USDZ 格式:完成 3DGRUT 环境配置后,运行以下脚本,将 Marble 点云文件转换为 USDZ 格式:
$ python -m threedgrut.export.scripts.ply_to_usd \ /path/to/MarbleKitchenwithLight.ply \ --output_file /path/to/MarbleKitchenwithLight.usdz
该指令将读取 .ply 文件并生成 .usdz 文件。USDZ 采用自定义 USD 架构(基于 UsdVolVolume 的扩展)存储 Gaussian splats 数据,确保 Omniverse 可对其进行高效渲染。本质上,该格式将点云嵌入为体素基元,完整保留 Marble 场景的视觉逼真度。关于 NuRec 神经体渲染技术及其在 Omniverse 中的实现细节,可参考NuRec 渲染技术文档。
此时,我们已获得两个关键文件:
MarbleKitchenwithLight.usdz——用于呈现视觉效果的 splat 场景文件
MarbleKitchenwithLight_collider.glb——用于物理仿真的碰撞网格文件
步骤3:将USDZ/GLB文件导入Isaac Sim并构建仿真场景
生成 USDZ 文件后,下一步需将厨房场景导入 Isaac Sim,完成网格与 Gaussian splats 的对齐,并添加物理属性与光照系统,使其具备机器人交互条件。
由于需要编辑场景内容,我们需先解压 USDZ 归档文件,打开生成的 default.usda 文件,再按以下步骤操作:
高斯体素模型几何对齐:
为确保导入场景的原点与缩放比例适配 Isaac Sim,需执行以下对齐操作:
在场景中创建一个地面平面,作为导入高斯体素模型的地面参考基准,同时充当平滑的碰撞面。
导入的高斯体素模型包含在“xform”基元中,可通过该基元调整模型位置。选中 xform 基元,修改其“平移”参数,使厨房场景的地面与创建的地面平面完全贴合。以地面平面为视觉参考,移动高斯体素模型,直至点云模型的地面与参考平面重合。
生成的场景可能与真实世界比例存在偏差,可借助一个边长为 1 米的默认立方体作为参考,调整场景在 X、Y、Z 三个轴向上的缩放比例(lì)。在(zài)本(běn)教(jiào)程(chéng)的(de)厨(chú)房(fáng)场(chǎng)景(jǐng)示(shì)例(lì)中(zhōng),将(jiāng)缩(suō)放(fàng)因(yīn)子(zi)设(shè)为(wèi) 2 时(shí),橱(chú)柜(guì)、炉(lú)灶(zào)等(děng)物(wù)体的尺寸基本符合真实比例。
调整 xform 基元的旋转参数,确保高斯点云模型与地面平面精准对齐。一个简便的验证方法是:以厨房墙面瓷砖为参考,旋转高斯模型,使瓷砖与地面平面保持完全平行。对齐完成后,将地面平面下移至与厨房地面完全贴合的位置。
为场景添加物理属性与光照:
完成高斯模型对齐后,需为场景添加物理属性与光照系统,确保阴影效果与物体交互符合物理规律。
我们可再次使用之前创建的立方体,调整场景缩放比例,同时测试阴影与物理效果:
在地面平面的碰撞网格设置中,启用“无光物体”属性,确保其能正常接收阴影。
在场景中添加穹顶光源。
在场景窗口中选中“gauss”体素基元,在属性窗口中向下滚动至“原始 USD 属性(Raw USD Properties)”,点击展开更(gèng)多(duō)设(shè)置(zhì);找(zhǎo)到(dào)“代(dài)理(lǐ)(proxy)”字(zì)段(duàn),点(diǎn)击(jī)“添(tiān)加(jiā)目(mù)标(biāo)(Add Target)”;最(zuì)后(hòu)选(xuǎn)择(zé)地(de)面(miàn)平(píng)面(miàn)的(de)碰(pèng)撞(zhuàng)网(wǎng)格(gé)(GroundPlane CollisionMesh)作(zuò)为(wèi)关联(lián)目(mù)标(biāo)。
移(yí)动(dòng)立(lì)方(fāng)体(tǐ),确(què)认(rèn)阴(yīn)影(yǐng)效(xiào)果(guǒ)是(shì)否(fǒu)符(fú)合(hé)预(yù)期(qī)。
将(jiāng)立(lì)方(fāng)体(tǐ)设(shè)置(zhì)为(wèi)带(dài)碰(pèng)撞(zhuàng)体(tǐ)的(de)刚(gāng)体(tǐ),点(diǎn)击(jī)仿(fǎng)真(zhēn)运(yùn)行(xíng)按(àn)钮(niǔ),此(cǐ)时(shí)立(lì)方(fāng)体(tǐ)应(yīng)能(néng)与(yǔ)地(de)面(miàn)平(píng)面(miàn)产(chǎn)生(shēng)符(fú)合(hé)预(yù)期(qī)的(de)交(jiāo)互(hù)。但(dàn)需(xū)注(zhù)意(yì),此(cǐ)时(shí)立(lì)方(fāng)体(tǐ)会(huì)“直(zhí)接(jiē)穿(chuān)过(guò)”高(gāo)斯(sī)模(mó)型(xíng),因此我们还需为高斯(sī)模(mó)型(xíng)配(pèi)置(zhì)物(wù)理(lǐ)属(shǔ)性(xìng)。
高(gāo)斯(sī)体(tǐ)素(sù)模(mó)型(xíng)的(de)碰(pèng)撞(zhuàng)信(xìn)息(xi)存(cún)储(chǔ)在(zài) GLB 文件(jiàn)中(zhōng),需(xū)导(dǎo)入(rù)该网格文件并与高斯体素模型对齐,同时启用其碰撞体功能:
将 MarbleKitchenwithlight_collider.glb 文件拖拽至高斯体素模型的层级下,确保层级结构正确,此时碰撞网格将显示在场景中。
适当缩小场景视图,将碰撞网格的 X 轴旋转角度设为 -90°,使其坐标系统与高斯体素模型保持一致,完成渲染模型与碰撞网格的精准对(duì)齐(qí)。
为导入的碰撞网格启用物理碰撞体预设。
关闭碰撞网格的可见性(因其与高斯体素模型重叠)。此操作仅影响场景视觉效果,物理仿真仍会使用已配置的碰撞体。
至此,场景的几何结构、物理属性与光照系统均已配置完毕:高斯体素模型负责呈现逼真的视觉效果,GLB 碰撞网格与地面平面则处理物理碰撞与阴影计算。现在,场景已具备添加机器人的条件。
步骤4:添加机器人并运行仿真
完成厨房场景的对齐与物理属性配置后,最后一步是添加机器人,通过操控机器人验证场景搭建效果:
将 NVIDIA Nova Carter 机器人拖拽至场景中。
为机器人添加差分控制器,并启用键盘控制功能。系统将自动生成所需的动作图谱,支持通过键盘操控机器人移动。
切换至机器人搭载的视角,点击播放按钮。使用 WASD 键操控机器人移动,同时验证其是否遵循厨房场景的几何约束:机器人应能稳定停留在地面上,与操作台及家具发生碰撞,且不会穿透场景模型。
此时,Marble 厨房场景已作为支持物理仿真的环境,完全集成至 Isaac Sim 中,你可通过交互方式操控机器人在场景内移动。
总结
本教程演示了如何下载一个包含完整几何结构的 AI 生成 3D 环境,并将其导入 Isaac Sim 构建可直接用于仿真的场景,最终在 AI 生成的虚拟世界中完成机器人部署。这套端到端流程仅需数小时即可完成。这种快速生成多样化逼真虚拟世界的能力,为机器人仿真开发的规模化落(luò)地(de)提(tí)供(gōng)了(le)可(kě)能(néng)。借(jiè)助(zhù) Marble 与(yǔ) Isaac Sim,只(zhǐ)要(yào)你(nǐ)能(néng)描(miáo)述(shù)出(chū)目(mù)标(biāo)场(chǎng)景(jǐng),当(dāng)天(tiān)即(jí)可(kě)开(kāi)展(zhǎn)机(jī)器(qì)人(rén)测(cè)试(shì)工(gōng)作(zuò)。
想(xiǎng)要(yào)探(tàn)索(suǒ)更(gèng)多(duō)功(gōng)能(néng),可(kě)尝(cháng)试(shì)以下操作:
使用 World LabsMarble创建自定义环境:支持通过文本描述、单张图片、多角度照片甚至粗略的 3D 布局作为输入,生成专属仿真场(chǎng)景(jǐng)。
基(jī)于(yú)输(shū)入(rù)图(tú)像(xiàng)创建自定义环境并用于 Isaac Sim:可借助 NVIDIA 研究项目Lyra实现——该项目基于视频扩散模型,提供生成(chéng)式(shì) 3D 场(chǎng)景(jǐng)重(zhòng)建(jiàn)能力。
更多仿真技术创新,敬请关注SIGGRAPH Asia的有关信息,与 NVIDIA 技术专家深入交流。SIGGRAPH Asia 于 12 月 15 至 18 日在香港会议展览中心举办。
关于作者
Wonsik Han 是 NVIDIA 自动驾驶汽车集团的高级产品经理。他在全球汽车制造商和自动驾驶初创公司担任战略、业务开发和产品管理职务方面拥有十多年的经验。Wonsik 拥有杜克大学工商管理硕士学位。
Rishabh Chadha 是 NVIDIA 的嵌入式工程实习生—— AI ,他专注于为 NVIDIA Jetson 平台集成深度学习和机器人技术框架。他将于 2021 年毕业于伍斯特理工学院,获得机器人学硕士学位。他的兴趣主要包括深度学习、医学成像和机器人感知。Daniel Lee 是 NVIDIA 的产品经理,专注于专业可视化解决方案的软件。
Isaac Deutsch 是 NVIDIA 的一名高级研究科学家,将计算机视觉、成像和实时计算机图形技术相结合。他为 Instant-NGP、NuRec 和 3DGRUT 做出了贡献。他目(mù)前(qián)的(de)工(gōng)作(zuò)重(zhòng)点(diǎn)是(shì)通(tōng)过(guò)计(jì)算(suàn)摄(shè)影(yǐng)实(shí)现(xiàn)高(gāo)保(bǎo)真(zhēn) 3D 捕(bǔ)捉(zhuō)。Isaac 拥(yōng)有(yǒu)苏(sū)黎(lí)世(shì)联(lián)邦(bāng)理(lǐ)工(gōng)学(xué)院(yuàn)的(de)机(jī)器(qì)人(rén)硕(shuò)士(shì)学(xué)位(wèi),并(bìng)于(yú) 2018 年(nián)加(jiā)入(rù) NVIDIA。
Raffaello Bonghi 是 AI & Robotics 的(de)开(kāi)发(fā)者(zhě)关系(xì)经(jīng)理(lǐ)。自(zì) 2015 年(nián)以(yǐ)来(lái),他(tā)一(yī)直(zhí)是(shì) NVIDIA Jetson 冠军,设计用于户外导航和教育应用的多 ROS / ROS 机器人。此外,他还参与为零售和机器人领域的众多国际客户开发人工智能解决方案。拉斐洛拥有博士学位。在控制理论和工业自动化领域,专注于机器人技术。