OpenUSD 22.08的Introduction将Layer描述为prim及其属性的文件抽象,而Stage是组合之后的场景图。一个来源文件可以表达场景意见,却不必独自等于最终场景。文档还用subLayers说明,多人的资料可分置于不同层,再通过有序、可嵌套的关系组合。文件中的描述与组合所得的对象,因而需要分别命名。[1]
Glossary中的LayerStack从一个根层出发,递归收集它的子层,形成有顺序的集合。根层排在最前,也最强。更具体的一点是,组合弧所指向的是这一整个LayerStack,而不只是根层那一个文件。如果只摘目标文件名,就省去了随它一同参与的子层集合;层的身份仍在,却没有完整说出组合目标的范围。[2]
Reference进一步处理树形对象。文档把它说明为:将目标prim处为根的一棵子树,组合进发出引用的prim。目标可以来自同一层,也可以来自另一层。这里被接入的并非一份文件名称清单,而是有根与下级关系的场景描述;同层引用也不要求为了形成这种联系,先把目标搬到另一个文件。[2]
Marble纸面例子将场景中的两个prim分别命名为Marble_Green与Marble_Red,两者都引用Marble.usd。文档明确说,目标文件只打开一次。这让场景对象数量与被打开的目标文件数量出现不同基数:两个具名对象可以重用同一来源。引用目标的根prim还可在接入处改名,以维持兄弟prim名称唯一;目标的来源与接入后的名字不必逐字相同。[2]
Payload则被定义为一种特殊Reference。采用LoadNone的场景描述仍记录Payload,却不遍历其目标。因此,已经打开Stage与已经把每个Payload目标纳入遍历,是两个不同条件。未遍历不是未记录,目标被记下也不是其内部内容已经全部参与组合。这个差别具体落在组合弧是否继续深入目标,而非只看有没有文件名。[2]
在强弱关系上,Glossary还有严格限定:对给定LayerStack中的某个prim,直接Reference强于直接Payload。该句同时限定了prim、LayerStack以及“直接”两类弧。它不能脱离这些对象,被延长成所有嵌套引用网络里永远适用的总排序;原文所给的是同一具体范围中的比较。[2]
LayerStack说明也允许其中不同层对Reference列表贡献编辑意见。于是,引用集合的资料可能分布于整个层栈,而不是全部写在目标根层;这与前述组合弧以整个LayerStack为目标相接。这里解释的是列表意见的归属范围,不把某一层看成孤立且已囊括所有引用关系的文件。[2]
多层协作仍有明确限制。Introduction举出弱层几何拓扑改变后,强层中的着色资料可能与之不再匹配的情形,并说明系统不会自动修复。强层的存在并不让它的意见自动适应另一层的新拓扑;有序组合与资料之间始终相容,并非文档承诺的同一件事。[1]
本文只采用22.08归档的上述文字和纸面例子,未运行场景、查看图像或实施层编辑。两页首次发布日期未知;词汇表本次提取有截尾,未读词条不纳入说明。
信息来源
- Pixar / OpenUSD documentation:Introduction to USD — Universal Scene Description 22.08
- Pixar / OpenUSD documentation:USD Terms and Concepts — 22.08
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。