4. Практическая часть
Данный проект является учебной работой студента Школы дизайна или исследовательской работой преподавателя Школы дизайна. Данный проект не является коммерческим и служит образовательным целям

создание ассета для генерации зданий с помощью labs building tool

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

big
Исходный размер 1934x823

Building Generator HDA

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

big
Исходный размер 1544x521

Модули

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

Первая нужна для подготовки модулей и этажей

big
Исходный размер 812x178

Labs Building Generator Utility

Начинать нужно с модулей. На каждую модель нужно назначить атрибуты габаритов, имен и т. д. для работы ассета. Сделать это можно подключив геометрию модуля в первый инпут и выбрав первый режим Building Module. Тогда во вьюпорте появится оранжевый примитив, указывающий в какую сторону должен смотреть модуль.

Важно, чтобы левый нижний передний угол находился ровно в нуле координат.

Исходный размер 2560x1106

Подготовка геометрии

В параметрах ноды можно назвать модуль и включить Auto Fill Dimensions для автоматического определения габаритов

Также есть возможность указать вес, приоритет и назначить «вариант» модуля в случае необходимости рандомизировать модули

Исходный размер 1019x240

Параметры ноды

После модулей надо сформировать этажи. Для этого ту же ноду нужно переключить на второй режим работы floor decription. Во вход можно подать ей любую геометрию, главное, чтобы она назначила свои атрибуты на гео. Далее можно объединить ее с геометрией модулей.

Исходный размер 2560x1257

Геометрия модулей

В параметр floor name нужно задать имя этажа. В expanded form паттерн из имен модулей для обозначения того, в каком порядке они будут следовать на фасадах.
К примеру, на этаже есть два варианта модулей (A и В). Если нужно, чтобы весь этаж заполнился только стеной A нужно использовать кавычки: <А>
Если нужно чередовать A и B, тогда: <А-В>
Если нужно, чтобы модули A повторялись лишь раз по краям фасада, а модуль B заполнял все в середине: [A]<В>[A]
Если нужно, чтобы модули A повторялись три раза в середине фасада: <В>[A]3<В>

Исходный размер 1035x282

Floor description

С помощью второй ноды можно собирать дома. В первый вход принимается прокси-геометрия, во второй подготовленные модули, с помощью третьего и четвертого можно перезаписывать назначение этажей и модулей

Исходный размер 910x209

Building generator

Здесь по тому же принципу задается паттерн для этажей

Исходный размер 2560x1259

Паттерн этажей

Во вкладке settings нужно включить Pack and Instance Geometry и Get Instances From Patterns. На выходе будет запакованная геометрия и нужные атрибуты на точках

Исходный размер 1040x474

Настройка Labs building from pattern geometry

Из первого аутпута выходит запакованная геометрия. Из второго облако точек, на которые будет инстансироваться геометрия модулей. Из третьего выходит геометрия полов

Исходный размер 2560x1252

Облако точек

Далее с точками можно делать, что угодно. Вот пример кода, который копирует модуль B на основе модулей A, вращает и сдвигает их. Таким подходом удобно навешивать на дом антены, кондеционеры, задавать рандомизацию.

Исходный размер 800x450

Создание новых инстансов на основе старых

После генерации фасадов, можно наполнять ассет детализацией, используя весь потенциал гудини. В этом примере смоделировано несколько вариантов окон, балконов, модулей для первого и последнего этажей. Все они расставлены с помощью Buildings Tool, а потом полученные на выходе точки были отредактированы для рандомизации моделей балконов с окнами. Также на основе этих точек были расставлены антены и сточные трубы

Исходный размер 2560x1238

Детализация дома

Для переноса HDA в UE все модели были пропущены в цикле по их именам. В каждой итерации код на python нажимал на кнопку экспорта в ноде fbx_rop

Код python: hou.parm("../rop_fbx1/execute").pressButton()

Исходный размер 2560x1238

Пакетный экспорт моделей

В итоге в UE были импортированы модели с тем же неймингом, что и в гудини. Подобный подход сильно экономит время, так как автоматизирует пакетную обработку моделей. В случае каких-то правок, достаточно просто перезапустить цикл, вместо ручного переписывания параметров экспорта для каждой модели и неоднократного нажатия на кнопку экспорта.

Исходный размер 1773x260

Импорт моделей в UE

Далее был назначен атрибут s@unreal_instance для UE. Чтобы сохранить процедурность путь был взят только до корневой папки с ассетами, конец пути дописывался на основе атрибута s@name каждой модели.

Исходный размер 2541x394

Назначение unreal_instance

план создания ассета для генерации стилизованной обрисовки геометрии на примере анимационной сцены из ВКР

Исходный размер 1195x440

HDA для генерации мазков кисти на геометрии

В качестве R&D в разработке находится ассет для генерации стилизованных мазков кистью на геометрии.

Исходный размер 1639x404

HDA для генерации мазков кисти на геометрии

Если разбить подход на этапы, это будет звучать так:

⦁ Нормализация UV-шеллов меша по world scale ⦁ Перенос меша в UVs world position ⦁ Генерация hair groom ⦁ Перенос грума в исходные UV ⦁ Создание плашек на основе кривых грума ⦁ Ортогональное проецирование UV на карточки ⦁ Выпрямление плашек, помещение их в нуль координат и нормализация ориентации ⦁ Случайное копирование плашек в координаты подготовленных полигонов с текстурой мазков ⦁ Проецирование второго UV-сета с мазками ⦁ Перенос плашек на исходную геометрию ⦁ Создание HDA ⦁ Написание шейдера в анрил ⦁ Настройка UI

Библиография
1.

SideFX Houdini User Documentation 2020 // URL: https://www.sidefx.com/docs/houdini/unreal/attributes.html (дата обращения: 01.11.2025)

2.

1. SideFX Houdini User Documentation 2020 // URL: https://www.sidefx.com/docs/houdini/unreal/install_houdiniengine.html (дата обращения: 01.11.2025)

Источники изображений
1.

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)

Глава:
1
2
3
4
5
Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную...
Показать больше