создание ассета для генерации зданий с помощью 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 были импортированы модели с тем же неймингом, что и в гудини. Подобный подход сильно экономит время, так как автоматизирует пакетную обработку моделей. В случае каких-то правок, достаточно просто перезапустить цикл, вместо ручного переписывания параметров экспорта для каждой модели и неоднократного нажатия на кнопку экспорта.




