Создание ассета на основе геометрии в UE
По умолчанию в Houdini Inputs выбран Geometry Input. Это значит, что никакая геометрия из анрила не отправляется в гудини. Все генерируется непосредственно в гудини.

Geometry Input
Для примера был собран сетап забора с возможностью менять его длину. Для его работы достаточно просто перетащить HDA drag&drop'ом во viewport. Геометрия перенесется из гудини

Импорт ассета
Но если стоит задача сгенерировать что-то на основе геометрии ассетов из анрила, нужно сменить на World Input. Затем нажать кнопку Start Selection и выбрать ассет в сцене, меш которого будет отправлен в гудини.

World input
Изменив логику сетапа в houdini и настройки инпута, теперь можно генерировать забор на любом ассете в сцене UE
World input asset
При этом в гудини уже не задается никакой геометрии. Она передается в input subnet'а
Как выглядит ассет в houdini
Создание ассета на основе кривых в UE
Но в случае с забором удобнее было бы строить его по собственной кривой. Такая возможность также имеется
Ассет на основе кривой
В данном случае необходимо выбрать Curve Input. Тогда во вьюпорте появится spline и эта же кривая будет отправляться в сессию Houdini на вход HDA. Чтобы редактировать сплайн в unreal нужно выбрать точку с ЛКМ. Далее появится пивот для ее перемещения. Если нужно продлить сплайн, нужно потянуть за точку с зажатым alt
Curve Input
Еще один сценарий, когда нужно перенести в unreal конкретную кривую, по которой все строится и дальше ее редактировать. Для этого нужно зайти в Type Properties ассета и во вкладке Node/editable Nodes указать название ноды/нод с кривой
Перенос кривой в Unreal
В таком случае кривая сразу появится при переносе HDA во вьюпорт unreal и не нужно вручную выбирать тип инпута
Оптимизация ассетов для игрового движка
В предыдущих примерах в движок передавалась геометрия целиком. Но это очень расточительный подход, поскольку забор состоит из одних и тех же повторяющихся элементов, которые нагружают память. Решение в том, чтобы запаковать повторяющийся кусок забора, а затем копировать этот запакованный элемент. Таким образом в память будет загружаться только одна часть забора и при ее копировании движок будет ссылаться на нее же, а не загружать целый забор. Такие запакованные куски называют instance.
Ассет с инстансированием
Сначала нужно экспортировать геометрию из houdini в UE. Стоит учитывать, что единицы измерения в этих программах отличаются и перед экспортом необходимо увеличить модели в 100 раз относительно 0 координат
Импорт геометрии
Для назначения инстансов используется атрибут unreal_instance на точках. На него нужно назначить путь к геометрии в UE.
Путь можно найти, нажав ПКМ по ассету и выбрав Copy Reference
Копирование пути к геометрии
Назначить путь на точки можно либо вручную:
s@unreal_instance = "/Script/Engine.StaticMesh'/Game/HDAs/Fence/fence_geo/vert.vert'";
Либо вручную ссылаться лишь на путь, а имя назначать атрибутом name, который назначен и на точки, и на геометрию, экспортированную в UE. Если ассетов много, процедурный нейминг значительно сэкономит время
Назначение инстансов
Таже можно вывести параметры с путями в ассет, чтобы была возможность назначать инстансы динамически в анриле:
Выведение параметра пути в ассет




