数据科学家应该了解的 OpenUSD 知识
在本文中,我们将探讨数据科学家应该了解的 OpenUSD,以及它如何能够增强他们的数据处理工作流程。
作为数据科学家,我们不断寻求能够使我们高效处理和分析数据的工具和框架。在这篇博文中,我们将探索 OpenUSD,这是一个强大的框架,它超越了其在计算机图形学中的传统用途,并为数据科学管道提供了令人兴奋的可能性。
OpenUSD,或通用场景描述 (Universal Scene Description),提供了一个通用且可扩展的平台,用于管理和处理复杂的模型数据。它可以表示多种数据类型,并增强各个领域的数据集。
让我们深入探讨数据科学家应该了解的 OpenUSD,以及它如何能够增强他们的数据处理工作流程。
通用数据建模
OpenUSD 引入了一个统一的数据模型,使数据科学家能够有效地表示和操作复杂的 3D 数据结构。使用 USD,对象数据可以组织成分层场景图。这种分层结构在处理大规模数据集或复杂数据依赖关系时特别有用。
进入 OpenUSD 生态系统还可以轻松共享和重用数据。OpenUSD 中的数据源可以更轻松地集成到一个聚合视图中,该视图可以包含来自其他文件格式的内容。
文件格式插件
USD 文件格式插件提供了一种方法,可以在保持现有数据集处于当前格式的同时,利用 OpenUSD 的强大功能。文件格式插件可以实时读取文件格式并将其转换为 OpenUSD 数据。
例如:在 3D 数据科学中,Wavefront OBJ 文件因其 3D 网格数据而广受欢迎,并且有大量使用该格式的数据集。通过像 Adobe 最近开源的 OBJ 文件格式插件 这样的 OBJ 文件格式插件,您可以引用现有的 OBJ 数据并在 OpenUSD 中对其进行组合,以添加或覆盖属性,或将其用于场景组装。下面的 kitchen.usd 展示了一个使用 OBJ 模型组合厨房场景的示例,其中包含茶壶和桌子。茶壶在场景中的位置被覆盖,以旋转它并将其放在桌子上方。
kitchen.usd
#usda 1.0
(
defaultPrim = "World"
metersPerUnit = 1.0
upAxis = "Z"
)
def Xform "World"
{
def "teapot" (prepend references = @./utah_teapot.obj@)
{
float3 xformOp:rotateXYZ = (0, 0, 45.0)
float3 xformOp:scale = (1, 1, 1)
double3 xformOp:translate = (0, 0, 1.0)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
}
def "table" (prepend references = @./table.obj@) { }
}
可组合性
OpenUSD 在可组合场景描述方面表现出色。这主要体现在两个方面:场景聚合和渐进式精炼或增强。场景聚合涉及引用来自不同来源的众多 3D 资产,并以非破坏性方式将它们组装成一个更大的场景。您可以修改引用的 3D 资产,并且组装也将反映这些更改。渐进式精炼允许您从一个粗糙、信息量少的资产开始,然后逐步、非破坏性地添加细节或更改参数,以将其从粗糙到精细进行进一步优化。
回顾一下前面提到的 OBJ 网格示例,您可以仅从 OBJ 获取网格数据,然后使用 OpenUSD 添加物理材质属性、语义标签和其他辅助方面,例如地理空间属性。在此示例中,通过使用子层来组合精炼,以添加不同类型的细节到我的资产中。
teapot.usd
#usda 1.0
(
defaultPrim = "World"
metersPerUnit = 1.0
upAxis = "Z"
subLayers = [
@./semantic_labels.usd@
@./materials.usd@
@./utah_teapot.obj@
]
)
def Xform "World"
{
}
像这样构建数据集使其具有极高的可移植性和模块化。它还允许您提高数据源的保真度和质量。
我可以共享带有所有属性的网格,或者我可以静音或删除与不同管道无关的层。 SimReady 规范 是这些原则在当今实践中的一个例子。
自定义管道
OpenUSD 的 Hydra 框架为数据科学家提供了创建 自定义数据处理和分析管道 的能力。Hydra 允许将业务逻辑实现为可自定义的运行时场景索引链。这种将数据处理与特定运行时环境分离的做法,使数据科学家能够在自己的数据科学工作流程中利用 USD 的强大功能。
可扩展性
OpenUSD 的关键优势之一是其可扩展性。数据科学家可以通过创建自己的场景委托 (scene delegates) 和渲染委托 (render delegates) 来扩展 OpenUSD 的功能。这意味着任何能够响应场景委托提供的查询的场景图都可以被使用,从而在集成各种数据源和格式方面提供了灵活性。
OpenUSD 也可通过自定义 模式 (schemas) 进行扩展。当数据科学家开始将他们数据模型的概念映射到 OpenUSD 时,他们可能会发现并非所有概念都能直接映射,并且翻译为 OpenUSD 中的现有概念可能不合适。当数据科学家识别出概念数据映射差距时,他们可以将新概念形式化为可以立即利用的新模式。
随着模式的成熟,鼓励数据科学家与其他组织和机构共享他们的模式,并让模式经历完整的模式旅程,以便进行审查、发布和标准化。NVIDIA 提出的 语义模式提案 就是一个很好的例子,旨在标准化 3D 资产的语义标记,用于合成数据生成。
通过 Hydra 2.0 进行过程化处理
Hydra 2.0 通过引入场景索引的过程化处理,将 OpenUSD 的功能提升到一个新的水平。这使得数据科学家能够通过多个管道步骤处理场景索引链,从而实现更复杂和可定制的工作流程。借助 Hydra 2.0,数据科学家可以迭代和优化他们的管道,从而更容易地尝试不同的数据处理技术。场景索引插件也是可移植的,因此您可以在 OpenUSD 应用程序之间共享其模块化的业务逻辑。
OpenUSD 为数据科学家提供了一个强大而通用的框架,用于管理和处理复杂的模型数据。其统一的数据模型、可扩展性和通用性使其成为数据科学工作流程和管道的宝贵框架。通过在通用数据建模(通过模式插件)和 Hydra 2.0 中的运行时内核方面进行扩展,OpenUSD 使数据科学家能够有效地处理和分析大规模数据集,从而实现更快、更具可扩展性的计算。作为数据科学家,探索和利用 OpenUSD 等工具至关重要,以充分发挥我们数据驱动型工作的潜力。
越来越多的 工具和应用程序 已经支持 OpenUSD 的导入和导出。开发者可以在 NVIDIA 的 OpenUSD 文档 中学习如何为他们的应用程序添加 OpenUSD 支持,该文档包括入门步骤、指导性学习内容和技术参考。
要访问更多资源并开始使用 OpenUSD,请访问 NVIDIA 的 通用场景描述 (Universal Scene Description) 页面。通过 免费下载标准许可证 开始使用 NVIDIA Omniverse。
通用场景描述联盟 (The Alliance for OpenUSD, AOUSD) 是一个独立的非营利组织,致力于通过 OpenUSD 促进 3D 内容的互操作性。了解更多信息并 立即成为会员。