要访问 CityEngine 中的教程,请单击帮助 > 下载教程和示例…。 在选择教程或示例后,系统会自动下载工程并将其添加到工作空间。

简介

本教程演示了一些基于 Alembic 导出器的 VFX 相关工作流。 我们提供了三个示例:(1) 带有 Mantra 的Houdini,(2) 带有 VRay 的 Maya 和 (3) 带有 RenderMan 的 Katana 作为处理和渲染 Alembic 城市模型的下游工具。 要完整完成本教程,您需要安装 SideFX Houdini(Apprentice 或更高版本)、Autodesk Maya (2018) with VRay、The Foundry Katana (3.x) 和 Pixar RenderMan 22 for Katana。 如果这些工具之一不可用,也可以跳过相应部分。

注:

这些工作流教程只是将模型转换为 DCC 工具的一种方法。 您应该考虑修改这些示例以适合您的自定义管道。 无法保证这些示例包含针对特定管道的最有效工作流。

基础导入到 Houdini 中

在本部分中,您将以 Alembic 格式导出单个建筑物,并将其材料参数映射到 Houdini Mantra 渲染器。

CityEngine

  1. 打开 vfx_workflows.cej,将其另存为 vfx_workflows_part1.cej,然后使用 CityEngine 生成默认模型。
  2. 单击天际线照相机书签。
    GUID-95A0C962-6EDB-483E-90F2-9021F0CD22B6-web
  3. 打开海滨照相机书签以转至绿色色调的教程建筑物。
    GUID-12C168CE-33DC-4FF2-9552-B3988B15692A-web
  4. 通过在检查器中将 Level_of_Detail 属性设置为,可以提高细节层次以使其更引人注目。
    GUID-C9D9C3DC-372C-4FF7-91B2-47FF95199742-web
  5. 单击文件 > 导出模型… > Alembic 以将模型导出到 Alembic(使用默认设置);例如,将文件导出到 part1_waterfront_building.abc。 现在,您将仅导出单个建筑物,以演示整个管道的工作原理。
    GUID-2040D0A7-BFAD-4FB7-8207-359C1D000B1D-web
    GUID-A17F7A8E-39AA-4EE0-ACD2-9DC29BA20871-web
    注:

    CityEngine Alembic 导出器可将材料属性附加到 Alembic <polymesh>/.userProperties 复合属性节点。 有关 Alembic 节点树布局的详细信息,请参阅导出 ABC (Alembic) 中的逻辑示意图。

Houdini

  1. 启动 Houdini,并在教程工程子目录 workflows/cityengine_alembic_workflow_v1.hipnc 中打开准备的 Houdini 场景。
  2. 选择 AbcCityEngine 节点内的 abc 子节点,然后浏览至 part1_waterfront_building.abc 文件。
    GUID-E459A3BB-3F1A-47F8-8558-7AA812DCF7EA-web
    GUID-1864D8D0-0CE2-4CB5-9196-A6DB2B7300FC-web
  3. 在 Houdini 视口中,键入 F 以聚焦在建筑物模型上。 您将看到其边界框制图表达。

    GUID-3C1AFBAE-920F-4615-9547-0074FDD02465-web

    注:

    Houdini 将针对所有 Alembic 叶子网格显示边界框。 尚未显示中间 Alembic 节点的制图表达。

  4. 在 abc 参数检查器中,将显示为字段在完整几何边界框之间切换。

    GUID-29235276-692F-4F1A-9835-CF03641EA9BA-web

    注:

    未设置 Houdini 场景以将材料属性分配给 Houdini OpenGL 视口中的预览。 可以按照与以下步骤 7 中的 Mantra 材料类似的方法执行此操作。

  5. 渲染视图中,将照相机设置为场景视图 1,然后单击渲染
    GUID-CB283F5A-FA33-40E0-A5C7-974D2343F87D-web
  6. 接下来,您将详细了解材料分配。 选择 abc 节点,转至几何电子表格选项卡,然后在图元模式下过滤“图元”。 Houdini 将在 abc_userProperties 列中以 JSON 结构显示 CityEngine 材料属性。
    GUID-DA6A4EB1-963A-4C10-BDCC-D7034AAD18F5-web
  7. 保持几何电子表格选项卡处于打开状态,然后选择 abcJSON 节点。 它包含一些 Python 代码,用于将 JSON 块分成单独的图元属性。

    GUID-A281B23E-992B-4D8B-B6B6-BA7F23D2F6F3-web

    最后,ce_to_mantra 节点将使用 Houdini 材料覆盖功能来覆盖具有图元属性的基础材料设置。 可以随意自定义此选项,并将更多 CityEngine 材料属性映射到 Mantra 材料。

在 Houdini 中使用实例

本部分将演示 Houdini 中场景的实例化和导出后编辑。

  1. 在 CityEngine 中,再次打开 vfx_workflows.cej 并将其另存为 vfx_workflows_part2.cej
  2. 单击巴台农神庙花园照相机书签并关闭地形图层可见性。

    GUID-7FB149D8-B0A9-4F2B-B9B2-FFB73F39B7DE-web

    请注意如何多次重用相同的树模型以及神庙部分(例如,列)。

  3. 使用俯视图,选择神庙及其周围的几棵树,然后将文件导出到 part2_parthenon_gardens.abc
    GUID-7229423C-54C4-4B08-A39F-152CF9C8424B-web
  4. 在 Houdini 中,保存 Houdini 教程场景的副本,然后加载 part2_parthenon_gardens.abc 文件。
  5. 选择 Alembic 节点,然后按 F 以将照相机聚焦在新内容上。 您将看到已导出场景的边界框制图表达。

    GUID-2C0F8209-AF9D-4C63-B398-E26B3CF94B06-web

    您可以看到每个资产实例如何显示为单独的边界框,以及 Alembic 导出器如何保留树木的实例信息。 由此可以对每个实例进行基础编辑。

  6. 如果您不喜欢树木在照相机设置中阻挡神庙的视图,则可以调整照相机并将“渲染”选项卡移动到其自己的窗口中,然后开始渲染。 查看完整图像
    GUID-0E115CF4-0BE6-413F-BA00-3AAE99AF0C31-web
  7. 设置具有俯视图的分割视口,以选择要移除的树木。
    GUID-4D0E944B-A0B8-4E5E-BA6A-58A97FD634B7-web
  8. 然后将其移开。 查看完整图像
    GUID-333FE0DF-6789-4254-ACB6-AFA793721FA2-web

导入 Maya 中并使用 VRay 进行渲染

本部分将演示如何在渲染时使用 VRay 翻译后 Python 脚本,根据源 Alembic 文件来填充 VRayProxy 的材料。

Beta:

由于有关纹理坐标的问题尚未解决,因此该部分仍处于测试阶段。

  1. 打开 vfx_workflows.cej 并将其另存为 vfx_workflows_part3.cej
  2. 使用海滨照相机书签将海滨的一部分导出到 Alembic。

    或者,您也可以使用提供的 Maya 场景,并在“网格”VRay 代理节点中设置 Alembic 文件的路径(无论如何,必须在翻译后脚本中调整路径)。

  3. 在 Maya 中,通过单击创建 > VRay > 导入代理…可以导入 Alembic 文件作为 VRayProxy。
  4. 在大纲视图中,选择新的网格对象,然后按 F 以聚焦该对象。 您将看到最终模型的近似版本(VRay 基本上会随机移除三角形,直至达到其预览三角形限制为止)。
    GUID-532F5FA4-6C76-45F3-B029-0A3ED1119DA2-web
  5. 在属性编辑器中针对 mesh_vraymesh 选中使用全名选项。
    GUID-B5773204-854E-4C84-B1BA-F495D2EF474F-web
  6. 将 Tutorial_19_VFX_Workflows/workflows/maya_vray/vray_post_translate_py_snippet.txt 中的 Python 代码段复制粘贴到 VRay 渲染设置 Post Translation Python Script 字段中。 确保将路径修改为 教程 19:VFX Alembic 工作流 CityEngine 工程的位置。
    GUID-2D19A22A-988E-4710-A448-9C978B28D584-web
  7. 单击渲染(使用 VRay)。

    整个场景的最终渲染。 查看完整图像

    GUID-13032C03-078C-4617-B767-637682DAD2A4-web

使用 Katana 和 RenderMan 的细节层次

本部分教程要求安装 Katana 3.x 和 RenderMan for Katana 22 或更高版本。

CityEngine:使用属性图层控制细节层次

本教程部分的目标是在 RenderMan for Katana 中创建天际线照相机书签视图的高质量渲染。

  1. 在 CityEngine 中,再次打开 vfx_workflows.cej 并将其另存为 vfx_workflows_part4.cej
  2. 选择天际线照相机书签并按空格键以最大化视口。 如果您使用广角屏幕,则结果将类似于下图。
    GUID-C1D58954-432C-4A85-A12A-39F893036A13-web
  3. 本教程中使用的 CGA 规则继承自示例 NYC2259 2015.0,包含细节层次 (LOD) 转换;换句话说,规则中包含的细节比默认生成的细节更多。 可以通过在前景中选择一些形状并将 level-of-detail 属性设置为“高”来尝试这一点。

    level-of-detail – 低 level-of-detail – 高
    GUID-1ED2285C-7715-4023-9249-62A07B6D6C9E-web GUID-54275AED-044B-486D-9CC3-E52A5E627882-web
     
  4. 您可以更加明智并使用地图来控制 level-of-detail 属性,而非使用高 LOD 导出所有模型。 在场景编辑器中,转至 Maps 图层组并更改 Level of Detail 图层的可见性。 缩小一点以更加清楚地查看 LOD。
    GUID-36EC08A1-BB98-41CE-AF83-B5A4653092CC-web

    灰度将控制 level-of-detail 属性,如下所示:

    亮度等级 level-of-detail 植物制图表达

    0 .. 0.3

    想象

    0.3 .. 0.6

    想象

    0.6 .. 1.0

    真实

     
  5. Level of Detail 图层包含 mapLODOverride 属性,用于启用或禁用地图的影响。 将 mapLODOverride 设置为 -1.0 可以激活所有形状的地图。
  6. 要测试 LOD 地图,请选择 New Development 图层的所有形状,然后单击生成或按 Ctrl+G。 您将能够根据 LOD 在地图上查看模型。
    注:

    Level of Detail 图层的可见性不会影响其对 level-of-detail 属性的影响。 可以再次隐藏 Level of Detail 图层以更好地查看其他图层。

    GUID-1ABD4279-CC09-4099-89B5-D0B204AF9D32-web

    注:

    使用高 LOD 的一个重要方面是不要过度使用生成按钮。 在视口中生成过多几何将最终导致 CityEngine 慢慢停止运行。 CityEngine 导出器将生成(或重新生成)任何选定的形状或模型,而不考虑是否已在视口中生成这些形状或模型。 因此,建议的工作流是预先生成模型的多个选定部分,然后选择所需场景对象并导出所有对象。

  7. 将所有模型导出到 Alembic。 选择图层,单击文件 > 导出模型…,然后将文件另存为 part4_vfx_workflow.abc。 将需要几分钟的时间来生成一个大约 1 GB 的 Alembic 文件,其中包含大约 41 个 Mio 面。
  8. 运行提供的 Python 脚本 Tutorial_19_VFX_Workflows/scripts/textureConversion.py 以将导出的纹理转换为 RenderMan 兼容的纹理格式(脚本默认为 EXR)。 打开该脚本并按 F9 以运行该脚本,由此将在 CityEngine 的 Python 控制台中打印其进度。

Katana:使用 RenderMan 在 Katana 中渲染场景

  1. 在 Katana 中,打开示例工程文件 Tutorial_19_VFX_Workflows/workflows/katana/ ce_abc_workflow_v2.katana
  2. 节点图表将包含这些主要构建块:
    1. Alembic 输入:CityEngine_Model 为 Alembic_In_Prman 类型,并且将读取导出的 Alembic 文件。 Store_AbcRoot 节点用于记住场景图中的 Alembic 文件名。
      GUID-EE6C54C5-3D32-42D8-A02E-4E22DAB07659-web
    2. 着色网络:这是带有 RenderMan PxrSurface 着色器的 Katana NetworkMaterial 节点。 着色器将读取两个纹理贴图(diffuseMap 和 opacityMap)并以散射颜色进行混合。 下面,您将使用 CityEngine Alembic 文件中的值来控制这三个材料属性。
      GUID-821A888A-EAAB-427C-BA08-0737ECB03912-web
    3. OpScript 节点 OpScript_MapCityEngineMaterialProperites 使用 Lua 脚本将 Alembic 用户属性(即 CityEngine 材料)与 RenderMan 着色网络属性连接。
      GUID-78CF185B-A963-4962-A143-D92BF8C3D3A2-web
  3. 接下来,根据基础导入到 Houdini 中来设置 Alembic 文件:
    1. 在节点图表中,选择 CityEngine_Model 并将 abcAsset 设置为 part1_waterfront_building.abc 文件。
    2. 在场景图表中,将图表展开至 /root/world/geo/asset/CityEngineRoot 并选择 CityEngineRoot
    3. 在查看器中,单击浏览照相机 > …/camera。 按 F。您将看到 CityEngine 模型的边界框(即 Alembic 文件的顶级)。
    4. 按 P 以渲染场景。 您将在监视器中看到 RenderMan 输出。
      GUID-4539CBC8-DA58-4E2E-A130-41802BCBC55B-web
    5. 在场景图表中,展开 CityEngineRoot 下方的树木,并观察如何在查看器中显示各个构建组件。 这是使 Katana 查看器在密集场景中保持交互性的主要动力。
      GUID-A2063D1D-57D8-452C-AD05-564D5DBD3C09-web
  4. 由此即可渲染整个场景。 针对之前导出的 part4_lod_control.abc 文件重复上一步骤。 确保仅将场景图表展开至 CityEngineRoot 下方的一个等级。 在加载几分钟后,您应该会看到格网等级的边界框。
    1. 在 CityEngine 中,将 heightmap 和 water 图层导出至 part4_terrain.abc,在节点 CityEngine_Terrain 中进行分配,然后将该节点连接到合并节点。 或者,您也可以将庙宇地标导出至 Alembic,然后将其连接到准备好的“CityEngine_Landmark”导入节点。
    2. 针对之前导出的 part4_lod_control.abc 文件重复步骤 3。 确保仅将场景图表展开至 City/CityEngineRoot 下方的一个等级。 您将看到格网等级的以下边界框:
      GUID-06884DB4-705E-464E-842B-50ABFD755A21-web
  5. 单击渲染以允许 RenderMan 运行。 查看完整图像
    GUID-C397A9A7-FBF3-461F-A6CE-1E518A7947F1-web