Коротко
- Heightfield хранит высоту в двумерной сетке, а слои позволяют редактировать отдельные элементы рельефа независимо друг от друга.
- Mask by Feature выбирает области по уклону, высоте, кривизне, направлению и окклюзии.
- HeightField Scatter создаёт точки в областях, заданных маской, ориентируясь на покрытие, плотность или общее количество точек.
- Согласно документации, Heightfield Mask by Feature доступен начиная с Houdini 16.0, а HeightField Scatter — начиная с 17.0.
В официальной документации Houdini рабочий процесс создания рельефа начинается с базового heightfield, который затем детализируют с помощью масок и scatter. Такой подход помогает отдельно настраивать топографию, зоны озеленения и распределение объектов в архитектурном окружении. В документации указано, что узел Heightfield Mask by Feature доступен начиная с Houdini 16.0, а HeightField Scatter — с 17.0. Далее описаны функции узлов согласно документации.
1. Создайте базовый heightfield
Откройте меню Tab на уровне
objв Houdini и создайтеGeometry OBJ. Перейдите внутрь, чтобы работать в сети SOP.Добавьте
HeightField SOP. Этот узел создаёт плоскую основу рельефа, центрированную в начале координат сцены и расположенную в плоскости XZ.Задайте масштаб с помощью
Size, а разрешение — черезGrid Spacing. В документации размер по умолчанию составляет 1000 на 1000 метров. Стандартный шаг сетки 2 метра создаёт 500 на 500 ячеек. Более мелкий шаг может дать больше деталей, однако документация говорит лишь о том, что этот параметр задаёт разрешение рельефа, и не приводит конкретных данных о влиянии на производительность.Добавьте
HeightField Noise SOPи подключите heightfield к его первому входу. ПараметрAmplitudeзадаёт масштаб изменения высоты, аElement Size— размер узора шума. Малое значениеElement Sizeдаёт более частые и острые детали, большое — более гладкую поверхность. МеняйтеRoughnessнебольшими шагами: документация рекомендует шаги по 0,05 и отмечает, что этот параметр чувствителен.
Heightfield работает не как обычная полигональная сетка: высота хранится в двумерной сетке. Благодаря слоям основную форму рельефа и добавленные позднее элементы можно редактировать независимо, временно скрывать или добавлять новые слои. Основной слой обычно называется height, а слой маски — mask.
2. Задайте области рельефа с помощью масок
Чтобы эффект применялся только к определённым областям, создайте маску. В официальном общем руководстве в качестве примера предлагается поместить узел
HeightField Mask Noise SOPмеждуHeightField SOPиHeightField Noise SOP. Подключите выход узла маски ко второму входу noise-узла. Красным цветом на маске обозначены области, на которые будет воздействовать шум.Для работы с более осмысленными критериями рельефа используйте
HeightField Mask by Feature. В этом узле можно по отдельности включить критерии уклона, высоты, кривизны, направления и окклюзии. Например, выбор областей с уклоном выше заданного значения или в определённом диапазоне высот позволяет определить, какие части поверхности будут участвовать в обработке. Если включено несколько критериев, результат представляет собой пересечение масок критериев.При объединении маски с существующей выберите режим
Combine with Existingв зависимости от задачи.Replaceзаменяет старую маску новой; режимыAdd,Subtract,Multiply,MaximumиMinimumобъединяют значения разными способами. В режимеBlendзначение 0 сохраняет старую маску, 1 использует новую, а 0,5 смешивает их поровну. Учтите: если ни один критерий не включён, узел заполнит маску значением 1.
3. Преобразуйте маску в распределение с помощью scatter
В узле
HeightField Scatterукажите в полеMask Layerимя нужной маски. Выберите метод распределения:Coverageзадаёт, какую долю области маски покроют точки;Density— количество точек на квадратный метр;Total Point Count— точное общее количество создаваемых точек.Чтобы уменьшить кластеризацию точек, можно включить
Relax Points. УвеличениеIterationsможет сделать распределение равномернее, но замедлить процесс; кроме того, после достижения достаточной равномерности дополнительные итерации могут не дать заметной пользы.Max Pointsслужит ограничением безопасности, а не гарантией конкретного количества точек. Если нужно точное число, выберите методTotal Point Count.Геометрию, которую нужно разместить на рельефе, можно подключить к третьему входу; при включённом параметре
Instance on New Pointsузел разместит её в созданных точках. Для ориентации доступны варианты, позволяющие выравнивать точки по нормалям рельефа или поворачивать их в соответствии с уклоном. Чтобы сохранить одинаковое случайное распределение, оставьте значениеGlobal Seedнеизменным: согласно документации, один и тот же seed даёт тот же результат scatter.
| Параметр | Рекомендуемое значение | Эффект |
|---|---|---|
Size узла HeightField | По умолчанию в документации: 1000 × 1000 м | Задаёт общий размер основы рельефа. |
Grid Spacing | Стандартное значение в документации: 2 м | Создаёт 500 × 500 ячеек; задаёт разрешение. |
Изменение Roughness | Небольшими шагами по 0,05 | Помогает контролируемо менять детализацию шума. |
Blend маски | 0,5 | Смешивает старую и новую маски в равных пропорциях. |
Это значения по умолчанию или примеры из документации; их не следует считать итоговыми настройками, рекомендованными для любого проекта.
Как это влияет на рабочий процесс архитектурной визуализации
Этот метод полезен архитекторам, дизайнерам интерьеров и специалистам по archviz, которым нужно создавать рельеф не как единую поверхность, а как набор управляемых областей и распределений. Маски уклона или высоты позволяют выбрать области для детализации, а scatter — размещать в них объекты по точкам. Однако в документации не приводятся данные по конкретным моделям растений, времени рендера или требованиям к оборудованию.
Поскольку heightfield строится на двумерной сетке, у него есть ограничения при работе с вертикальными поверхностями. Если на вертикальных участках нужны детали, документация предлагает эродировать рельеф или преобразовать его в реальную геометрию. Karma CPU и Karma XPU поддерживают heightfield. При переносе в Solaris преобразование может выполняться автоматически, но ручная конвертация даёт больше контроля в таких случаях, как запекание цвета и слоёв в рельеф.
Распространённые ошибки
Ждать результата от
HeightField Mask by Feature, не включив ни одного критерия: в этом случае маска заполняется значением 1.Считать
Max Pointsточным числом точек scatter: документация указывает, что это только верхний предел, а фактическое количество может быть меньше.Указывать неправильное имя слоя маски: значение
Mask Layerв узле scatter должно совпадать с именем слоя в heightfield.Предполагать, что heightfield сможет детально представить вертикальные поверхности: эта структура хранит данные о высоте в 2D-сетке и ограничена при работе с вертикальными участками.
Примечание о версиях: в документации для Heightfield Mask by Feature указано «Since 16.0», а для HeightField Scatter — «Since 17.0». На общей странице heightfields конкретный номер версии не указан, поэтому утверждения о версиях других узлов не добавлены.
Источники
Источников: 3Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.
Для архитектурных бюро и студий визуализации в Турции главное преимущество этого рабочего процесса — возможность делить рельеф на области по заданным критериям, а не редактировать его вручную. Управление распределением с помощью уклона, высоты и масок может упростить повторную настройку той же сети при изменении проекта.
Тем не менее перед созданием плотной сетки и большого количества точек scatter разумно протестировать процесс на небольшом участке. В документации нет сведений о требованиях к оборудованию или замерах производительности, поэтому значения стоит проверять с учётом масштаба сцены. Если не считать `Max Points` точным количеством и заранее учитывать ограничения на вертикальных поверхностях, можно избежать лишней переработки.
Частые вопросы
Что такое heightfield в Houdini?
Heightfield — это структура, в которой высота рельефа хранится в двумерной сетке. Слои и маски позволяют обрабатывать разные области по отдельности.
Можно ли создать точное число точек с помощью HeightField Scatter?
Да. Для задания точного общего количества в документации предусмотрен метод `Total Point Count`. `Max Points` задаёт верхний предел, а не точное число точек.
Можно ли создавать детали на вертикальных поверхностях с помощью heightfield?
Двумерная структура heightfield ограничивает работу с вертикальными участками. В документации в качестве вариантов для добавления деталей предлагается эродировать рельеф или преобразовать его в реальную геометрию.



