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

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

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

Изменив логику сетапа в houdini и настройки инпута, теперь можно генерировать забор на любом ассете в сцене UE
При этом в гудини уже не задается никакой геометрии. Она передается в input subnet’а
Создание ассета на основе кривых в UE
Но в случае с забором удобнее было бы строить его по собственной кривой. Такая возможность также имеется
Ассет на основе кривой
В данном случае необходимо выбрать Curve Input. Тогда во вьюпорте появится spline и эта же кривая будет отправляться в сессию Houdini на вход HDA. Чтобы редактировать сплайн в unreal нужно выбрать точку с ЛКМ. Далее появится пивот для ее перемещения. Если нужно продлить сплайн, нужно потянуть за точку с зажатым alt
Еще один сценарий, когда нужно перенести в 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. Если ассетов много, процедурный нейминг значительно сэкономит время
Таже можно вывести параметры с путями в ассет, чтобы была возможность назначать инстансы динамически в анриле:
Теперь вместо балок можно указать путь к любому другому ассету в сцене не выходя из unreal
Замена инстансов
UE может разбить инстансы по разным компонентам с помощью атрибута s@unreal_split_instances
s@unreal_split_instances = "type_grass";
s@unreal_split_instances = "type_rocks";
Все атрибуты, читаемые анрилом можно посмотреть в официальной документации: https://www.sidefx.com/docs/houdini/unreal/attributes.html
Ориентирование и трансформация инстансов
В гудини есть ряд атрибутов для масштабирования и ориентации инстансов. Эти атрибуты назначаются на точки, а после применяются к геометрии, скопированной на них.
Масштабирование f@pscale — для пропорционального скейла; v@scale — для непропорционального скейла;
Ориентирование Векторные атрибуты: v@N — повернет объект той стороной, какой он направлен в положительную ось Z; v@up — для положительной оси Y;
Четырехкомпонентный вектор (кватернион): p@orient — обычно кватернионы используют во избежание так называемого gimbal lock (состояние при котором потеряна одна степень свободы вращения), когда требуется дополнительная ось вращения. С инстансингом они также выручают, поскольку задают ориентацию одним атрибутом, а не (up и N), что компактнее в записи
В этом примере для наглядности отображено ориентирование геометрии атрибутами N и up, но само вращение этих векторов осуществлено с помощью кватерниона, вращающего вектор нормали в позицию точки со второго входа node wrangle
Таким образом инстансы можно процедурно вращать на конкретные или случайные градусы вокруг локальных осей каждой точки
В этом примере была построена матрица трансформации из вектора нормалей, направленного вдоль забора и вектора up, смотрящего вверх. Затем к матрице применяется вращение на значение канала angle по оси вектора up. После вращения матрица конвертируется в кватернион и записывается в атрибут orient.
Трансформация v@P — здесь единственный атрибут и этого достаточно.
После всех поворотов можно смещать инстансы по тем же осям. В этом примере происходит смещение по векторам N, up и перпендикулярному им вектору out.
Для смещения необходимо прибавить к вектору позиции тот вектор, по которому нужно сместить инстанс и добавить множитель
Динамическое подключение материалов
По умолчанию, при попытке назначить материал на ассет drag& drop’ом, как делается это обычно, и после любого изменения каких-либо параметров, материал пропадет, поскольку путь к временной геометрии изменится. Чтобы избежать таких неудобств, есть ряд атрибутов, считываемых unreal’ом с геометрии ассета для назначения материалов
Сбрасывание материала при обновлении ассета
Назначение материалов по атрибуту unreal_material
В Houdini существует возможность указать путь к материалу, созданному в Unreal Engine, что позволяет Houdini Engine автоматически применять указанный материал в процессе импорта ассета.
На ноде, где есть геометрия (обычно Attribute Create, Wrangle, Labs Unreal Material), нужно создать строковый атрибут:
Имя: unreal_material Тип: String (Detail / Primitive / Point)
Labs unreal material node
В значение нужно указать путь к материалу в Unreal. Чтобы скопировать путь, можно нажать ПКМ по ассету в content browser и выбрать Copy Reference
Динамическое назначение материала
По той же логике, что и с инстансами параметры с путями можно вывести в HDA, чтобы иметь возможность переназначить материал в unreal
Автоматическое создание Material Instances в Unreal
Houdini Engine также может создавать Material Instance, менять параметры в MI и применять их к геометрии.
В анриле необходимо создать материал M_Master с нужными параметрами. К примеру roughness, basecolor, metalic.
В HDA надо назначить строковый атрибут unreal_instance для того, чтоб указать путь к мастер-материалу. и unreal_material_parameter_* для редактирования параметров MI_Master
SideFX Houdini User Documentation 2020 // URL: https://www.sidefx.com/docs/houdini/unreal/attributes.html (дата обращения: 01.11.2025)
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)