This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Professional (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Landscape Tool
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World Nodes
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Materials and Shaders
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
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Сэмплы материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

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

Внимание
Функционал, описанный в этой статье, недоступен в 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, она должна отображать Pedestal и Underground Pedestal.
  • Для Underground Pedestal и Pedestal применяется одна текстура стены. Высота текстуры должна соответствовать высоте всех этих частей (в сумме).

    Текстура для Underground Pedestal и Pedestal (Basement)
  • Для Ground Floor применяется индивидуальная текстура. Высота текстуры должна соответствовать высоте Ground Floor.

    Текстура с отверстиями для Ground Floor
    Сплошная текстура для Ground Floor
  • Для Upper Floors применяется единая текстура стены с проемами. Высота текстуры обычно кратна Floor Height. Она может быть кратным двум, трем и т.д. Floor Height, однако она не должен превышать высоту части Upper Floors.

    Текстура с проемами для Upper Floors
    Сплошная текстура для Upper Floors
  • Если ширина стены меньше Floor Height, сегмент текстуры с проемами не помещается в это пространство должным образом, и применяется текстура для глухой стены.
  • Если ширина стены больше Floor Height, поверхность стены разделяется на две части:

    • Первая часть выложена фактурой с проемами. Его ширина кратна Floor Height.
    • Вторая часть, где фактура с отверстиями не входит, облицована сплошной текстурой.

    Например, у нас есть двухэтажное здание с Floor Height 3 метров. Надстройка стены второго этажа имеет ширину 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 стен без окон и дверей.
    • _roof - материал для Roof.

Например, если у вас есть 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 определите тип источника данных будут использоваться: 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 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.Filter - это набор правил, используемых для выбора конкретных данных из списка всех доступных векторных данных. Правила создаются с использованием атрибутов (Attributes). На основе этого фильтра создаются только те объекты, которые соответствуют требованиям каждого атрибута.

Filters are created as follows:Фильтры создаются следующим образом:

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

    Double-click on the Filter to specify its name. To remove a Filter, 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.Доступные операторы: =, !=, >, <, 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. Таблица открывается значком справа от выражения атрибута.

    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.Чтобы добавить дополнительные атрибуты, используйте кнопку «+» (плюс). Вы можете добавить столько атрибутов для одного фильтра, сколько необходимо. Можно установить отношения AND и OR между атрибутами фильтра.

    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. Текстура будет применена для каждого этажа.
  • Если высота текстуры соответствует высоте два / три / и.т.д. floor, это значение должно быть установлено на 2/3/и.т.д.. Текстура будет применяться через каждые два / три и т.д. этажи.
  • Если высота текстуры равна высоте части 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 (полностью невидимый) до 1.0 (полностью видимый). Появление начинается, когда камера достигаетMin Visibility и находится в диапазоне полной видимости.
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) исчезают, пока не станут полностью невидимыми. Исчезновение начинается, когда камера достигает Max Visibility и находится за пределами диапазона полной видимости.

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