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

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

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

Начинать нужно с модулей. На каждую модель нужно назначить атрибуты габаритов, имен и т. д. для работы ассета. Сделать это можно подключив геометрию модуля в первый инпут и выбрав первый режим Building Module. Тогда во вьюпорте появится оранжевый примитив, указывающий в какую сторону должен смотреть модуль.
Важно, чтобы левый нижний передний угол находился ровно в нуле координат.
В параметрах ноды можно назвать модуль и включить Auto Fill Dimensions для автоматического определения габаритов
Также есть возможность указать вес, приоритет и назначить «вариант» модуля в случае необходимости рандомизировать модули
После модулей надо сформировать этажи. Для этого ту же ноду нужно переключить на второй режим работы floor decription. Во вход можно подать ей любую геометрию, главное, чтобы она назначила свои атрибуты на гео. Далее можно объединить ее с геометрией модулей.
В параметр floor name нужно задать имя этажа. В expanded form паттерн из имен модулей для обозначения того, в каком порядке они будут следовать на фасадах.
К примеру, на этаже есть два варианта модулей (A и В). Если нужно, чтобы весь этаж заполнился только стеной A нужно использовать кавычки:
<А>
Если нужно чередовать A и B, тогда:
<А-В>
Если нужно, чтобы модули A повторялись лишь раз по краям фасада, а модуль B заполнял все в середине:
[A]<В>[A]
Если нужно, чтобы модули A повторялись три раза в середине фасада:
<В>[A]3<В>
С помощью второй ноды можно собирать дома. В первый вход принимается прокси-геометрия, во второй подготовленные модули, с помощью третьего и четвертого можно перезаписывать назначение этажей и модулей
Здесь по тому же принципу задается паттерн для этажей
Во вкладке settings нужно включить Pack and Instance Geometry и Get Instances From Patterns. На выходе будет запакованная геометрия и нужные атрибуты на точках
Из первого аутпута выходит запакованная геометрия. Из второго облако точек, на которые будет инстансироваться геометрия модулей. Из третьего выходит геометрия полов
Далее с точками можно делать, что угодно. Вот пример кода, который копирует модуль B на основе модулей A, вращает и сдвигает их. Таким подходом удобно навешивать на дом антены, кондеционеры, задавать рандомизацию.
После генерации фасадов, можно наполнять ассет детализацией, используя весь потенциал гудини. В этом примере смоделировано несколько вариантов окон, балконов, модулей для первого и последнего этажей. Все они расставлены с помощью Buildings Tool, а потом полученные на выходе точки были отредактированы для рандомизации моделей балконов с окнами. Также на основе этих точек были расставлены антены и сточные трубы
Для переноса HDA в UE все модели были пропущены в цикле по их именам. В каждой итерации код на python нажимал на кнопку экспорта в ноде fbx_rop
Код python:
hou.parm("../rop_fbx1/execute").pressButton()
В итоге в UE были импортированы модели с тем же неймингом, что и в гудини. Подобный подход сильно экономит время, так как автоматизирует пакетную обработку моделей. В случае каких-то правок, достаточно просто перезапустить цикл, вместо ручного переписывания параметров экспорта для каждой модели и неоднократного нажатия на кнопку экспорта.
Далее был назначен атрибут s@unreal_instance для UE. Чтобы сохранить процедурность путь был взят только до корневой папки с ассетами, конец пути дописывался на основе атрибута s@name каждой модели.
создание ассета для генерации стилизованной обрисовки геометрии на примере анимационной сцены из ВКР
В качестве R& D в разработке находится ассет для генерации стилизованных мазков кистью на геометрии.
Если разбить подход на этапы, это будет звучать так:
⦁ Нормализация UV-шеллов меша по world scale ⦁ Перенос меша в UVs world position ⦁ Генерация hair groom ⦁ Перенос грума в исходные UV ⦁ Создание плашек на основе кривых грума ⦁ Ортогональное проецирование UV на карточки ⦁ Выпрямление плашек, помещение их в нуль координат и нормализация ориентации ⦁ Случайное копирование плашек в координаты подготовленных полигонов с текстурой мазков ⦁ Проецирование второго UV-сета с мазками ⦁ Перенос плашек на исходную геометрию ⦁ Создание HDA ⦁ Написание шейдера в анрил ⦁ Настройка UI