在对程序化建模工具进行编程的同时,了解通用场景描述(USD)。

打开网易新闻 查看精彩图片

从开发电影视觉特效到构建大型的 3D 世界,通用场景描述(USD)正在迅速成为虚拟世界的标准。USD 不仅是一种文件格式,还是一个开放、可扩展的框架和生态系统,具有可用于在 3D 虚拟世界中合成、编辑、查询、渲染、协作和仿真的 API。NVIDIA 与其合作伙伴生态系统,正继续投资 USD,致力于将其发展成为 3D 互联网的通用语言和“元宇宙的 HTML”。

Omniverse 使用 USD 作为其原生场景描述。新加入 NVIDIA Omniverse 社区的开发者想要了解 USD 以及其作为虚拟世界语言的作用。

为了向开发者展示如何有效使用 USD API,Matias Codesal 开设了一个编程系列教程,以展示 USD 的实际应用。Matias Codesal 记录了自己开发程序化建模工具的过程,他将该工具称为 Bookshelf Generator(书架生成器)。这个系列展示了如何在 Omniverse 中创建这个作为扩展程序的工具并且使用 USD 进行建模和场景布局操作的全过程。

打开网易新闻 查看精彩图片

该编程系列教程由七个部分组成,将从头到尾告诉开发者如何使用 NVIDIA Omniverse 构建基于 USD 的程序化建模工具。

开发者将学到的内容

在该系列教程中,开发者将了解如何有效地利用集成开发环境(IDE)—Omniverse Code 开发 Omniverse 扩展程序。而后将探讨如何使用 Visual Studio Code 开发这个 Bookshelf Generator 扩展程序。

Matias Codesal 从事开发 Omniverse 扩展程序已有好几年了,其最初开发的两个扩展程序是 CityEngine PyPRT 和 Camera Reticle 扩展程序,从那时起,Matias Codesal 学到了很多关于 Omniverse 开发的知识。当开发者看到 Matias Codesal 在该系列中快速创建和迭代其想法时,就能发现他最喜欢 Omniverse Code 的一点在于,Omniverse Code 能够热重载其源代码并提供强大的 Python 支持。

该系列最适合具有 Python 背景的中高级开发者观看。但由于 Matias Codesal 在该系列中主要展示了其思考过程,因此初级开发者也可以从其展示的如何寻找答案和推理问题中进行学习。该系列主要不是用于详细介绍 USD 的所有功能。事实上,合成是 USD 的一个关键功能,但 Matias Codesal 在该项目中只使用了合成操作符中的引用符。

该项目涵盖了许多建模和场景创作概念。虽然其重点是使用 UsdGeomPointInstancer 实例化和排列书架上的书本,但开发者也能学到诸如 prim 算法、自定义属性、关系、边界框计算等概念。该项目完全利用 Python 编写,但对 USD 感兴趣的 C++ 开发者也可以通过该项目有所收获。

这部完整的教程分为七个部分:

  • 使用 Kit Commands 来创建书柜的原始形状和材质。

  • 缩放和转换构建书柜的书柜板。

  • 引用书本资产并将其实例化,而后将其排列在书架上。

  • 为书本添加随机比例并改进书柜资产结构。

  • 改进 UV 缩放,并增加对于在一个阶段内制作多个书柜的支持。

  • 更新多书柜制作的用户界面并支持自定义书本资产。

  • 最终确定用户体验并修复剩余的 bug。

打开网易新闻 查看精彩图片

学习如何构建自定义 UI 工具和创建自定义物体。