USD格式介绍

What is USD?
什么是USD?

Pipelines capable of producing computer graphics films and games typically generate, store, and transmit large quantities of 3D data, which we call “scene description”. Each of many cooperating applications in the pipeline (modeling, shading, animation, lighting, fx, rendering) typically has its own special form of scene description tailored to the specific needs and workflows of the application, which is neither readable nor editable by any other application. Universal Scene Description (USD) is the first publicly available software that addresses the need to robustly and scalably interchange and augment arbitrary 3D scenes that may be composed from many elemental assets.
能够产生计算机图形电影和游戏的流水线通常生成、存储和传输大量的3D数据,我们称之为“场景描述”。流水线中的许多协作应用(建模、着色、动画、照明、fx、渲染)中的每一个通常具有其自己的针对应用的特定需求和工作流定制的特殊形式的场景描述,其既不能被任何其他应用读取也不能被任何其他应用编辑。通用场景描述(USD)是第一个公开可用的软件,它解决了鲁棒性和可扩展性交换和增强任意3D场景的需求,这些场景可能由许多元素资产组成。

USD provides for interchange of elemental assets (e.g. models) or animations. But unlike other interchange packages, USD also enables assembly and organization of any number of assets into virtual sets, scenes, shots, and worlds, transmitting them from application to application, and non-destructively editing them (as overrides), with a single, consistent API, in a single scenegraph. USD provides a rich toolset for reading, writing, editing, and rapidly previewing 3D geometry, shading, lighting, physics, and a growing number of other graphics-related domains. In addition, because USD’s core scenegraph and composition engine are agnostic of any particular domain, USD can be extended in a maintainable way to encode and compose data in other domains.
美元规定交换基本资产(如模型)或动画。但与其他交换包不同的是,USD还支持将任何数量的资产组装和组织成虚拟集,场景,镜头和世界,将它们从应用程序传输到应用程序,并在单个场景图中使用单个一致的API非破坏性地编辑它们(作为覆盖)。USD提供了一个丰富的工具集,用于阅读、写入、编辑和快速预览3D几何、着色、照明、物理和越来越多的其他图形相关领域。此外,由于USD的核心场景图和合成引擎不受任何特定领域的影响,因此USD可以以可维护的方式进行扩展,以编码和合成其他领域中的数据。

Concretely, USD is an open source project released under a modified Apache license.
具体来说,USD是一个在修改后的Apache许可证下发布的开源项目。

Why use USD?
为什么使用美元?

USD is the core of Pixar’s 3D graphics pipeline, used in every 3D authoring and rendering application, including Pixar’s proprietary Presto animation system. Pixar is deeply committed to evolving and improving USD to address the following ongoing production concerns:
USD是Pixar 3D图形管道的核心,用于每个3D创作和渲染应用程序,包括Pixar专有的Presto动画系统。皮克斯致力于发展和改进USD,以解决以下持续的生产问题:

  • Provide a rich, common language for defining, packaging, assembling, and editing 3D data, facilitating the use of multiple digital content creation applications.
    为定义、打包、组装和编辑3D数据提供丰富的通用语言,便于使用多种数字内容创建应用程序。

    Like many other interchange packages, USD provides a low-level data model that stipulates, at a “file format level”, how data is encoded and organized, plus a (extensible) set of high-level schemas that provide meaningful API’s and organization for concepts like a mesh or a transform. With such a foundation one can create asset definitions with geometric, material, lighting, and other properties. But USD goes further to provide a freely combinable set of Composition Arcs that can be used to package, aggregate, vary, and override primitive elements and assets, with a high-performance runtime evaluation engine, embodied in a compact scenegraph known as a Stage, for resolving the resulting composed scene description and extracting (and authoring) data from it.
    像许多其他交换包一样,USD提供了一个低级数据模型,该模型在“文件格式级别”规定了数据如何编码和组织,以及一组(可扩展)高级模式,为网格或转换等概念提供有意义的API和组织。有了这样的基础,就可以创建具有几何、材质、照明和其他特性的资源定义。但USD更进一步提供了一组可自由组合的Composition Arcs,可用于打包,聚合,变化和覆盖原始元素和资产,具有高性能的运行时评估引擎,体现在称为舞台的紧凑场景图中,用于解析生成的合成场景描述并从中提取(和创作)数据。

  • Allow multiple artists to collaborate on the same assets and scenes.
    允许多个艺术家在相同的资产和场景上进行协作。

    USD’s most basic composition arc, the subLayers operator, facilitates multiple artists in different departments, or within the same department, to simultaneously work on the same asset or scene, by allowing each artist to work in their own file (called a Layer), all of which will be combined and resolved in a strength ordering clearly specified in the USD files themselves. This ability is not a magic bullet that can automatically adjust shading data in a stronger layer when the modeling artist changes the topology of geometry defined in a weaker layer, but it allows each artist to work independently without erasing or editing any other artist’s work, and helps to provide a clear audit trail of changes that aids in addressing problems like the changing-topology problem.
    USD最基本的合成弧,subLayers操作符,通过允许每个艺术家在他们自己的文件(称为层)中工作,方便不同部门或同一部门内的多个艺术家同时在同一资产或场景上工作,所有这些都将在USD文件本身明确指定的强度顺序中组合和解决。这种能力并不是一种灵丹妙药,当建模艺术家更改较弱层中定义的几何拓扑时,可以自动调整较强层中的着色数据,但它允许每个艺术家独立工作,而无需擦除或编辑任何其他艺术家的作品,并有助于提供清晰的更改审计跟踪,有助于解决拓扑变化问题等问题。

  • Maximize artistic iteration by minimizing latency.
    通过最小化延迟来最大化艺术迭代。

    As in many media, one of the most important ingredients to achieving high-quality digital art is the ability to iterate quickly and often on a design, an asset, an animation. One of the most prominent impediments to iteration in 3D art is the speed with which an artist can get “good enough” visual feedback on the results of their edits, and the speed with which they can migrate new data between multiple applications, or restore a session that has crashed. Speed is a primary, ongoing goal of the USD project at Pixar; we continue to explore algorithmic improvements, better ways to leverage modern multi-core systems and GPU’s, and compression techniques to minimize latency in accessing remotely stored data.
    与许多媒体一样,实现高质量数字艺术的最重要因素之一是能够快速且经常地迭代设计,资产,动画。3D艺术中迭代的最突出的障碍之一是艺术家可以在其编辑结果上获得“足够好”的视觉反馈的速度,以及他们可以在多个应用程序之间迁移新数据或恢复已崩溃的会话的速度。速度是皮克斯USD项目的首要目标;我们将继续探索算法改进、利用现代多核系统和GPU的更好方法,以及压缩技术,以最大限度地减少访问远程存储数据的延迟。

If your needs are similar to or are a subset of the above, then USD may be an attractive choice.
如果您的需求与上述需求相似或属于上述需求的子集,那么美元可能是一个有吸引力的选择。

What can USD do?
美元能做什么?

USD can represent:
USD可以代表:

USD organizes data into hierarchical namespaces of Prims (short for “primitive”). In addition to child prims, each prim can contain Attributes and Relationships, collectively known as Properties. Attributes have typed values that can vary over time; Relationships are multi-target “pointers” to other objects in a hierarchy, and USD takes care of remapping the targets automatically when referencing causes namespaces to change. Both prims and properties can also have (non-time-varying) metadata. Prims and their contents are organized into a file abstraction known as a Layer.
USD将数据组织到Prims(“primitive”的缩写)的分层命名空间中。除了子prim之外,每个prim还可以包含属性和关系,统称为属性。属性具有可随时间变化的类型化值;关系是指向层次结构中其他对象的多目标“指针”,当引用导致名称空间更改时,USD会自动重新映射目标。prims和properties都可以有(非时变的)元数据。Prim及其内容被组织到称为层的文件抽象中。

Built on top of this low-level, generic scene description, USD provides a set of schemas that establish a standard encoding and client API for common 3D computer graphics concepts like:
基于这种低级的通用场景描述,USD提供了一组模式,为常见的3D计算机图形概念建立标准编码和客户端API,例如:

Geometry 几何图形

The UsdGeom schemas define OpenSubdiv -compliant meshes, transforms, curves, points, nurbs patches, and several intrinsic solids. It also defines: the concept of arbitrary primvars as attributes that can interpolate across a geometric surface; geometric extents and aggregate, computed bounding boxes; pruning visibility; and an attribute called Purpose that expresses a (non-animatable) conditional visibility useful for deploying level-of-detail proxies and guides.
UsdGeom模式定义了OpenSubdiv兼容的网格、变换、曲线、点、NURBS面片和几个内部实体。它还定义了:作为可以在几何表面上插值的属性的任意原变量的概念;几何范围和聚合、计算的边界框;修剪可见性;以及一个名为Purpose的属性,该属性表示(不可设置动画的)条件可见性,可用于部署细节级别代理和指南。

Shading 遮阳

The UsdShade schemas define primitive shader nodes that can be connected into networks and packaged into reusable materials, on which one can create a public interface of attributes that will drive parameters in the contained shader networks. UsdShade also provides flexible mechanisms for binding geometry to materials so as to define their lighting response (and physics) characteristics.
UsdShade模式定义了可以连接到网络并打包到可重用材质中的基本着色器节点,可以在这些基本着色器节点上创建属性的公共接口,这些属性将驱动包含的着色器网络中的参数。UsdShade还提供了将几何体绑定到材质的灵活机制,以便定义其照明响应(和物理)特性。

Model and Asset 模型和资产

USD’s composition operators allow you to construct arbitrarily large, complex scenes. As an aid to processing, analyzing, and decomposing such scenes, USD formalizes the concepts of Model and Asset. The “model” prim classification allows scenegraphs to be partitioned into logical, manageable chunks for traversal, working-set management, and data coalescing/caching. The concept of “asset” shows up in USD at two levels: as a core datatype for referring unambiguously to an external file, identifying which data needs to participate in asset/path resolution; and in the AssetInfo schema for depositing a record of what assets have been referenced into a scene, which survives even if the scene is flattened.
USD的合成操作符允许您构建任意大的复杂场景。作为处理、分析和分解这些场景的辅助工具,USD形式化了模型和资产的概念。“模型”prim分类允许场景图被划分成逻辑的、可管理的块,用于遍历、工作集管理和数据合并/缓存。“资产”的概念在美元中表现为两个层次:作为明确引用外部文件的核心数据类型,识别哪些数据需要参与资产/路径解析;和AssetInfo模式中,用于存储已引用到场景中的资产的记录,即使场景被展平,该记录也会保留。

USD can compose and override:
USD可以组成和覆盖:

The following is a very compact description of USD’s composition semantics, with links to more detailed descriptions.
以下是对USD的组合语义的非常简洁的描述,并提供了指向更详细描述的链接。

You can “stack” USD layers together using the subLayers composition arc, and the composition engine will resolve the data contained in such ordered (nestable) “LayerStacks” similarly to how layers in Photoshop are composed.
您可以使用subLayers合成弧将USD图层“堆叠”在一起,合成引擎将解析包含在此类有序(可嵌套)“LayerStacks”中的数据,类似于Photoshop中的图层合成方式。

Any prim in a layer can also contain one or more references composition arcs that target a prim in another (or the same!) layer, and composes the tree rooted at the target prim into the referencing prim - this is the primary way to assemble elemental assets into aggregates and complete scenes. The payload arc provides a “deferred reference” that can be selectively “loaded” (or unloaded) from a Stage after the stage was initially opened; judicious use of payloads allows you to structure scenes so that clients can easily manage “working sets”, keeping in memory just the parts of the scene they need for the task at hand.
层中的任何prim还可以包含一个或多个参考合成弧,其以另一个(或相同!)层,并将以目标prim为根的树组合到引用prim中-这是将元素资源组合到聚合和完整场景中的主要方法。有效载荷弧提供“延迟引用”,其可以在阶段最初打开之后从阶段选择性地“加载”(或卸载);明智地使用有效负载允许您构建场景,以便客户端可以轻松地管理“工作集”,在内存中只保留他们手头任务所需的场景部分。

VariantSets allow an asset creator to bundle different multiple variations of an asset all into a single package with a “variant selector” that downstream asset consumers can switch, non-destructively, in stronger layers to change the variation they desire; any prim can define multiple VariantSets, which can vary along dependent or independent axes.
VariantSets允许资产创建者将资产的不同的多个变体全部捆绑到具有“变体选择器”的单个包中,下游资产消费者可以在更强的层中非破坏性地切换以改变他们期望的变体;任何prim都可以定义多个VariantSet,这些VariantSet可以沿着相关或独立轴变化。

The last two composition arcs, inherits and specializes both establish a persistent (across further, upstream composition arcs) relationship between a “base” prim and a “derived” prim, such that the derived prim receives all of the overrides applied to the base prim anywhere in the composition; the technical difference between inherits and specializes lies in the particulars of when derived’s opinions “win out” over base’s opinions, but practically the difference is: you can use inherits to easily “mass edit” all instances of a particular class of prim or asset, and you can use specializes to create a “derived” that is always a “specialized” refinement of “base” in all views of your scene.
最后两个合成弧继承和特化两者在“基础”prim和“衍生”prim之间建立持久(跨越进一步的上游合成弧)关系,使得衍生prim接收在合成中的任何地方应用于基础prim的所有覆盖; inherit和specialized之间的技术差异在于derived的意见何时“战胜”base的意见的细节,但实际上的差异是:您可以使用继承来轻松地“批量编辑”prim或资源的特定类的所有实例,并且您可以使用specialized来创建“派生”,该派生始终是场景的所有视图中的“base”的“specialized”细化。

The most powerful and unifying aspect of USD’s composition semantics is that all of the above operators can be applied to any prim, in any combination, and the composition engine will resolve the resulting graph in a predictable way. The other desirable property that falls out of this uniform treatment of composition arcs is that stronger layers in a composition can override the scene description in weaker layers uniformly, regardless of whether the weaker layers were subLayered, referenced, inherited, etc. A stronger layer can override the following with respect to weaker layers:
USD的组合语义最强大和统一的方面是,所有上述操作符都可以以任何组合应用于任何prim,并且组合引擎将以可预测的方式解析结果图。从合成弧的这种均匀处理中福尔斯出的另一个期望的属性是合成中的较强层可以均匀地覆盖较弱层中的场景描述,而不管较弱层是否被子分层、引用、继承等。较强的图层可以覆盖相对于较弱图层的以下内容:

  • Add new prims including entire subtrees rooted at the added prim
    添加新的素数,包括根在添加的素数处的整个子树

  • Deactivate prims , which is USD’s method for non-destructive (and reversible) prim/subtree deletion
    停用prims,这是USD用于非破坏性(且可逆)prim/subtree删除的方法

  • Reorder prims, since in some contexts, the namespace-ordering can be meaningful
    重新排序素数,因为在某些上下文中,命名空间排序可能是有意义的

  • Add or remove Variants to an existing VariantSet
    向现有VariantSet添加或删除Variants

  • Add or remove entire VariantSets, or targets to inherit or specialize
    添加或删除整个VariantSets或要继承或专门化的目标

  • Override the value of schema and user-level metadata on a prim or property
    重写prim或属性上的架构和用户级元数据的值

  • Add new properties to a prim
    向prim添加新属性

  • Reorder properties on a prim. If not explicitly ordered, properties are enumerated in dictionary order
    重新排序prim上的属性。如果没有显式排序,属性将按字典顺序枚举

  • Override the value of any attribute (an override value blocks all weaker timeSamples)
    覆盖任何属性的值(覆盖值会阻止所有较弱的timeSamples)

  • Block the value of an attribute, so that it will appear to have no authored value
    阻止属性的值,使其看起来没有编写的值

  • Add, remove, and reorder targets on a relationship or attribute connection
    在关系或属性连接上添加、移除和重新排序目标

Finally, USD provides a handful of scenegraph-level features that can greatly expand the types and scale of datasets encodable in USD. The two most prominent are native prim Instancing for very compactly encoding (and processing) large numbers of instances/copies of a referenced asset or prim, applicable when the copies do not need to be deeply edited; and Value Clips, which allow timeSamples for a set of prims to be distributed across many files, and (re-)sequenced and retimed non-destructively.
最后,USD提供了一些场景级功能,可以极大地扩展可用USD编码的数据集的类型和规模。最突出的两个是原生prim实例化,用于非常紧凑地编码(和处理)引用资产或prim的大量实例/副本,适用于副本不需要深度编辑的情况;和Value Clips,它允许一组素数的timeSamples分布在许多文件中,并且(重新)排序和重新定时非破坏性。

USD/Hydra can image:
USD/Hydra可以成像:

Hydra is the imaging framework that ships as part of the USD distribution. It connects “scene delegates” (that consume scene data) and “render delegates” (that send the scene data to particular renderers), in such a way that render and scene delegates can be mixed and matched as applications and consumers’ needs dictate. Hydra’s first and primary render delegate is the rasterizing Storm renderer, which began as a modern OpenGL renderer, and which has now incorporated a “graphics interface” abstraction that allows Storm to use Vulkan, Metal, and potentially other rasterizing rendering API’s. Storm is highly scalable, multi-pass, and uses OpenSubdiv for mesh rendering. The repository also includes with a simple Embree -based path tracer to serve as an example for creating more backends, and HdPrman, which is evolving into the definitive means of rendering USD with Pixar’s premiere RenderMan renderer.
Hydra是作为USD发行版的一部分发布的映像框架。它连接了“场景委托”(消耗场景数据)和“渲染委托”(将场景数据发送到特定渲染器),使得渲染委托和场景委托可以根据应用程序和消费者的需求进行混合和匹配。Hydra的第一个也是主要的渲染委托是光栅化Storm渲染器,它最初是一个现代OpenGL渲染器,现在它已经整合了一个“图形接口”抽象,允许Storm使用Vulkan,Metal和其他可能的光栅化渲染API。Storm具有高度可伸缩性、多通道性,并使用OpenSubdiv进行网格渲染。该存储库还包括一个简单的基于Embree的路径跟踪器,作为创建更多后端的示例,以及HdPrman,它正在演变为使用皮克斯的首映式RenderMan渲染器渲染USD的最终手段。

The USD scene delegate to Hydra is used in usdview and nearly all third-party plugins that integrate USD, and is meant to provide a “ground truth” rendering of any scene composed of prims conforming to the UsdGeom schemas, UsdShade, UsdVol, UsdSkel, UsdLux, and other graphics-related schema domains. It also provides fast preview and animation streaming for USD scenes.
Hydra的USD场景委托用于usdview和几乎所有集成USD的第三方插件中,旨在提供由符合UsdGeom模式、UsdShade、UsdVol、UsdSkel、UsdLux和其他图形相关模式域的prim组成的任何场景的“地面实况”渲染。它还为USD场景提供快速预览和动画流。

USD can be extended/customized:
USD可扩展/自定义:

Even though USD is primarily used as an embedded sub-system, the breadth of the problem-space it covers demands that it be extensible along a number of axes. USD comes with its own plugin discovery mechanism, and the following plugin-points:
尽管USD主要用作嵌入式子系统,但它所涵盖的问题空间的广度要求它沿着多个轴可扩展。USD自带插件发现机制,以及以下插件点:

  • Asset Resolution 资产解决方案

    In a highly-referenced scene, it can be advantageous to have a degree of separation between the asset paths recorded in the USD files and the “resolved locator/identifier” from which the asset will ultimately be loaded. The ArResolver interface can be customized per USD installation and per “plugin package”, allowing, for example, site-specific naming conventions to be resolved, and for dynamic versioning control to be applied. USD ships with a default resolver implementation that allows for simple “search-path” style asset resolution for traditional filesystems.
    在高度引用的场景中,在USD文件中记录的资产路径与最终将从其加载资产的“解析定位符/标识符”之间具有一定程度的分离可能是有利的。ArResolver界面可以根据USD安装和“插件包”进行定制,例如,允许解析特定于站点的命名约定,并应用动态版本控制。USD附带了一个默认的解析器实现,它允许对传统文件系统进行简单的“搜索路径”风格的资产解析。

    However, the Ar system allows for the coexistence of multiple, URI-protocol-dispatched resolvers, each of which can resolve asset paths to ArAsset that can stream data directly from clouds or databases, or even construct assets procedurally, in-memory.
    然而,Ar系统允许多个URI协议分派的解析器共存,每个解析器都可以解析到ArAsset的资产路径,ArAsset可以直接从云或数据库流式传输数据,甚至可以在内存中按程序构建资产。

  • File Formats 文件格式

    A USD Layer can be taught to be populated with data translated from any kind of compatible file format, by implementing an SdfFileFormat plugin for the format. USD’s own native usda (text), usdc (binary), and usdz (packaged archive) formats are implemented this way, as is the included support for reading Alembic files via the Alembic USD Plugin, as well as MaterialX xml files.
    通过为该格式实现SdfFileFormat插件,可以教导USD层填充从任何类型的兼容文件格式转换的数据。USD自己的原生usda(文本)、usdc(二进制)和usdz(打包存档)格式都是以这种方式实现的,包括通过Alembic USD插件阅读Alembic文件的支持,以及MaterialX xml文件。

    File formats can also be “dynamic”, such that when referenced into a scene via a payload arc, modifiable metadata parameters on the payloaded prim are transmitted to the file format plugin which is then allowed to re-evaluate itself. This allows for a degree of user-directed proceduralism.
    文件格式也可以是“动态的”,使得当经由有效载荷弧被引用到场景中时,有效载荷弧上的可修改元数据参数被传输到文件格式插件,然后允许文件格式插件重新评估其自身。这允许一定程度的用户导向程序主义。

  • Schemas Schemas

    USD includes a tool for generating new schemas (C++ classes, python bindings, and all required boilerplate) from a simple usda text description of the schema. This can be used to add new USD prim schema types and API’s to your pipeline or package, with which you will be able to interact in your application-level plugins just as if they were native USD schemas. For typed schemas that are conceptually imageable, you can also teach Hydra how to image them.
    USD包括一个工具,用于从模式的简单usda文本描述生成新模式(C++类、python绑定和所有必需的样板文件)。这可以用于向管道或包添加新的USD prim模式类型和API,您将能够在应用程序级插件中与之交互,就像它们是原生USD模式一样。对于在概念上可映射的类型化模式,您还可以教Hydra如何映射它们。

What can’t USD do?
美元不能做什么?

No GUIDS  无导轨

USD uses a textual, hierarchical namespace to identify its data, which means it is “namespace paths” by which overrides bind to their defining prims/properties. In consequence, when the internal namespace of a referenced asset changes, higher-level overrides previously recorded in referencing assets will fall off. One solution to this problem is to identify data by a “globally unique identifer” (GUID), and then associate overrides with the same GUID as the defining prim. While solving the namespace-editing problem, GUIDs introduce other problems into a pipeline, and potentially limitations on flexibility of composition. In past iterations of USD, Pixar used a form of GUID at the model/asset granularity, and after carefully weighing the pros and cons, we have decided that for us, the cost of occasional “namespace fix-up” operations run over a collection of assets is worth paying for the ease of asset construction and aggregation, and readable text asset representations that we get from namespace-paths as identifiers.
USD使用文本的、分层的名称空间来标识其数据,这意味着它是“名称空间路径”,通过该路径覆盖绑定到其定义的prim/properties。因此,当被引用资源的内部名称空间发生更改时,以前记录在引用资源中的更高级别的覆盖将消失。这个问题的一个解决方案是通过“全局唯一标识符”(GUID)来标识数据,然后将覆盖与定义prim的GUID相关联。在解决名称空间编辑问题的同时,GUID将其他问题引入到管道中,并且潜在地限制了组合的灵活性。 在过去的USD迭代中,Pixar在模型/资产粒度上使用了一种形式的GUID,在仔细权衡利弊之后,我们决定对我们来说,偶尔在资产集合上运行的“命名空间修复”操作的成本是值得的,因为资产构建和聚合的方便性,以及我们从命名空间路径作为标识符获得的可读文本资产表示。

Not an execution or rigging system
非执行或操纵系统

USD provides a lightweight, optimized scenegraph to facilitate authoring and efficient extraction of composed scene description. However, it provides no other behaviors than composition of a namespace hierarchy and property Value Resolution, and in the tradeoff space between “low-memory footprint, higher-latency data access” and “high-memory footprint, low-latency access to data”, USD’s scenegraph leans more towards the former, whereas a high-performance execution engine requires the latter.
USD提供了一个轻量级的,优化的场景图,以方便创作和有效提取组合场景描述。然而,它只提供命名空间层次结构和属性值解析的组合,并且在“低内存占用,高延迟数据访问”和“高内存占用,低延迟数据访问”之间的权衡空间中,USD的场景图更倾向于前者,而高性能执行引擎需要后者。

Further, the more rigging behaviors and execution semantics we would add to USD, the more difficult it would become to interchange the data successfully between DCC’s, since there is not, currently, broad agreement between vendors of what these behaviors should be.
此外,我们将添加到USD的操纵行为和执行语义越多,在DCC之间成功交换数据将变得越困难,因为目前在供应商之间不存在关于这些行为应该是什么的广泛协议。

USD and its schema generation tools should be suitable for encoding rigging for round-tripping rigging data in a particular application or custom pipeline, and USD does provide facilities that a client could use to build more extensive in-memory caches on top of a UsdStage to provide lower-latency access to data encoded in USD. But for now, these do not play a significant role in what we feel is the primary directive of USD: scalable interchange of geometric, shading, and lighting data between DCC’s in a 3D content creation pipeline.
USD及其模式生成工具应该适合于为特定应用程序或自定义管道中的往返操纵数据编码操纵,并且USD确实提供了一些工具,客户端可以使用这些工具在UsdStage之上构建更广泛的内存缓存,以提供对以USD编码的数据的较低延迟访问。但就目前而言,这些在我们认为美元的主要指令中并没有发挥重要作用:3D内容创建流水线中DCC之间几何、着色和照明数据的可缩放交换。

Heritage of USD at Pixar
皮克斯的美元遗产

USD is roughly the fourth generation of “composed scene description” developed at Pixar. After muscling through Toy Story, in which each shot was described by a single, linear program file, the Pixar R&D team began adding and evolving concepts for referencing, layering, editing, and variation in the context of its proprietary animation system, Marionette (known internally as Menv), beginning with A Bug’s Life, and continuing over the course of the next ten feature films.
USD大致上是皮克斯开发的第四代“合成场景描述”。在《玩具总动员》中,每个镜头都由一个线性程序文件描述,皮克斯研发团队开始在其专有的动画系统Marionette(内部称为Menv)的背景下添加和发展引用,分层,编辑和变化的概念,从《虫虫危机》开始,并在接下来的十部故事片中继续。

By 2004 it was clear that, although Marionette had grown quite powerful, its organically evolved provenance was becoming a hindrance to continued stable development and our ability to leverage important tools like multi-core systems. The studio committed to the design and development of a ground-up, second-generation animation system now known as Presto, which was first used on Brave and all features since. One of the problems with Marionette that Presto set out to address was that its various features for composing and overriding 3D scene description could not always be used together effectively, because they were spread across three different formats and “composition engines”. Presto delivered a second generation of scene description that was unified, enabling referencing, overriding, variation, and other operations at all granularities from a single mesh, to an entire model, to an environment or shot, encoded in a single text format and evaluated with a single composition engine.
到了2004年,很明显,尽管木偶已经变得相当强大,但其有机进化的起源正在成为持续稳定发展和我们利用重要工具如多核系统的能力的障碍。该工作室致力于设计和开发一个地面,第二代动画系统,现在被称为Presto,该系统首次用于Brave和此后的所有功能。Presto着手解决的Marionette的一个问题是,它用于合成和覆盖3D场景描述的各种功能并不能总是有效地一起使用,因为它们分布在三种不同的格式和“合成引擎”中。Presto交付了第二代场景描述,该描述是统一的,能够在所有粒度范围内引用、覆盖、变化和其他操作,从单个网格到整个模型,到环境或镜头,以单个文本格式编码,并使用单个合成引擎进行评估。

However, at the same time, Pixar, along with much of the film and effects industry, found it advantageous to transition from a pipeline in which animation and rigging were kept live up until rendering, to one in which animation and rigs were baked out into efficient “pose caches” containing animated posed points and transforms, so that lighting, effects, and rendering could reduce the latency (and memory footprint) with which they can access the data. Consequently, in 2008-2009, the pipeline development team began building TidScene, a geometry schema backed by a binary database (Berkeley DB), with a lightweight scenegraph as the mechanism for authoring and reading time-sampled data. Key elements of TidScene included a (for the time) high performance OpenGL rendering plugin that enabled direct-from-TidScene preview rendering in all pipeline applications, and the development of a native referencing feature that was used (possibly abused) to achieve layering, scenegraph “isolation” (i.e. loading only a portion of the scene), asset referencing, and some support for variation.
然而,与此同时,皮克斯沿着电影和特效行业的许多公司发现,从动画和索具直到渲染的流水线过渡到动画和索具被烘焙到高效的“姿势缓存”中,包含动画的姿势点和变换,这样灯光,特效,并且渲染可以减少它们可以访问数据的等待时间(和存储器占用空间)。因此,在2008-2009年,管道开发团队开始构建TidScene,这是一个由二进制数据库(Berkeley DB)支持的几何模式,并使用轻量级场景图作为创建和阅读时间采样数据的机制。TidScene的关键元素包括(当时)高性能OpenGL渲染插件,该插件在所有管道应用程序中启用直接从TidScene预览渲染,以及开发用于(可能被滥用)实现分层、场景图“隔离”(即“隔离”)的本地引用功能。 仅加载场景的一部分)、资源引用以及对变化的一些支持。

The speed, scalability, and universal pipeline access of TidScene pose-caches were a success, but also put Pixar back into a place where we had multiple, competing systems for creating composed scene description, with different semantics, API’s, and places in the pipeline where they could be used. The mandate for the USD project, initiated in 2012, was to marry the (recently redesigned and improved) composition engine and low-level data model from Presto with the lazy-access, time-sampled data model and lightweight scenegraph from TidScene. USD delivers an all-new scenegraph that sits on top of the very same composition engine that Presto uses, and has introduced parallel computation into all levels of the scene description and composition core.
TidScene姿势缓存的速度、可扩展性和通用流水线访问是成功的,但也让Pixar回到了一个我们有多个竞争系统来创建合成场景描述的地方,这些系统具有不同的语义、API和流水线中可以使用它们的地方。USD项目于2012年启动,其任务是将Presto的(最近重新设计和改进的)合成引擎和低级数据模型与TidScene的延迟访问,时间采样数据模型和轻量级场景图相结合。USD提供了一个全新的scenegraph,它位于Presto使用的同一个合成引擎之上,并将并行计算引入到场景描述和合成核心的所有级别。

A key component of the USD project was the development of a modern, scalable rendering architecture, dubbed Hydra, initially deployed with what would become known as the Storm high-performance rasterizing renderer. Hydra ships as part of the USD project because it adds tremendous value to USD adoption in a pipeline and is used in all our plugins; it also provides a benchmark and reference for how to leverage USD’s multithreading for fast scene loading and imaging, as well as updating efficiently in response to dynamic edits to a live UsdStage. However, Hydra is a product in its own right, and already has other direct front-end couplings other than USD (including Presto and Maya, Katana, and Houdini plugins), and has grown beyond its original OpenGL-inspired architecture to service other render delegates, such as path-tracers.
USD项目的一个关键组成部分是开发一个现代化的、可扩展的渲染架构,称为Hydra,最初部署了Storm高性能光栅化渲染器。Hydra作为USD项目的一部分发布,因为它为管道中的USD采用增加了巨大的价值,并用于我们所有的插件;它还为如何利用USD的多线程来实现快速场景加载和成像,以及如何响应对实时UsdStage的动态编辑而高效地进行更新提供了基准和参考。然而,Hydra本身就是一个产品,并且已经有了除USD之外的其他直接前端耦合(包括Presto和Maya,Katana和Houdini插件),并且已经超越了其原始的OpenGL启发的架构,以服务于其他渲染代理,例如路径跟踪器。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值