您可以将 Unreal Engine 和 Twinmotion (DATASMITH) 数据从 CityEngine 导出至 Unreal Engine Editor 和 Twinmotion。 这通常用于建筑和设计可视化工作流,但您也可以将其用于游戏和其他任务。

注:
  • 导出 Unreal 数据仅在 Windows 上可用。
  • 要在 CityEngine 中导出 Unreal 数据,必须先安装 Unreal Engine Launcher
  • 将不再需要 CityEngine Model Loader 工程,并且会从 Unreal Engine Launcher 中将其移除。

导出选项

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

选项 描述

导出 Twinmotion 兼容

使 DATASMITH 导出与 Twinmotion 兼容。 导出将使用与 Twinmotion 和 Unreal 均兼容的 Unreal 基础材料(使用 Unreal 基础材料导出选项必须设置为 true)。 此选项还会禁用与 Twinmotion 不兼容的功能:

  • 纹理图集
  • 实例化选项
  • 导出地形
  • 导出元数据
  • 导出 LOD
  • 导出方案

全局偏移

针对 x、y 和 z 轴的所生成几何的全局偏移(笛卡尔坐标值)。

网格合并

设置所生成网格的合并方式:

  • 按初始形状 – 按初始形状合并网格。
  • 按材料初始形状 – 按照初始形状和材料合并网格。 对于每个初始形状,将为每种材料生成一个网格。
  • 全局 – 全局合并网格。
  • 按材料全局 – 按材料全局合并网格。

实例化

设置如何处理实例化:

  • 禁用 – 禁用实例化。
  • 使用实例化网格 – 如果可能,将启用实例化,由此即可在网格体之间共享网格。
  • 使用实例化网格体:将启用实例化,并使用分层实例化静态网格 (HISMC) 体添加实例。

元数据

网格合并设置为按初始形状按材料初始形状时,导出元数据。 以下为元数据导出选项:

  • 全部 – 将对象属性和报表均写入对象元数据。
  • 属性 – 将对象属性写入对象元数据。
  • 报表 – 将生成的报表数据写入对象元数据。
  •  – 对象属性和报表数据不会写入对象元数据。

导出的元数据将附加到 Unreal 中每个初始形状的根对象。

地形图层

将地形图层导出到 Unreal Engine 地形。 支持以下选项:

  • 不导出任何地形图层
  • 导出所有可见地形图层
  • 导出所有所选地形图层
  • 导出所有地形图层

使用 Unreal 基础材料

使用 Unreal 基础材料作为所有导出材料的主要材料。 这些预定义材料与 Twinmotion 和 Unreal 兼容。 它们支持以下 CityEngine 材料属性:

  • material.colormap 和 material.color
  • material.normalmap
  • material.opacitymap 和 material.opacity
  • material.emissivemap 和 material.emissive.{r|g|b}
  • material.roughnessmap 和 material.roughness
  • material.metallicmap 和 material.metallic

使用纹理图集

启用结合已导出纹理并减少材料数量的纹理图集。 通常,在运行速度较慢的硬件(例如,在 Oculus Quest 等移动 VR 设备上)上使用时,纹理图集的影响最大。

导出 LOD

启用导出细节层次 (LOD)。 仅在按初始形状导出时启用导出 LOD。

LOD 属性

用于指定 LOD 的 CGA 属性的名称。 该属性必须具有 Enum 注记。 对于 Enum 注记的每个元素,都将在 LOD 属性设置为此元素值时触发派生。

以下示例将按照初始形状生成三个 LOD:

@Enum(“low”, “medium”, “high”)
attr Lod = “low”

注:

如果在多个 CGA 文件中定义了该属性,则其必须具有相同的元素 (LOD)。

 

LOD 顺序

LOD 属性值的语义顺序。

  • 升序 – 首先定义最低细节层次。
  • 降序 – 首先定义最高细节层次。

例如,如果 LOD 属性选项定义如下,则顺序为升序,因为首先定义最低细节层次。

@Enum(“low”, “medium”, “high”)
attr Lod = “low”

导出方案

支持将 CityEngine 方案导出到 Unreal Engine 变体。 您可以针对每个方案单独指定是否将其导出为变体。

默认对象

定义如何导出默认对象。

  • 根据选择内容 – 仅导出所选默认对象。
  • 可见 – 导出场景中可见的所有默认对象,且将忽略选择内容。
 

在 CityEngine 和 Unreal 实体之间进行映射

几何

每个已导出的网格将在 Unreal 中表示为网格体。 每个唯一网格将导出为静态网格,并在启用实例化时重用。

材料

通过将 CGA 材料属性传递到基于某个主要(或父级)材料的 Unreal 材料实例,可以将材料映射到 Unreal。

默认情况下,会生成适当的主要材料来处理从 CGA 材料属性到 Unreal 材料属性的映射(另请参阅默认主要材料)。

自定义主要材料

可以通过将 material.shader CGA 属性设置为相应的 Unreal 材料路径来分配自定义主要材料,例如 /Game/Materials/CityEngineMaterials/M_CE_MyMaterial

可以导出每个 CGA 材料属性,并且可以使用具有特定名称和数据类型的材料参数在 Unreal 中进行访问。 下表列出了 CGA 材料属性及其各自的 Unreal 参数名称和类型:

CGA 属性 Unreal 参数名称 Unreal 类型 注释

material.color

颜色

Vector3

material.opacity

Opacity

float

material.reflectivity

Reflectivity

float

material.shininess

Shininess

float

material.bumpValue

BumpValue

float

material.ambient

Ambient

Vector3

material.specular

Specular

Vector3

material.colormap

ColorMap

Texture2D

material.dirtmap

DirtMap

Texture2D

material.specularmap

SpecularMap

Texture2D

material.opacitymap

OpacityMap

Texture2D

<none>

OpacitySource

float

对于 OpacitySource 值,可从以下各项中选择:

  • 0 – 使用 OpacityMap 中的颜色通道(灰度)。
  • 1 – 使用 OpacityMap 中的 alpha 通道。

material.bumpmap

BumpMap

Texture2D

material.normalmap

NormalMap

Texture2D

<none>

IsPBR

float

  • 1 – 如果 material.shader 设置为 CityEnginePBRShader
  • 0 – 其他情况

material.metallic

Metallic

float

material.roughness

Roughness

float

material.emissivecolor

EmissiveColor

Vector3

material.metallicmap

MetallicMap

Texture2D

material.roughnessmap

RoughnessMap

Texture2D

material.occlusionmap

OcclusionMap

Texture2D

material.emissivemap

EmissiveMap

Texture2D

 

默认主要材料

默认情况下,在导出过程中将根据以下规则生成相应主要材料(不透明、透明或掩膜):

  • 如果 material.opacity 小于 1 或者已设置 material.opacitymap
    • 如果 opacitymap.mode 为混合,则将使用 Transparent 主要材料。
    • 如果 opacitymap.mode 为掩膜,则将使用 Masked 主要材料。
  • 否则,将使用 Opaque 主要材料。
注:

Unreal Engine 按网格体对透明度进行排序。 导出重叠透明网格体会导致渲染伪影。 掩膜的二进制不透明度不受此限制的影响。

默认材料属性映射

默认主要材料可将 CGA 材料属性大致映射为基于物理的 Unreal 材料。 如果 material.shader 设置为 CityEnginePBRShader(例如,如果导出插入的 glTF 模型,则会自动进行此设置),则 Unreal 中的默认主要材料将使用 PBR 材料属性(粗糙度、金属性和自发光)。

注:

Unreal 中将不使用镜面反射颜色。 Unreal 中的镜面反射颜色取决于基础颜色和材料的金属性。