This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Landscape Tool
Использование инструментов редактора для конкретных задач
Extending Editor Functionality
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World Nodes
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL
Плагины
File Formats
Rebuilding the Engine Tools
GUI
Двойная точность координат
API
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
Работа с контентом
Оптимизация контента
Материалы
Art Samples
Tutorials

Генерация зданий

Внимание
Функционал, описанный в этой статье, недоступен в Community редакции SDK.
Чтобы использовать этот функционал вам необходимо получить лицензию на Engineering / Sim SDK.

Sandworm allows procedural generation of buildings based on shapes stored in the vector data sources. This article reviews the general workflow as well as the main concepts of the buildings composition to give a deeper understanding of how the assets should be prepared.Sandworm позволяет процедурно генерировать здания на основе форм, хранящихся в источниках векторных данных. В этой статье рассматривается общий алгоритм , а также основные концепции композиции зданий, чтобы дать более глубокое понимание того, как следует подготовить ассеты.

Main ConceptsОсновные принципы#

For the sake of generation of buildings, we differentiate between the following two types of buildings:При генерации зданий различаются следующие два типа:

  • Single-storey buildings, which have only one floorОдноэтажные дома, имеющие всего один этаж
  • Multi-storey buildings, which have two or more floorsМногоэтажные дома, имеющие два и более этажа.

Conceptual representation of single-storey and multi-storey buildingsКонцептуальное изображение одноэтажных и многоэтажных домов
  • Underground Pedestal is always 2 meters down from the terrain level. This value is hardcoded and cannot be changed.Underground Pedestal всегда на 2 метра ниже уровня местности. Это значение запрограммировано и не может быть изменено.
  • The Pedestal height is defined by the Ground floor offset value and is 1 meter high above terrain by default.Высота Pedestal определяется значением смещения первого этажа и по умолчанию составляет 1 метр над землей.
  • The Ground Floor height is defined by the Floor Height value and is 3 meters high by default.Высота Ground Floor определяется значением Floor Height и по умолчанию составляет 3 метров.
  • The height of Upper Floors equals Number of Upper Floors * Floor height.Высота Upper Floors равна Number of Upper Floors * Floor height.

Buildings TexturingТекстурирование зданий#

UNIGINE provides a set of built-in materials for generated buildings: they are inherited from mesh_base and named according to the rules. You can also create your custom textures and set up materials. However, your textures should meet a set of requirements described below.UNIGINE предоставляет набор встроенных материалов для сгенерированных зданий: они унаследованы от mesh_base и названы в соответствии с правилами . Вы также можете создавать свои собственные текстуры и настраивать материалы. Однако ваши текстуры должны соответствовать ряду требований, описанных ниже.

There are four types of textures that should be prepared for a building: a texture for the basement, a texture for the wall with openings (doors and windows), a texture for the solid wall, and a texture for the roof. The UV map of each part of the building depends on the size of the wall segment that is shown on the texture.Для здания необходимо подготовить четыре типа текстур: текстуру для подвала, текстуру для стены с проемами (двери и окна), текстуру для твердой стены и текстуру для крыши. Карта UV каждого часть здания зависит от размера участка стены, отображаемого на текстуре.

Примечание
Textures for walls differ depending on the part of the building they are applied to: if a texture is applied to Basement, it should depict Pedestal and Underground Pedestal.Текстуры для стен различаются в зависимости от того, к какой части здания они применяются: если текстура применяется к Basement, она должна отображать Pedestal и Underground Pedestal.
  • For Underground Pedestal and Pedestal, a single texture for a wall is applied. The texture height should correspond to the height of all these parts (in sum).Для Underground Pedestal и Pedestal применяется одна текстура стены. Высота текстуры должна соответствовать высоте всех этих частей (в сумме).

    Texture for Underground Pedestal and Pedestal (Basement)Текстура для Underground Pedestal и Pedestal (Basement)
  • For the Ground Floor, an individual texture is applied. The texture height should correspond to the Ground Floor height.Для Ground Floor применяется индивидуальная текстура. Высота текстуры должна соответствовать высоте Ground Floor.

    Texture with openings for Ground FloorТекстура с отверстиями для Ground Floor
    Solid texture for Ground FloorСплошная текстура для Ground Floor
  • For Upper Floors, a single texture for a wall with openings is applied. The texture height is usually a multiple of the Floor Height. It can be a multiple of the two, three, etc. Floor Height, however, it shouldn't exceed the height of the Upper Floors part.Для Upper Floors применяется единая текстура стены с проемами. Высота текстуры обычно кратна Floor Height. Она может быть кратным двум, трем и т.д. Floor Height, однако она не должен превышать высоту части Upper Floors.

    Texture with openings for Upper FloorsТекстура с проемами для Upper Floors
    Solid texture for Upper FloorsСплошная текстура для Upper Floors
  • If the wall width is less than the Floor Height, a segment of the texture with openings does not fit into this space properly, and the texture for a solid wall is applied.Если ширина стены меньше Floor Height, сегмент текстуры с проемами не помещается в это пространство должным образом, и применяется текстура для глухой стены.
  • If the wall width is more than the Floor Height, the wall surface is split into two parts:Если ширина стены больше Floor Height, поверхность стены разделяется на две части:

    • The first part is tiled with a texture with openings. Its width is multiple of the Floor Height.Первая часть выложена фактурой с проемами. Его ширина кратна Floor Height.
    • The second part, where the texture with openings does not fit, is tiled with the solid texture.Вторая часть, где фактура с отверстиями не входит, облицована сплошной текстурой.

    For example, we have a two-storey building with the Floor Height of 3 meters. The sufrace of the second floor wall is 10.5 meters wide and is divided as follows:Например, у нас есть двухэтажное здание с Floor Height 3 метров. Надстройка стены второго этажа имеет ширину 10.5 метра и делится следующим образом:

    The texture for a wall with openings is applied to each 3*3 meters segment (based on the Floor Height value). For the rest of the wall, the solid texture is applied.Текстура стены с проемами применяется к каждому сегменту 3*3 метров (на основе значения Floor Height). На остальную часть стены наносится сплошная текстура.

  • For Roof, two textures should be applied: the base and detail albedo textures. Using the detail texture allows you to diversify colors of roofs with the same material: set up details rendering (blending, masking, UV mapping, shading parameters of the texture) for the Roof material to achieve the required result.Для Roof необходимо применить две текстуры: база а также деталь текстуры альбедо. Использование текстуры детали позволяет разнообразить цвета крыш одним и тем же материалом: настроить рендеринг деталей (смешивание, маскировка, УФ-отображение , параметры затенения текстуры) для Материал крыши для достижения необходимого результата.

    Base albedo textureБазовая текстура альбедо
    Detail albedo textureАльбедо текстура деталей

Materials NamingИменование материалов#

For materials to be correctly applied by Sandworm to the generated buildings, follow these rules:Чтобы Sandworm правильно применил материалы к сгенерированным зданиям, соблюдайте следующие правила:

  • Each building category should have a separate base material inherited from mesh_base. This material is used as the material for the Ground Floor wall with doors and windows.Каждая категория зданий должна иметь отдельный базовый материал, унаследованный от mesh_base. Этот материал использован как материал для стены Ground Floor с дверями и окнами.

    Примечание
    For this material, a texture depicting the Ground Floor should be used. Для этого материала следует использовать текстуру, изображающую Ground Floor.

    The other materials applied to different parts of the same building are inherited from this one. The base material can have any desired name.Другие материалы, примененные к различным частям одного и того же здания, унаследованы от этого. Базовый материал может иметь любое название.

    Примечание
    When specifying parameters of the buildings, only the base material is specified: its child materials are loaded automatically.Когда уточнение параметров зданий , указывается только базовый материал: его дочерние материалы загружаются автоматически.
  • Materials for the other parts of the building should be inherited from the parent material described in the previous paragraph and use the following name postfixes:Материалы для других частей здания должны быть унаследованы от родительского материала, описанного в предыдущем абзаце, и использовать следующие постфиксы имен:

    • _basement — a material for Pedestal and Underground Pedestal._basement - материал для пьедестала и подземного пьедестала.
    • _level_1_blank — a material for Ground Floor wall without doors and windows._level_1_blank - материал для Ground Floor стены без дверей и окон.
    • _level_2_complex — materials for Upper Floors walls with doors and windows._level_2_complex - материалы для Upper Floors стен с дверями и окнами.
    • _level_2_blank — materials for Upper Floors walls without doors and windows._level_2_blank - материалы для Upper Floors стен без окон и дверей.
    • _roof — a material for Roof._roof - материал для Roof.

For example, if you have 2 types of buildings that should have different materials, set up the following hierarchy:Например, если у вас есть 2 типа зданий, которые должны иметь разные материалы, настройте следующую иерархию:

Hierarchy of materials for buildingsИерархия материалов для построек

1. Adding a Vector Data Source1. Добавление источника векторных данных#

Currently, Sandworm allows using only offline vector data source for generation.В настоящее время Sandworm позволяет использовать для генерации только офлайн-источник векторных данных.

  1. In the Source Data panel, add a new vector data layer.На панели Source Data добавьте новый слой векторных данных.

  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 определите тип источника данных будут использоваться: Assets или External 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 is added, its image is displayed atop all the layers in the Preview panel (the order of layers display may be changed), and the Vector layer parameters become available.При добавлении векторных данных их изображение отображается поверх всех слоев в панели предварительного просмотра (порядок отображения слоев может быть изменен), и становятся доступными параметры векторного слоя.

2. Specifying Tags to Filter Buildings2. Указание тегов для фильтрации зданий#

The Tag is in fact a set of rules used to pick the specific data from the list of all available vector data. The rules are created using the Attributes. Only the objects that fit to the requirements of every attribute are generated based on this tag.Tag - это набор правил, используемых для выбора конкретных данных из списка всех доступных векторных данных. Правила создаются с использованием файла Attributes. На основе этого тега создаются только те объекты, которые соответствуют требованиям каждого атрибута.

Generating buildings requires two types of tags:Для создания зданий требуются два типа тегов :

  • The tag that filters out the buildings from the list of vector data — TagТег, отфильтровывающий здания из списка векторных данных - Tag
  • The tag that defines the number of floors and is used for generation purposes — Floor Number Tag. This tag either contains the specific number of floors (not a range), or the value ANY that implies that buildings with any number of floors are generated.Тег, который определяет количество этажей и используется для генерации - Floor Number Tag. Этот тег содержит либо конкретное количество этажей (не диапазон), либо значение ANY, которое означает, что генерируются здания с любым количеством этажей.

Tags are created as follows:Теги создаются следующим образом:

  1. Click the Add button in the Tags window of the Parameters panel.Нажмите кнопку Add в окне Tags панели Parameters.

    Double-click on the tag to specify a tag name. To remove a tag use Remove button.Дважды щелкните по тегу, чтобы указать его имя. Для удаления тега используйте кнопку Remove.

  2. For each tag, set an attribute (or attributes) to filter certain data from the vector source. The required data is filtered using the attribute values and suitable operator. Autocomplete is available. You can type in attribute names and values.Для каждого тега установите атрибут (или атрибуты) для фильтрации определенных данных из источника вектора. Требуемые данные фильтруются с использованием значений атрибутов и подходящего оператора. Доступно автозаполнение. Вы можете ввести имена и значения атрибутов.

  3. The available operators are: =, !=, >, <, ANY. ANY generates all the objects that have any value assigned for the selected attribute.Доступные операторы: =, !=, >, <, ANY. ANY генерирует все объекты, которым присвоено любое значение для выбранного атрибута.

    You can also select attribute values from the Attributes table. The table opens using the sign on the right of the attribute expression.Вы также можете выбрать значения атрибутов из таблицы Attributes. Таблица открывается значком справа от выражения атрибута.

  4. To add more attributes, use the "+" (plus) button. You can add as many attributes for one tag as necessary.Чтобы добавить дополнительные атрибуты, используйте кнопку "+" (плюс). Вы можете добавить столько атрибутов для одного тега, сколько необходимо.

    Примечание
    If several attributes are set, only the data that comply with all the attributes will be selected.Если установлено несколько атрибутов, будут выбраны только данные, соответствующие всем атрибутам.

    To remove a filter, use the button to the right of the attribute expression.Чтобы удалить фильтр, используйте кнопку справа от выражения атрибута.

3. Specifying Parameters of Buildings3. Определение параметров зданий.#

In this step, we are going to set the parameters for buildings that will be generated on the terrain according to the data filtered by the tag.На этом шаге мы собираемся установить параметры для зданий, которые будут сгенерированы на местности в соответствии с данными, отфильтрованными тегом.

In the Objects window, click Add to add the object that will be generated on the terrain based on the vector data specified for it. The dialog window will open. Set Type: Buildings to see these settings:В окне Objects щелкните Add, чтобы добавить объект, который будет сгенерирован на местности на основе указанных для него векторных данных. Откроется диалоговое окно. Установите Type: Buildings, чтобы увидеть эти настройки:

Set the following object parameters:Задайте следующие параметры объекта:

Name The object's name, which is displayed in the Objects list in Sandworm and in World Nodes when the terrain is generated.Имя объекта, которое отображается в списке Objects в Sandworm и в World Nodes при создании ландшафта.
Tag

The tag to filter objects from the vector data.Тег для фильтрации объектов из векторных данных.

Примечание
This tag should include all building-specific data except for the number of floors, which is set separately as the Floor Number Tag.Этот тег должен включать все данные, относящиеся к зданию, за исключением количества этажей, которое устанавливается отдельно как Floor Number Tag.
Type Type of the vector object to be generated. In this case, we are generating Buildings.Тип создаваемого векторного объекта. В данном случае мы генерируем Buildings.
Floor Number Tag

The tag that is used to sort out from the vector source the buildings with the required number of floors. This tag is created with the attribute that specifies the number of floors. Based on the attribute value, the actual number of floors is generated for the building. Here only the following three options are possible:Тег, который используется для выделения из источника вектора зданий с требуемой этажностью. Этот тег создается с атрибутом, указывающим количество этажей. На основе значения атрибута создается фактическое количество этажей здания. Здесь возможны только следующие три варианта :

  • The attribute value of the tag selected here is set to ANY — in this case all buildings filtered by the Tag are created, with the number of floors identified for each building.Значение атрибута выбранного здесь тега установлено на ANY - в этом случае создаются все здания, отфильтрованные по Tag, с указанием количества этажей для каждого здания.
  • The attribute value of the tag selected here is set as equal (=) to one specific number — in this case only the buildings with this specific number of floors out of the data filtered by the Tag are created.Значение атрибута выбранного здесь тега устанавливается равным (=) одному конкретному числу - в этом случае создаются только здания с этим конкретным количеством этажей из данных, отфильтрованных с помощью Tag.

    For example, if the attribute value of the Floor Number Tag is equal to 4, only the 4-storey buildings from the data sorted according to the Tag will be generated.Например, если значение атрибута Floor Number Tag равно 4, будут сгенерированы только 4-этажные здания из данных, отсортированных в соответствии с Tag.

  • The Floor Number Tag value is set to None — all buildings filtered by the Tag will be generated as single-floor buildings.Значение Floor Number Tag установлено в None - все здания, отфильтрованные по Tag, будут сгенерированы как одноэтажные .
Floor Height The height of a floor in the generated buildings. The default value is 3 meters.Высота этажа в генерируемых зданиях. Значение по умолчанию - 3 метра.
Ground Floor Offset The height of pedestal. The default value is 1 meter.Высота цоколя. Значение по умолчанию - 1 метр.
Split Length

The size of the grid cell by which the generated geometry will be divided. Geometry of each cell is represented as a separate ObjectMeshStatic object. If the specified value exceeds or equals to 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

The number of Upper Floors for which a single texture is applied:Число Upper Floors, для которого применяется одна текстура:

  • If the texture height corresponds to the height of a single floor, this value should remain 1. The texture will be applied for each floor.Если высота текстуры соответствует высоте одного этажа, это значение должно оставаться 1. Текстура будет применена для каждого этажа.
  • If the texture height corresponds to the height of two/three/etc. floors, this value should be set to 2/3/etc. The texture will be applied for every two/three/etc. floors.Если высота текстуры соответствует высоте два / три / и.т.д. floor, это значение должно быть установлено на 2/3/и.т.д.. Текстура будет применяться через каждые два / три и т.д. этажи.
  • If the texture height is equal to the height of the Upper Floors part, this value should be equal to the number of Upper Floors.Если высота текстуры равна высоте части Upper Floors, это значение должно быть равно количеству Upper Floors.
Base Material Material applied to the buildings tagged to the basic object. The default material for buildings is already set. If you want to change it to a custom materal, ensure that the materials are named correctly.Материал, применяемый к зданиям, привязанным к базовому объекту. Материал по умолчанию для построек уже установлен. Если вы хотите изменить его на нестандартный материал, убедитесь, что материалы назван правильно .
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 completely 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 completely visible. Along this distance, the engine automatically interpolates the level of detail from alpha of 0.0 (completely invisible) to 1.0 (completely visible). Fading in starts when the camera has reached the minimum visibility distance and is in the full visibility range.Минимальное расстояние проявления, на котором сгенерированные объекты (ObjectMeshStatic) начинают плавно проявляться, пока не станут (полностью видимый). Вдоль этого расстояния движок автоматически интерполирует уровень детализации от альфа 0.0 (полностью невидимый) до 1.0 (полностью видимый). Появление начинается, когда камера достигаетMin Visibility и находится в диапазоне полной видимости.
Max Fade Maximum fade distance, over which generated objects (ObjectMeshStatic) fade out until they are completely invisible. Fading out starts when the camera has reached the maximum visibility distance and is out of the full visibility range.Максимальное расстояние затухания, на котором сгенерированные объекты (ObjectMeshStatic) исчезают, пока не станут полностью невидимыми. Исчезновение начинается, когда камера достигает Max Visibility и находится за пределами диапазона полной видимости.

If you introduce any changes into created objects, click Apply to update them immediately.Если вы вносите какие-либо изменения в созданные объекты, щелкните Apply, чтобы обновить их немедленно.

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Сгенерированные здания
Последнее обновление: 09.07.2021
Build: ()