This page has been translated automatically.
视频教程
界面
要领
高级
实用建议
UnigineEditor
界面概述
资产工作流程
设置和首选项
项目开发
调整节点参数
Setting Up Materials
Setting Up Properties
照明
Landscape Tool
使用编辑器工具执行特定任务
Extending Editor Functionality
嵌入式节点类型
Nodes
Objects
Effects
Decals
光源
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
编程
基本原理
搭建开发环境
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Rebuilding the Engine Tools
GUI
双精度坐标
应用程序接口
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
创建内容
Content Optimization
Materials
Material Nodes Library
Art Samples
Tutorials

生成建筑物

警告
本文介绍的功能在 Community SDK 版本中不可用。
您应该升级到 Engineering / Sim SDK版本才能使用它。

Sandworm allows the procedural generation of buildings based on shapes stored in the vector data sources. This article reviews the general workflow. To customize the autogenerated buildings, prepare and use your assets, see the article on Buildings Customization.Sandworm 允许基于存储在矢量数据源中的形状程序生成建筑物。本文回顾了一般工作流程以及建筑物构成的主要概念,以更深入地了解应如何准备资产。

主要概念#

为了生成建筑物,我们区分以下两种类型的建筑物:

  • 单层建筑,只有一层
  • 多层建筑,有两层或更多层

单层和多层建筑的概念表示
  • Underground Pedestal 始终距离地形高度 2 米。此值是硬编码的,无法更改。
  • Pedestal 高度由底层偏移值定义,默认情况下高于地形 1 米。
  • Ground Floor 高度由 Floor Height 值定义,默认为 3 米高。
  • Upper Floors 的高度等于 Number of Upper Floors * Floor height

建筑纹理#

UNIGINE 为生成的建筑物提供了一组内置材料:它们继承自 mesh_base 并根据规则.您还可以创建自定义纹理并设置材质。但是,您的纹理应满足以下描述的一组要求。

应该为建筑物准备四种类型的纹理:地下室的纹理、带开口的墙壁(门和窗)的纹理、实体墙的纹理和屋顶的纹理。每个的 UV 映射建筑的一部分取决于显示在纹理上的墙段的大小。

注意
墙壁的纹理根据它们应用于建筑物的部分而有所不同:如果纹理应用于 Basement,它应该描绘 PedestalUnderground Pedestal
  • 对于 Underground PedestalPedestal,应用墙壁的单个纹理。纹理高度应该对应于所有这些部分的高度(总和)。

    Underground PedestalPedestal (Basement) 的纹理
  • 对于 Ground Floor,应用了单独的纹理。纹理高度应对应于 Ground Floor 高度。

    带有 Ground Floor 开口的纹理
    Ground Floor 的实体纹理
  • 对于 Upper Floors,应用带有开口的墙的单个纹理。纹理高度通常是 Floor Height 的倍数。它可以是 2、3 等 Floor Height 的倍数,但不应超过 Upper Floors 部分的高度。

    带有 Upper Floors 开口的纹理
    Upper Floors 的实体纹理
  • 如果墙壁宽度小于 Floor Height,则带有开口的纹理片段无法正确放入该空间,并应用实体墙壁的纹理。
  • 如果墙宽大于Floor Height,则墙表面被分成两部分:

    • 第一部分铺有带开口的纹理。它的宽度是 Floor Height 的倍数。
    • 带有开口的纹理不适合的第二部分用实心纹理平铺。

    例如,我们有一栋两层楼的建筑,Floor Height3 米。二层墙的表面宽10.5米,划分如下:

    带有洞口的墙的纹理应用于每个 3*3 米段(基于 Floor Height 值)。对于墙壁的其余部分,应用了实体纹理。

  • 对于 Roof,应该应用两个纹理:根据细节反照率纹理。使用细节纹理可以让您使用相同的材料使屋顶的颜色多样化:设置细节渲染(混合、遮蔽、紫外线映射,着色参数的纹理)为屋顶材料以达到要求的结果。

    基础反照率纹理
    细节反照率纹理

材料命名#

为了让 Sandworm 正确地将材料应用于生成的建筑物,请遵循以下规则:

  • 每个建筑类别都应该有一个单独的从 mesh_base 继承的基础材料。该材料用作带门窗的 Ground Floor 墙的材料。

    注意
    对于这种材质,应该使用描述 Ground Floor 的纹理。

    应用于同一建筑物不同部分的其他材料是从这个继承而来的。基础材料可以具有任何所需的名称。

    注意
    什么时候指定建筑物的参数,仅指定基础材料:自动加载其子材料。
  • 建筑物其他部分的材料应继承自上一段中描述的父材料,并使用以下名称后缀:

    • _basement — 基座和地下基座的材料。
    • _level_1_blank — 没有门窗的 Ground Floor 墙的材料。
    • _level_2_complex — 带门窗的 Upper Floors 墙的材料。
    • _level_2_blank — 没有门窗的 Upper Floors 墙的材料。
    • _roofRoof 的材质。

例如,如果您有 2 种类型的建筑物应该使用不同的材料,请设置以下层次结构:

建筑材料的层次

1. Adding a Vector Data Source1. 添加矢量数据源#

Currently, Sandworm allows using only offline vector data sources for the generation.目前,Sandworm 只允许使用离线矢量数据源进行生成。

  1. In the Sources panel, add a new vector data layer.Sources 面板中,添加一个新的矢量数据层。

    • Clicking on Vector opens the window for adding slots. Slots are designed to organize data.点击 Vector 打开添加插槽的窗口。槽被设计成将数据组织到不同的地形掩模中。

      Slots

    • Clicking on + Add Layer provides the toolset for uploading vector data.点击 + Add Layer 提供了上传土地覆盖数据的工具集。
  2. In the Parameters panel, define the type of Data Source to be used: Assets or External Files. Currently, only *.shp and *.geojson are supported as assets. Therefore, if you have other types of files, you can try to add them as External Files.Parameters 面板中,定义数据源类型使用:AssetsExternal Files。目前仅支持 *.shp*.geojson 作为资产。因此,如果您有其他类型的文件,您可以尝试将它们添加为 External Files

    Click Import.单击 Import

  3. In the window that opens, select the set of files to be used as vector data.在打开的窗口中,选择要用作矢量数据的文件集。

When the vector data source is added, its image is displayed atop all the layers in the Preview panel (you may change the order of layers display), and the Vector layer parameters become available.添加矢量数据后,其图像将显示在预览面板中所有图层的顶部(图层显示顺序可能会更改),并且矢量图层参数变为可用。

2. Specifying Filters for Buildings2. 为建筑物指定过滤器#

A Filter is a set of rules used to pick the specific data from the list of all available vector data. The rules are created using Attributes: only the objects that fit the requirements of every Attribute are generated based on this Filter. Tag 实际上是一组规则,用于从所有可用矢量数据的列表中挑选特定数据。规则是使用 Attributes 创建的。只有符合每个属性要求的对象才会基于此标签生成。

Filters are created as follows:标签创建如下:

  1. Click the Add button in the Tags window of the Parameters panel.单击 Parameters 面板的 Tags 窗口中的 Add 按钮。

    Double-click on the tag to specify a tag name. To remove a tag, use the Remove button. You can add as many Filters as necessary.双击标签以指定标签名称。要删除标签,请使用 Remove 按钮。您可以根据需要添加任意数量的过滤器。

    The Share button allows shared use of the Filter among vector data layers. Select the vector data layer that will share this Filter in the pop-up window. Changes in a shared Filter will affect it in every vector data layer.Share 按钮允许在矢量数据层之间共享使用过滤器。在弹出窗口中选择将共享此过滤器的矢量数据层。共享过滤器的更改将应用于所有矢量数据层

  2. 从您创建的槽中选择一个槽 (Sources -> Vector)。槽被设计成将数据组织到不同的地形掩模中。
  3. Set an Attribute (or Attributes) for each Filter to filter specific data from the vector source. The required data is filtered using the Attribute values and a suitable operator. Autocomplete is available, and you can type in Attribute names and values.对于每个过滤器,设置一个(或多个)属性以过滤来自矢量源的某些数据。使用属性值和合适的运算符过滤所需的数据。自动完成可用。您可以输入属性名称和值或从属性列表中选择它们。

  4. The available operators are: =, !=, >, <, ANY. ANY generates all the objects that have any value assigned for the selected Attribute.可用的运算符是:=, !=, >, <, ANYANY 生成为所选属性分配了任何值的所有对象。

    You can also select Attribute values from the Attributes table. The table opens using the sign on the right of the Attribute expression.您还可以从 Attributes 表中选择属性值。该表使用属性表达式右侧的 符号打开。

    Double-clicking on a value in the table adds it to the Attribute value field.双击表中的值将其添加到属性值字段。

  5. To add more Attributes, use the Plus button. You can add as many Attributes for one Filter as necessary. It is possible to set AND and OR relations between Attributes in the Filter.要添加更多属性,请使用“+” (加号)按钮。您可以根据需要为一个过滤器添加任意数量的属性。 可以在过滤器中的属性之间设置 ANDOR 交互。

    To remove a Filter, use the button to the right of the Attribute expression.要移除过滤器,请使用属性表达式右侧的 按钮。

3. Specifying Parameters of Buildings3. 指定建筑物的参数#

In this step, we will set the parameters for buildings to be generated on the terrain according to the filtered data.在这一步中,我们将根据过滤后的数据为地形上生成的建筑设置参数。

  1. On the Sources panel, click + Add Object.Sources 面板上,单击 + Add Object.

  2. In the drop-down, select the type of object you want to generate according to the slot data. In our case, it is Buildings. Click Import.在下拉列表中,根据槽数据选择要生成的对象类型。在我们的例子中,是 Buildings。单击 Import

Set the following object parameters:设置以下对象参数:

Slot

A slot that you created to organize data using Filters.由您创建的用于组织数据过过滤器的槽。

Enabled 当打开时,将生成这种类型的对象。关闭时,这种类型的对象不会生成,也不存在于包含生成的地形的世界中。
Floor Number Name

The name of the column where the number of floors is specified, in the source data Attributes table.Attributes 表中指定楼层数的列的名称。

Floor Height (m) 生成的建筑物中楼层的高度。默认值为 3 米。
Ground Floor Offset (m) 底座的高度。默认值为 1 仪表。
Split Length (km)

The size of the grid cell by which the generated geometry will be divided. The geometry of each cell is represented as a separate ObjectMeshStatic object. If the specified value exceeds or equals the size of the Export Area, a single Static Mesh will be generated.生成的几何体将被划分的网格单元的大小。每个单元格的几何图形表示为一个单独的 ObjectMeshStatic 对象。如果指定的值超过或等于 Export Area 的大小,则会生成单个 Static Mesh

For example, if you specify 100 and have a 1000x1000 km area, the buildings will be generated as 10 separate Static Mesh objects, 100x100 km each.例如,如果您指定 100 并具有 1000x1000 公里的区域,则建筑物将生成为 10 个单独的 Static Mesh 对象,每个对象 100x100 公里。

Floors Per Texture

应用单个纹理的 Upper Floors 数量:

  • 如果纹理高度对应于单个楼层的高度,则该值应保持为 1。纹理将应用于每个楼层。
  • 如果纹理高度对应二/三/等的高度。楼层,此值应设置为 2/3/etc。纹理将应用于每两个/三个/等。地板。
  • 如果纹理高度等于 Upper Floors 部分的高度,则该值应等于 Upper Floors 的数量。
Base Material 应用于标记到基本对象的建筑物的材料。建筑物的默认材料已经设置。如果要将其更改为自定义材料,请确保材料是正确命名.
Min Visibility Minimum visibility distance from the camera at which generated objects (ObjectMeshStatic) start to appear on the screen. By default, this value is -inf.生成的对象 (ObjectMeshStatic) 开始出现在屏幕上时距相机的最小可见距离。默认情况下,此值为 -inf
Max Visibility Maximum visibility distance at which generated objects (ObjectMeshStatic) are no longer fully visible: they can either disappear entirely or start to fade out. By default, this value is inf.生成的对象 (ObjectMeshStatic) 不再完全可见的最大可见距离:它们可以完全消失或开始淡出。默认情况下,此值为 inf
Min Fade Minimum fade distance, over which generated objects (ObjectMeshStatic) fade in until they are entirely visible. Along this distance, the engine automatically interpolates the level of detail from Alpha of 0.0 (entirely invisible) to 1.0 (entirely visible). Fading-in starts when the camera has reached the minimum visibility distance and is in the full visibility range.最小淡入距离,生成的对象 (ObjectMeshStatic) 在该距离内淡入直至完全可见。沿着这个距离,引擎会自动将细节级别从 0.0(完全不可见)的 alpha 插入到 1.0(完全可见)。当相机到达时开始淡入最小能见距离并且在全能见度范围内。
Max Fade Maximum fade distance, over which generated objects (ObjectMeshStatic) fade out until they are entirely invisible. Fading-out starts when the camera has reached the maximum visibility distance and is out of the full visibility range.最大淡出距离,生成的对象 (ObjectMeshStatic) 在该距离内淡出,直到它们完全不可见。当相机到达时开始淡出最大可见距离并且超出了完整的能见度范围。

4. Generating Buildings4. 生成建筑物#

Now you need to configure the output settings and generate (or regenerate) the terrain that contains these buildings by clicking the Generate button.现在你需要配置输出设置产生(或者再生) 通过单击 Generate 按钮包含这些建筑物的地形。

Generated buildings生成的建筑物
最新更新: 2021-09-30
Build: ()