内容创作 - 地图

Carla 提供了大量的资源,可用于创建开箱即用的驾驶仿真。然而,Carla 的真正力量在于其全面的可扩展性,允许用户创建完全自定义的环境,其中包含建筑物、长凳、垃圾桶、雕像、路灯和公交车站等定制资产。之前稳定的地图定制方法

在本教程中,我们将介绍创建与 Carla 一起使用的简单地图的过程。我们将使用两个软件包来创建地图的各个部分。我们将使用 RoadRunner 创建道路网络,然后通过 虚幻编辑器 将资源添加到地图中。

先决条件

要遵循本指南,您需要从源代码构建 Carla,以便您可以使用虚幻编辑器。请遵循相关操作系统的 构建说明 。您还需要 RoadRunner 的许可副本。您可能还需要 Maya、3DS Max 或 Blender 等三维建模应用程序来为自定义地图创建三维资产。您应该确保已完成构建 Carla 的所有步骤并确保虚幻编辑器正在运行,这可能需要一些时间来构建应用程序。如果您想为地图创建三维资产,则应使用适当的三维设计应用程序,例如 Blender、Maya、3DsMax 或 Modo。

大地图

以下文本详细介绍了创建和装饰标准地图的过程。从版本 0.9.12 开始,Carla 具有大地图功能。大地图的比例比标准地图更大,最大可达 100 km2。由于硬件限制,大地图的工作方式与标准地图略有不同,即使在高端显卡中也是如此。大地图被分割成图块,并且在仿真过程中仅加载立即需要的图块(即最接近自我车辆的图块)。其他图块处于休眠状态,直到需要数据为止。这有助于实现 Carla 仿真的最高性能。接下来的大多数细节与构建大地图时类似,但还有一些额外的步骤。请按照 本指南 为 Carla 构建大地图。

数字孪生工具

Carla 提供了一个程序化地图生成工具,它从 OpenStreetMap 获取道路网络数据,并用建筑物和植被程序化地装饰地图。请在 此处 阅读有关如何使用该工具的信息。

使用 RoadRunner 创建路网

打开 RoadRunner 并创建一个新场景。选择道路规划工具(Road Plan Tool)并在工作区中 右键 单击以放置道路的第一个控制点和第二个控制点。单击并拖动道路尽头的红点以移动和延长道路。

roadrunner_draw

出于本教程的目的,我们使用中间有一个交叉路口的简单椭圆形道路。要构建更高级的网络,请参阅 Roadrunner 文档

roadrunner_road

在 RoadRunner 中制作地图后,您就可以将其导出。请注意,道路布局导出后无法修改。导出之前,请确保:

  • 地图以 (0,0) 为中心,以确保地图可以在虚幻引擎中正确可视化。
  • 地图定义是正确的。
  • 地图验证是正确的,密切关注连接和几何形状。

CheckGeometry

地图准备好后,单击OpenDRIVE Preview Tool按钮即可可视化 OpenDRIVE 道路网络并对所有内容进行最后一次检查。

checkopen

笔记

OpenDrive Preview Tool 可以更轻松地测试地图的完整性。如果连接有任何错误,请单击Maneuver ToolRebuild Maneuver Roads

创建所需的道路网络后,在 RoadRunner 菜单栏中选择File > Export > Carla Filmbox (.fbx, .xodr, .rrdata.xml) 并导出到适当的位置。

roadrunner_exports

RoadRunner 是创建自定义地图的最佳应用程序。还有一些替代方案,例如 OpenStreetMap,专注于从真实的道路地图生成地图。

TrueVision 设计器

RoadRunner 是一款需要 MATLAB 的专有软件。大学等一些机构可能与 MathWorks 达成了协议,以便某些用户可以获得 RoadRunner 许可证。如果您没有许可证预算,RoadRunner 的一个方便的开源替代方案是TrueVision Designer 。此应用程序具有许多与 RoadRunner 相同的功能,如果您无法获得 RoadRunner 的许可证,该应用程序会非常有用。

将您的路网导入 Carla

Carla 需要的重要导出文件是 .xodr 文件和 .fbx 文件。将这些文件复制或移动到您从源代码构建的 Carla 存储库根目录内的 Import 文件夹中。

roadrunner_imports

现在在 Carla 源目录的根目录中打开一个终端并运行make import. 这会将道路网络导入 Carla。

您现在可以在虚幻编辑器中看到新地图。在 Carla 源目录的根目录下运行 make launch 以启动虚幻编辑器。您现在将在内容浏览器中看到一个名为 map_package 的新目录。在此目录 Content > map_package > Maps > tutorial 中,您现在将找到您的新地图。

笔记

可以参考 链接 通过鼠标右键的方式直接导入。

new_loaded_map

您现在已经创建了道路网络,这是地图的基础。

导入资产并将它们添加到地图

现在我们已经有了道路网络作为地图的基础,我们现在想要为地图创建一些内容,例如建筑物。这些资源可以使用三维建模应用程序(例如 Autodesk Maya、3DS Max、Blender 或具有适当导出选项的任何其他三维应用程序)创建。重要的是,应用程序至少能够导出.fbx

在 Carla 中创建资产需要几个元素:

  • 网格 - 一组 3D 坐标顶点和关联的连接边。
  • UV 贴图 - 将三维顶点和边映射到二维纹理空间,以将纹理与三维位置进行匹配。
  • 纹理 - 定义三维对象表面上显示的颜色和图案的二维图像。
  • 法线贴图 - 定义目标表面法线方向的二维图像,以向目标表面添加三维变化。
  • ORM 贴图 - 定义金属度(Metallicity)、粗糙度(Roughness)和环境光遮挡(Occlusion)区域的贴图

ORM 贴图利用标准 RGBA 编码图像的通道对金属区域、粗糙度和环境遮挡的贴图进行编码。当我们在这里定义贴图时,红色通道定义金属贴图,绿色通道定义粗糙度,蓝色通道定义环境光遮挡。这些贴图(以及漫反射贴图和法线贴图)可以使用 Adobe Substance 3D painter 等应用程序创建。

使用虚幻内容浏览器在某个适当的位置创建一个新文件夹。在此文件夹中,您可以右键单击并Import to PATH/TO/FOLDER在上下文菜单顶部附近进行选择,也可以将文件直接拖放到内容浏览器中。

我们将导入一个包含从 Blender 导出的基础网格和 UV 贴图的 FBX 文件。

farmhouse_blender

在上下文菜单中,对于 Normal Import Method 确保“网格”部分选择了“导入法线(Import Normals),并且在“材质(Material)”部分中选择了Do Not Create Material。在“材质”部分中取消选择,因为我们将手动导入它们。如果您想使用 FBX 文件中已嵌入的某些纹理,这些选择将会有所不同。

选择Import All。导入完成后,双击内容浏览器中显示的导入资源进行编辑。

farmhouse_edit

我们现在应该导入纹理、漫反射颜色的漫反射纹理、法线贴图和 ORM 贴图。

通过双击打开 ORM 贴图并取消选择sRGB选项,以确保正确应用纹理。

右键单击内容浏览器并从菜单中选择Material。将在内容浏览器中创建新材料。双击进行编辑。按住 Shift 键选择导入的纹理并将其拖到材质编辑窗口中,现在您将在材质节点编辑器中获得 3 个新节点。

material_init

现在根据以下规则连接节点:

  • Diffuse RGB --> Base Color
  • Normal RGB --> Normal
  • ORM R --> Ambient occlusion
  • ORM G --> Roughness
  • ORM B --> Metallic

您的材质节点图现在应该与此类似:

material_final

保存材质,然后再次打开资源并将材质拖入材质槽中。您的资源现在应该已完全纹理化。

textured_asset

现在保存资产,即可在地图中使用。您现在可以从内容浏览器中拖动资源并将其放入地图中:

asset_in_map

现在,您可以使用工作区左上角的“保存当前”选项保存地图,即可使用。开始仿真。

地图作者指南到此结束。现在您知道如何创建道路网络并导入三维资产以在 Carla 中使用。您现在可以阅读如何 打包地图以在 Carla 独立版本中使用

交通灯

要将红绿灯添加到新地图:

1.内容浏览器, 导航至 Content > Carla > Static > TrafficLight > StreetLights_01。您会发现几种不同的交通灯蓝图可供选择。

2. 将交通灯拖到场景中并将其放置在所需位置。按键盘上的空格键可在定位、旋转和缩放工具之间切换。

3. 通过选择“详细(Details)” 面板中的 BoxTrigger 组件并调整 Transform 部分的值,为每个红绿灯调整 trigger volume 。这将确定红绿灯的影响范围。

ue_trafficlight

4. 对于路口,将BP_TrafficLightGroup参与者拖入关卡中。通过将路口处的所有交通灯添加到“详细信息(Details)”面板中的“交通灯(Traffic Lights)”数组,将它们分配给交通灯组。

ue_tl_group

5. 交通灯计时只能通过Python API 进行配置。请参阅 此处 的文档以获取更多信息。

ue_tlsigns_example

例如:交通标志、交通信号灯和转弯停车。

交通标志

要将交通标志添加到新地图:

1.内容浏览器,导航至 Content > Carla > Static > TrafficSign。您会发现几种不同的交通灯蓝图可供选择。

2. 将交通灯拖到场景中并将其放置在所需位置。按键盘上的空格键可在定位、旋转和缩放工具之间切换。

3. 通过在“详细信息( Details )”面板中选择 BoxTrigger 组件并调整“变换(Transform)”部分中的值,调整每个交通标志的trigger volume。这将确定交通灯的影响区域。并非所有交通标志都有触发音量。此类标志包括让行标志、停车标志和限速标志。

材质

Carla 内容库拥有大量有用的材料,可随时用于更改地图的外观。在内容浏览器中,导航至Carla > Static > GenericMaterials。在这里您会发现许多可用于改变地图外观的材料。

您可以通过拖放到地图元素上来快速测试材质:

map_materials

道路画家

道路画家是一种可用于自定义道路外观的工具,通过附加纹理、贴花和网格添加额外的真实感。

什么是道路画家?

道路画家工具是一个使用 OpenDRIVE 信息快速绘制道路的蓝图。它采用主材质并将其应用到道路的渲染目标以用作画布。主材质由一系列材质组成,这些材质可以使用画笔混合并用作蒙版。无需应用光度测定技术,也无需考虑几何体的 UV。

道路画家使用 OpenDRIVE 信息来油漆道路。确保您的.xodr文件与地图同名,这样才能正常工作。

建立道路画家、掌握材质和渲染对象

1. 创建 RoadPainter 参与者。

  1. 内容浏览器 中,导航至 Content > Carla > Blueprints > LevelDesign
  2. RoadPainter 拖入场景中。

2. 创建渲染目标。

  1. 内容浏览器 ,导航至 Content > Carla > Blueprints > LevelDesign > RoadPainterAssets.
  2. 右键单击 RenderTarget 文件并选择 Duplicate
  3. 重命名为 Tutorial_RenderTarget

3. 创建主材质实例。

  1. 内容浏览器 中,导航至 Game > Carla > Static > GenericMaterials > RoadPainterMaterials.
  2. 右键单击 M_RoadMaster 并选择 Create Material Instance
  3. 重命名为 Tutorial_RoadMaster

4. 重新校准“地图尺寸”(Map Size (Cm) ) ,使其等于地图的实际尺寸。

  1. 选择 RoadPainter 场景中的参与者。
  2. 转到“详细信息( Details )” 面板并按 Z-Size 按钮。 您将看到”地图尺寸 (Cm)(Map Size (Cm))“中的值发生变化。

map size

5. 同步RoadPainterTutorial_RoadMaster 之间的地图尺寸。

  1. 在 _内容浏览器_中,打开 Tutorial_RoadMaster
  2. 复制上一步中 Map Size (Cm) 的值,并将其粘贴到 Tutorial_RoadMaster 窗口中的 Global Scalar Parameter Values -> Map units (CM)
  3. 点击保存。

img

6. 创建道路画家和主材质之间的通信链接。

Tutorial_RenderTarget 将是道路画家和 Tutorial_RoadMaster 之间的通信纽带。

  1. Tutorial_RoadMaster 窗口中,将 Tutorial_RenderTarget 应用于 Global Texture Parameter Values -> Texture Mask
  2. 保存并关闭。
  3. 在主编辑器窗口中,选择道路画家参与者,转到“详细信息(Details)”面板并将 Tutorial_RenderTarget 应用_Paint -> Render Target_ 。

准备主材质

您创建的Tutorial_RoadMaster材质包含基础材质、额外材质信息以及将通过您的Tutorial_RenderTarget。您可以配置一种基础材质和最多三种附加材质。

master materials

要配置材料,请双击该Tutorial_RoadMaster文件。在出现的窗口中,您可以根据需要为每种材料选择和调整以下值:

  • 亮度(Brightness)
  • 色调(Hue)
  • 饱和度(Saturation)
  • AO 强度(Intensity)
  • 法线贴图强度(NormalMap Intensity)
  • 粗糙度对比(Roughness Contrast)
  • 粗糙度强度(Roughness Intensity)

您可以通过选择以下值并在搜索框中搜索纹理来更改每种材质的纹理:

  • Diffuse
  • Normal
  • ORMH

探索 Game > Carla > Static > GenericMaterials > Asphalt > Textures 中可用的一些 Carla 纹理。


描绘道路

1. 在道路画家和道路之间创建链接。

  1. 在主编辑器窗口中,在 World Outliner 搜索框中进行 Road_Road 的搜索。
  2. Ctrl + A 选择所有道路。
  3. 在“详细信息( Details )” 面板中,转到 Materials 部分并给 Element 0Element 1Element 2Element 3 应用 Tutorial_RoadMaster

2. 选择要定制的材质。

我们添加的每种材质 Tutorial_RoadMaster 都单独应用于道路,并使用画笔工具配置应用程序。要应用和自定义材质:

  1. 选择道路画家参与者
  2. 在“详细信息( Details )” 面板中,在 Mask Color 下拉菜单中选择要使用的材质。

choose material

3. 设置画笔和模板参数。

GenericMaterials/RoadStencil/Alphas 中有多种模板可供选择。模板用于根据您的需要绘制道路,可以使用以下值进行调整:

  • Stencil size — 画笔的尺寸。
  • Brush strength — 轮廓的粗糙度。
  • Spacebeween Brushes — 笔划之间的距离。
  • Max Jitter — 笔划之间画笔的大小变化。
  • Stencil — 要使用的画笔。
  • Rotation — 应用于笔画的旋转。

materials_roadpaint_brushes

刷子面板。


materials_roadpaint_typesofbrushes

不同类型的刷子。


4. 将每种材质涂抹到道路的所需部分。

通过“详细信息( Details )”面板的“默认( Default )”部分中的按钮选择应用所选材质的位置:

  • Paint all roads — 粉刷所有道路。
  • Paint by actor — 绘画特定的、选定的参与者。
  • Paint over circle — 使用圆形图案进行绘制,有助于提供变化。
  • Paint over square — 使用正方形图案进行绘制,有助于提供变化。

此部分还包含用于删除已应用更改的选项。

  • Clear all — 擦除所有绘制的材质。
  • Clear materials — 删除当前活动的材质。
  • Clear material by actor — 删除最接近所选参与者的材质。

materials_roadpaint_brushes

Different painting and erasing options.


5.添加贴花和网格。

您可以在 Content > Carla Static > DecalsContent > Carla > Static 中探索可用的贴花和网格。通过扩展并添加到 Decals SpawnMeshes Spawn 数组,将它们添加到道路绘制器中。对于每一项,您都可以配置以下参数:

  • Number of Decals/Meshes - 要绘制的每个贴花或网格的数量。
  • Decal/Mesh Scale — 每个轴的贴花/网格比例。
  • Fixed Decal/Mesh Offset — 每个轴与车道中心的偏差。
  • Random Offset — 每个轴与车道中心的最大偏差。
  • Decal/Mesh Random Yaw — 最大随机偏航旋转。
  • Decal/Mesh Min Scale — 应用于贴花/网格的最小随机比例。
  • Decal/Mesh Max Scale — 应用于贴花/网格的最大随机比例。

materials_

贴花和网格面板。


配置好网格和贴花后,通过按Spawn decals和生Spawn meshes

笔记

确保网格和贴花没有启用碰撞,以免干扰道路上的汽车并将任何边界框降低到道路水平。

7. 尝试获得您想要的外观。

尝试不同的材质、纹理、设置、贴花和网格以获得您想要的外观。下面是一些示例图像,显示了在绘制每种材质的过程中道路外观如何变化。

materials_roadpaint_mat00

基础道路材料示例。


materials_roadpaint_mat01

应用材料 1 后的示例。


materials_roadpaint_mat02

应用材料 2 后的示例。


materials_roadpaint_mat03

应用材料 3 后的示例。


materials_roadpaint_mat03

应用贴花后的示例。


materials_roadpaint_mat03

应用网格后的示例。



更新车道线外观

绘制道路后,您可以按照以下步骤更新车道线的外观:

1. 复制主材料。

  1. 内容浏览器 中,导航至 Game > Carla > Static > GenericMaterials > RoadPainterMaterials
  2. 右键单击 Tutorial_RoadMaster 并选择 Create Material Instance
  3. 重命名为 Tutorial_LaneMarkings

2. 配置车道线材质。

  1. 内容浏览器 中,双击 Tutorial_LaneMarkings
  2. 在“详细信息(Details)”面板中,转到 Global Static Switch Parameter Values 分,然后选中 LaneMark 左侧和右侧的框。
  3. 转到 Texture 部分并选中 LaneColorUv Size 复选框。
  4. LaneColor 中选择您喜欢的车道标记颜色。
  5. Save 并关闭。

3. 选择车道线网格。

将材料拖到您想要着色的车道线上。如果需要,对不同颜色的车道线重复整个过程。


树木和植被

Carla 内容库拥有一套全面的植被蓝图,供您为地图的越野区域(如人行道、公园、山坡、田野和森林)增添更多真实感。

导航到 Carla 内容库中的植被文件夹:Carla > Static > Visitation。您会找到多种树木、灌木丛的蓝图。您可以将这些元素从内容浏览器拖到地图中。

map_materials

树叶工具

对于树木和植被来说,一个有用的工具是 虚幻引擎树叶工具 。通过从工具栏的mode下拉列表中选择来激活该工具。

foliage_tool

将所需的树叶项目拖到标有 + Drop Foliage Here 的框中。在密度字段中设置适当的密度,然后使用树叶项目绘制到地图上。

foliage_paint

下一步

使用以下工具和指南继续自定义您的地图:


如果您对流程有任何疑问,可以在 论坛 中提问。