课程大纲
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 不兼容的功能:
|
通过这样的选项,确实可以方便在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 不兼容的功能:
|
全局偏移 |
针对 x、y 和 z 轴的所生成几何的全局偏移(笛卡尔坐标值)。 |
网格合并 |
设置所生成网格的合并方式:
|
实例化 |
设置如何处理实例化:
|
元数据 |
当网格合并设置为按初始形状或按材料初始形状时,导出元数据。 以下为元数据导出选项:
导出的元数据将附加到 Unreal 中每个初始形状的根对象。 |
地形图层 |
将地形图层导出到 Unreal Engine 地形。 支持以下选项:
|
使用 Unreal 基础材料 |
使用 Unreal 基础材料作为所有导出材料的主要材料。 这些预定义材料与 Twinmotion 和 Unreal 兼容。 它们支持以下 CityEngine 材料属性:
|
使用纹理图集 |
启用结合已导出纹理并减少材料数量的纹理图集。 通常,在运行速度较慢的硬件(例如,在 Oculus Quest 等移动 VR 设备上)上使用时,纹理图集的影响最大。 |
导出 LOD |
启用导出细节层次 (LOD)。 仅在按初始形状导出时启用导出 LOD。 |
LOD 属性 |
用于指定 LOD 的 CGA 属性的名称。 该属性必须具有 Enum 注记。 对于 Enum 注记的每个元素,都将在 LOD 属性设置为此元素值时触发派生。 以下示例将按照初始形状生成三个 LOD:
注:如果在多个 CGA 文件中定义了该属性,则其必须具有相同的元素 (LOD)。
|
LOD 顺序 |
LOD 属性值的语义顺序。
例如,如果 LOD 属性选项定义如下,则顺序为升序,因为首先定义最低细节层次。
|
导出方案 |
支持将 CityEngine 方案导出到 Unreal Engine 变体。 您可以针对每个方案单独指定是否将其导出为变体。 |
默认对象 |
定义如何导出默认对象。
|
在 CityEngine 和 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 值,可从以下各项中选择:
|
material.bumpmap |
BumpMap |
Texture2D |
|
material.normalmap |
NormalMap |
Texture2D |
|
<none> |
IsPBR |
float |
|
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 中的镜面反射颜色取决于基础颜色和材料的金属性。