Vitruvio连通CityEngine与UnrealEngine
通过Vitruvio插件可以在UnrealEngine5中运行CityEngine规则文件RPK,而不再依赖CityEngine软件
课程大纲:
Vitruvio在UnrealEngine5中的使用
课程说明:
Vitruvio 实现了RPK规则文件在UnrealEngine中独立运行,RPK是CityEngine的CGA文件与其它数据资产的可执行压缩包,这样是CityEngine最核心和强大的地方,现在它的最核心功能可以不依赖CityEngine软件本身而可以在UnrealEngine里面独立运行了,让我们详细了解并学习其使用方法。
课程准备:
CityEngine以及UnrealEngine和Vitruvio插件
下载
-
下载最新的 Vitruvio版本。请注意,zip 文件包含 Vitruvio 使用的库,您的浏览器可能会警告您不要下载它们。可以忽略此警告。
-
解压缩下载的文件并将提取的 Vitruvio 文件夹复制到
<Path to Unreal Engine 5.0>EnginePluginsMarketplace
(例如C:devEpic GamesUE_5.0EnginePluginsMarketplace
)。Marketplace 文件夹现在应该包含 Vitruvio 插件文件夹。
安装
-
从 Epic Games 启动器创建一个新的 Unreal Engine 5.0 项目或打开一个现有项目。
-
打开项目后,一个弹出窗口将通知您新可用的 Vitruvio 插件。打开管理插件…(如果弹出窗口没有出现打开编辑→ 插件代替)
-
在插件管理器中搜索Vitruvio并启用插件(需要重新启动)。
-
在 Unreal 重新启动后,Vitruvio 就可以使用了。有关如何使用插件的更多说明,请参阅使用指南。
手动安装
插件安装位置
虚幻引擎将所有插件存储在以下位置:
- Windows上的
C:\Program Files\Epic Games\UE_[version]\Engine\Plugins
- macOS上的
/Users/Shared/Epic Games/UE_[version]/Engine/Plugins
下载地址:
github:https://github.com/Esri/vitruvio
最新版:2023版本
https://github.com/Esri/vitruvio/releases/tag/v1.3
案例下载
https://esri.github.io/cityengine/vitruvio#examples
用法
Vitruvio 利用 CityEngine 的程序运行时 (PRT) 来生成建筑物。作为输入,它需要一个规则包 (RPK)、一个初始形状和一组属性。生成过程以初始形状作为起始形状开始,并由此扩展形状语法规则。属性是控制形状生成的参数。
本节介绍如何在 Unreal Engine 5 (UE5) 中使用 Vitruvio Actor、从 CityEngine 导出规则包以及如何导入或创建初始形状。
请注意,该插件包含一个演示文件夹,其中包含一个用于试用 Vitruvio 的简单级别。首先,在 Content Browser 的 View Options(右下角)中启用Show Engine Content和Show Plugin Content 。现在可以在Vitruvio Content/Demo/文件夹中找到演示内容。
Vitruvio 演员和组件
Vitruvio组件允许用户访问程序生成。它可以附加到任何虚幻Actor。如果 Actor 已经附加了一个有效的初始形状组件,它将自动用作建筑物生成的初始形状。有关详细信息,请参阅初始形状。
为了便于使用,Vitruvio 插件还提供了Vitruvio Actor,它可以在Place Actors面板中找到并放置在场景中的任何位置。
在场景中放置 Vitruvio Actor 后,Details面板会显示所有相关属性。
自动生成:初始形状、规则包或属性等属性发生变化后是否自动生成。
生成后隐藏初始形状:是否在生成模型后隐藏初始形状几何。
Generate Collision Mesh:生成后是否生成碰撞网格(复杂碰撞)。
规则包:要使用的规则包。有关如何从 CityEngine 导出规则包并将其导入 UE5 的更多信息,请参阅规则包。
随机种子:用于生成的随机种子。另请参阅CityEngine 帮助。
报告:生成的CGA 报告值。可以使用Blueprint API访问这些值。
初始形状类型:使用的输入初始形状的类型。有关如何导入或创建初始形状的更多信息,请参阅初始形状。
属性:控制生成的选定规则包的属性。另请参阅属性。
规则包
规则包(RPK) 是一个压缩包,包含已编译的 CGA 规则文件,以及所有需要的引用资产和数据。通过右键单击 CGA 文件并使用Share As…菜单,可以在 CityEngine 中导出 RPK。确保在Additional Files中包含所有必要的资产,并将Save package to file设置为要将 RPK 导出到的路径。
然后可以将导出的 RPK 拖到虚幻编辑器的内容浏览器中,该浏览器会将其导入到您的项目中。
请注意,目前导入的 RPK 文件大小限制为 2GB。
现在可以将导入的 RPK 资产拖到 Vitruvio Actor 的Rule Package字段中以分配它。
初始形状
初始形状(CGA 建模概述)代表输入几何图形,通常是代表地块或建筑物占地面积的多边形。Vitruvio 支持两种初始形状,静态网格体和样条线。
静态网格
要更改初始形状几何体,您可以将静态网格体分配给初始形状网格体字段。请注意,目前仅支持平面几何。
样条
要将样条线用作初始形状,请将“初始形状类型”下拉菜单更改为“样条线” 。
要复制样条点,请选择现有点,按 alt 并拖动该点。样条点可以是线性的或弯曲的。可以通过选择InitialShapeSpline的Spline Component和详细信息面板的Selected Points标题来更改单个点的类型。
属性
属性控制模型的程序生成。可用属性集取决于分配的规则包的基础规则。
选择Vitruvio Actor将在详细信息面板中显示其所有属性。可以更改这些值以控制程序生成。
注意:如果启用自动生成,每次属性更改都会重新生成模型。
先进的
从 CityEngine 到 Unreal Engine 的初始形状
本节说明如何从 CityEngine 导出一组建筑足迹,以及如何将它们导入 Unreal 以将它们用作建筑生成的初始形状。
城市引擎
要从 CityEngine 导出初始形状建筑足迹,可以使用Datasmith Exporter 。在视口中选择建筑足迹,然后选择File → Export models…以导出它们。选择Unreal Engine导出器并确保将Export Geometry设置为Shapes并将Mesh Merging设置为Per Initial Shape。这将确保每个足迹(没有生成的模型)都单独导出。
虚幻引擎
注意: 要导入 datasmith 文件,需要在项目中启用Datasmith Importer插件。转到Edit → Plugins并验证Datasmith Importer插件是否已启用。
首先使用Datasmith导入器从 CityEngine 导入 datasmith 文件。可以使用默认导入设置。
现在将所有导入的初始形状转换为 Vitruvio Actors:
- 选择DatasmithSceneActor(这是 Datasmith 场景的根 Actor)
- 右键单击并选择Select All Viable Initial Shapes in Hierarchy。这将选择所有初始形状可行的子 Actor(意味着所有附加了有效StaticMeshComponent或SplineComponent的 Actor )。
- 再次右键单击任何选定的 Actor 并选择Convert to Vitruvio Actor。在打开的对话框中,选择您要分配的任何 RPK。这会将所有选定的 Actor 转换为 Vitruvio Actor 并分配选定的 RPK。
蓝图支持
本节介绍如何将蓝图与 Vitruvio Actor 一起使用。虚幻引擎的蓝图系统是一种强大的可视化脚本语言。VitruvioComponent 提供了几个蓝图函数来控制其行为,例如设置新属性值或在模型生成后访问报告。
注意:蓝图 API 调用忽略 VitruvioComponent 的自动生成标志。通过参数单独控制每个函数调用的重新生成。
设置
我们首先需要检索 VitruvioComponent 以访问所有必要的功能。在ReportingDemo场景中(在“VitruvioContent/Demo”文件夹中)打开关卡蓝图并将Candler Building Actor 从大纲视图拖到蓝图中以访问 VitruvioComponent,如下所示:
修改属性
接下来,我们将Report Building Vitruvio Actor 的nFloor属性修改如下:
这个调用是异步执行的。默认执行路径在调用完成后立即执行,Attributes Evaluated在属性评估后执行,Generate Completed在新模型生成后执行。如果Generate Model设置为 false,则永远不会执行Generate Completed 。
所有其他 Vitruvio 蓝图调用都遵循类似的结构。
注意:当同时执行多个异步 Vitruvio Blueprint 调用时,只会执行一个Generate Completed。
注意:需要传递完全限定的属性名称。完全限定名称包括 CGA 样式前缀(目前所有属性都是Default$)。您可以通过右键单击属性并选择Copy Fully Qualified Attribute Name来访问 Details 面板中的名称。
访问报告
我们现在可以访问报告并按如下方式打印它们:
使用Attributes Evaluated执行路径,因为我们需要等到新属性被评估后才能访问新的报告值。