导出 USD(通用场景描述)

您可以将 CityEngine 场景导出至一组通用场景描述 (USD) 文件中,同时最大程度降低信息丢失,由此,使其适合作为交换格式在 VFX 管道中对(可能的)大型场景进行进一步处理。 导出后,将保留 CityEngine 图层、对象边界和资产实例信息。 任何 PBR 材料都将导出到 USDPreviewSurface 材料,由此确保在任何兼容的下游应用程序中正确着色,而无需进行其他材料分配工作。

使用情况

以下是 USD 数据导出的使用情况:

  • 侧重于与工具的兼容性,例如,SideFX Houdini 及其 Solaris 组件、Foundry Katana 以及相应兼容 USD 的渲染器。
  • 导出具有复杂规则的大型模型,同时保留形状粒度(不合并几何)。 由此即可在下游工具中对单个对象(例如建筑物)进行编辑(例如移动或缩放),而无需再次导出整个场景。
  • 保留实例 - 例如,CGA 操作未涉及的已插入资产将作为单独的节点导出。 由此即可在下游工具中对这些资产进行有限编辑(平移或缩放)。
  • 使用标准 USDPreviewSurface 材料方案支持 PBR 材料。

导出选项

除了一些常规导出选项之外,USD 导出还可以使用以下选项:

选项描述
网格合并

选择为每个对象的每种材料创建一个网格,或者为每个对象创建一个网格,并将材料映射到面组。

文件类型

在导出 .usdc 文件和纹理层级或单个 .usdz 包之间选择。

导出的文件布局

对于每个 USD 导出会话,都会创建一组目录和文件:

  • <basename>.usdc 是具有对 CityEngine 图层的引用的根文件。
  • 图层目录将针对每个涉及的 CityEngine 图层接收一个 .usd 文件。 图层文件包含场景对象(例如,建筑物模型),而场景对象将引用几何资产。
  • 资产目录将针对每个资产接收一个 .usd 文件以及两个特殊文件:
    • generated.usdc 将接收 CGA 生成的所有几何。
    • materials.usdc 将接收所有唯一材料。
  • 纹理目录将接收 materials.usdc 引用的所有纹理文件。
USD 文件布局

场景布局

任何 USD 导入器均可将上述 USD 图层文件组合成以下符合 USD 过渡(场景图):

场景等级USD Prim 类型USD 类别

/<导出基本名称>

Xform

群组

     /<CityEngine 图层>

Xform

群组

            /<CityEngine 对象>

Xform

组件

                  /<生成的 CGA 叶形状>

Xform

组成部分

                        /mesh

网格

                        /material

Material

                              /PBRShader

UsdPreviewSurface

                              /<纹理>

UsdUVTexture

                              /<uv0Reader>

UsdPrimvarReader_float2

不在尖括号中的项目按照表中指示的方式命名,所有其他 Prim 使用相应的 CityEngine 场景、资产或 UV 设置名称。 例如,以下 USD prim 路径指向“Philadelphia”示例中导出的模型中的 PBRShader prim:/Philadelphia/Development___Complete_Block/Shape/shape/material/PBRShader

元数据导出

USD 导出器始终将元数据(对象属性、主要 CGA 规则属性、非默认 CGA 用户属性值和 CGA 报表)写入 USD Prim(即 USD 场景图节点)。 由于粒度不同,并非所有的元数据都写入同一个 USD Prim。 生成的 USD 属性名称前缀为“CityEngine:”,请参阅以下说明。

根据上面的场景布局,元数据写入如下:

  • CityEngine:ID”写入所有的“CityEngine 对象”(包含 CityEngine 对象 ID (OID)),在 CityEngine 检查器的信息部分可见。
  • 对象属性也导出到“CityEngine 对象”Prim 中。 名称前缀为“CityEngine:Object:”。 例如,CityEngine“streetWidth”对象属性导出为“CityEngine:Object:streetWidth”,类型为双精度数组。
  • 主要 CGA 规则属性也将写入到“CityEngine 对象”Prim 中:
    • CityEngine:Rule:RuleFile”接收 cgb 文件的绝对工作空间路径,例如 /Example_Philadelphia__2022_1/bin/Generic Modern Buildings.cgb
    • CityEngine:Rule:StartRule”接收用于生成模型的起始规则名称。
    • CityEngine:Rule:RandomSeed”接收每个对象的随机种子,在 CityEngine Inspector 的信息部分可见。
  • 非默认 CGA 属性也写入到“CityEngine 对象”Prim 中,并以“CityEngine:Rule:User:”为前缀。
  • CGA 报告值以非汇总形式作为数组值写入到“生成的 CGA 叶形状”的级别上。 例如,由 CGA 语句 report("Lot Area (m2)",Lot_Area) 生成的报表将作为“CityEngine:Reports:Footprint_Area_m2”(括号转换为下划线)写入叶形状 Prim,其数组值为所有发出的报表。