课程大纲

CityEngine城市三维场景制作

CityEngine三维数据格式导出

三维数据资产导入Twinmotion

课程说明

本课程涉及CityEngine与Twinmotion两个软件的交互使用方法,实现的路径以及涉及的问题,避免踩坑。

CityEngine目前可以导出datasmith的数据格式,这样Twinmotion就可以直接导入CityEngine的三维数据资产,在CityEngine2022版本中,导出datasmith格式的时候还增加了一个优化选项,可以选择适配Twinmotion。

CityEngine的文档中关于Twinmotion设置有详细说明,以下为引入官方文档:

 

除了常规导出选项之外,Unreal Engine DATASMITH 还具有以下选项:

导出 Twinmotion 兼容

使 Datasmith 导出与 Twinmotion 兼容。 导出将使用与 Twinmotion 和 Unreal 兼容的“Unreal 基础材料”(使用 Unreal 基础材料导出设置将设置为 true)。 它还将禁用与 Twinmotion 不兼容的功能:

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

 

通过这样的选项,确实可以方便在Twinmotion打开CityEngine的数据资产了,但是你会发现有些数据或者资产将无法导出,例如地形。即使是你选择了地形图层,在导出以后地形也不会在Twinmotion中显示,因为这些资产为了兼容性考虑而被禁用了。

CityEngine目前的新版本逐渐增加其默认规则和数据的生产能力,比如他的esri.lib的默认工程文件里面的资产以及强大的CGA规则,直接通过getmapdata下载遥感影像数字高程数据以及矢量的osm数据后就可以直接默认执行内置CGA规则而自动生产城市三维数字资产,而且遥感影像和数字高程数据的精度越来越高,这样我们通过CityEngine可以全部完成城市的建筑与交通的大部分城市三维建模,其中包括地形资产。我们只需要依赖Twinmotion强大的资产库完善景观资产和细节部分,整个城市内容就可以完成,当然Twinmotion的强大渲染能力和导出场景的展示性更是它的优势。

那么如何解决将三维地形数据资产完整导入到Twinmotion,我们能选择的方法例如不导出datasmith格式,导出为FBX或者dae等三维格式,这样就可以完成导出地形,但这样数据资产在Twinmotion也会容易出现问题,例如模型比例不对,材质贴图不显示或者材质UV不对等等。

本视频内容会详细讲述CityEngine导出三维数据资产到Twinmotion完成渲染的不同方法,让你明白可以选择最适合的路径完成你想要的效果,减少你不必要的时间浪费。

设置参数详解

 

您可以将 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 中的镜面反射颜色取决于基础颜色和材料的金属性。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。