
создание ассета для генерации зданий с помощью labs building tool
В houdini labs есть набор ассетов для работы с unreal. В том числе Building Generator для генерации модульных сооружений.

Building Generator HDA
Для начала нужно подготовить геометрию. Либо замоделив её, либо найдя на стоках готовый набор по запросу modular building kit

Модули
Для того, чтобы превратить это в полноценные дома, которые потом можно будет инстансировать, понадобится всего две ноды: Labs Building Generator Utility и Labs Building From Patterns
Первая нужна для подготовки модулей и этажей

Labs Building Generator Utility
Начинать нужно с модулей. На каждую модель нужно назначить атрибуты габаритов, имен и т. д. для работы ассета. Сделать это можно подключив геометрию модуля в первый инпут и выбрав первый режим Building Module. Тогда во вьюпорте появится оранжевый примитив, указывающий в какую сторону должен смотреть модуль.
Важно, чтобы левый нижний передний угол находился ровно в нуле координат.
Подготовка геометрии
В параметрах ноды можно назвать модуль и включить Auto Fill Dimensions для автоматического определения габаритов
Также есть возможность указать вес, приоритет и назначить «вариант» модуля в случае необходимости рандомизировать модули
Параметры ноды
После модулей надо сформировать этажи. Для этого ту же ноду нужно переключить на второй режим работы floor decription. Во вход можно подать ей любую геометрию, главное, чтобы она назначила свои атрибуты на гео. Далее можно объединить ее с геометрией модулей.
Геометрия модулей
В параметр floor name нужно задать имя этажа. В expanded form паттерн из имен модулей для обозначения того, в каком порядке они будут следовать на фасадах.
К примеру, на этаже есть два варианта модулей (A и В). Если нужно, чтобы весь этаж заполнился только стеной A нужно использовать кавычки:
<А>
Если нужно чередовать A и B, тогда:
<А-В>
Если нужно, чтобы модули A повторялись лишь раз по краям фасада, а модуль B заполнял все в середине:
[A]<В>[A]
Если нужно, чтобы модули A повторялись три раза в середине фасада:
<В>[A]3<В>
Floor description
С помощью второй ноды можно собирать дома. В первый вход принимается прокси-геометрия, во второй подготовленные модули, с помощью третьего и четвертого можно перезаписывать назначение этажей и модулей
Building generator
Здесь по тому же принципу задается паттерн для этажей
Паттерн этажей
Во вкладке settings нужно включить Pack and Instance Geometry и Get Instances From Patterns. На выходе будет запакованная геометрия и нужные атрибуты на точках
Настройка Labs building from pattern geometry
Из первого аутпута выходит запакованная геометрия. Из второго облако точек, на которые будет инстансироваться геометрия модулей. Из третьего выходит геометрия полов
Облако точек
Далее с точками можно делать, что угодно. Вот пример кода, который копирует модуль B на основе модулей A, вращает и сдвигает их. Таким подходом удобно навешивать на дом антены, кондеционеры, задавать рандомизацию.
Создание новых инстансов на основе старых
После генерации фасадов, можно наполнять ассет детализацией, используя весь потенциал гудини. В этом примере смоделировано несколько вариантов окон, балконов, модулей для первого и последнего этажей. Все они расставлены с помощью Buildings Tool, а потом полученные на выходе точки были отредактированы для рандомизации моделей балконов с окнами. Также на основе этих точек были расставлены антены и сточные трубы
Детализация дома
Для переноса HDA в UE все модели были пропущены в цикле по их именам. В каждой итерации код на python нажимал на кнопку экспорта в ноде fbx_rop
Код python:
hou.parm("../rop_fbx1/execute").pressButton()
Пакетный экспорт моделей
В итоге в UE были импортированы модели с тем же неймингом, что и в гудини. Подобный подход сильно экономит время, так как автоматизирует пакетную обработку моделей. В случае каких-то правок, достаточно просто перезапустить цикл, вместо ручного переписывания параметров экспорта для каждой модели и неоднократного нажатия на кнопку экспорта.
Импорт моделей в UE
Далее был назначен атрибут s@unreal_instance для UE. Чтобы сохранить процедурность путь был взят только до корневой папки с ассетами, конец пути дописывался на основе атрибута s@name каждой модели.
Назначение unreal_instance
план создания ассета для генерации стилизованной обрисовки геометрии на примере анимационной сцены из ВКР
HDA для генерации мазков кисти на геометрии
В качестве R& D в разработке находится ассет для генерации стилизованных мазков кистью на геометрии.
HDA для генерации мазков кисти на геометрии
Если разбить подход на этапы, это будет звучать так:
⦁ Нормализация UV-шеллов меша по world scale ⦁ Перенос меша в UVs world position ⦁ Генерация hair groom ⦁ Перенос грума в исходные UV ⦁ Создание плашек на основе кривых грума ⦁ Ортогональное проецирование UV на карточки ⦁ Выпрямление плашек, помещение их в нуль координат и нормализация ориентации ⦁ Случайное копирование плашек в координаты подготовленных полигонов с текстурой мазков ⦁ Проецирование второго UV-сета с мазками ⦁ Перенос плашек на исходную геометрию ⦁ Создание HDA ⦁ Написание шейдера в анрил ⦁ Настройка UI
SideFX Houdini User Documentation 2020 // URL: https://www.sidefx.com/docs/houdini/unreal/attributes.html (дата обращения: 01.11.2025)
1. SideFX Houdini User Documentation 2020 // URL: https://www.sidefx.com/docs/houdini/unreal/install_houdiniengine.html (дата обращения: 01.11.2025)
Unreal Engine Using PCG Generation Modes || URL: https://dev.epicgames.com/community/api/documentation/image/445bfaae-f93b-48b2-950b-f247adae4705?resizing_type=fit&width=1400&height=730 (дата обращения: 01.11.2025)