Модификатор «Океан» (ocean modifier)¶
Модификатор Ocean – это инструмент для симуляции и генерации деформирующейся поверхности океана и связанной с ней текстуры, используемой для рендеринга данных этой симуляции. Он предназначен для моделирования глубоких океанских волн и пены.
Это порт Houdini Ocean Toolkit с открытым исходным кодом.
Опции (options)¶

Модификатор Ocean.¶
- Геометрия (geometry)
- Генерация (generate)
Создаёт мозаичную меш-сетку, которая в точности соответствует разрешению данных симуляции.
При генерации меш-поверхности – существующий меш-объект полностью переопределяется сеткой океана; это также относится к любым сгенерированным данным из предыдущих модификаторов в стеке. Также добавляется UV-канал, сопоставляющий UV-пространство (от 0.0 до 1.0) на сетку симуляции.
- Повторять по X, Y (repeat X, Y)
Управляет количеством разбиений сетки по направлениям X и Y. UV-карты для этих мозаичных меш-областей продолжаются за пределами UV-пространства (от 0.0 до 1.0).
- Сместить (displace)
Использует существующую геометрию, а не заменяет её. Вершины смещаются вдоль локальной оси Z.
- Разрешение - Вьюпорт, Рендеринг (resolution viewport, render)
Основные контроллеры качества и скорости в движке симуляции. Они определяют разрешение внутренних 2D-сеток, генерируемых симуляцией для 3D-вьюпорта или финального рендера.
Внутренние сетки являются числами во второй степени для значения разрешения, поэтому значение разрешения
16
создаст данные симуляции размером256×256
. Чем выше разрешение, тем больше деталей будет получено, но медленнее будут производиться вычисления.Примечание
При использовании, для геометрии, такой опции модификатора как „Generate“ – это значение разрешения также определяет и разрешение генерируемой меш-поверхности, равное разрешению внутренних данных симуляции.
- Время (time)
Время для вычисления движения поверхности океана. Чтобы создать анимацию океана, вам нужно анимировать это значение. Скорость изменения значения времени определит скорость анимации волны.
- Глубина (depth)
Постоянная глубина дна океана под областью симуляции. Более низкие значения имитируют мелководье, создавая при этом более частые детали и более мелкие волны.
- Размер (size)
Простой коэффициент масштабирования, который не влияет на высоту волн или поведение симуляции.
- Пространственный размер (spatial size)
Ширина имитируемой поверхности океана в метрах. Эта настройка также определяет размер сгенерированного меша или смещённой области. Конечно, вы можете масштабировать объект с помощью модификатора Ocean и в объектном режиме, чтобы настраивать видимый размер в вашей сцене.
- Случайная вариация (random seed)
Другая вариация даёт другой результат симуляции.
- Генерировать нормали (generate normals)
Симуляция дополнительных данных карты нормалей. Эта опция может использоваться текстурой океана, при сопоставлении с нормалями, как карта рельефа, также позволяет генерировать секвенции изображений карты нормалей при запекании.
Волны (waves)¶
- Масштаб (scale)
Общий контроллер масштаба для амплитуды волн. Он аппроксимирует высоту или глубину волн выше или ниже нуля. Вместо того, чтобы просто масштабировать объект-«океан» по Z, он масштабирует все аспекты симуляции, производя смещение по X и Y, а также и соответствующую пену и нормали.
- Наименьшая волна (smallest wave)
Минимальный предел размера генерируемых волн. Действует аналогично фильтру нижних частот, удаляя детали волн более высокой частоты.
- Волнения (choppiness)
Движение верхушек волн. При „волнении“ равном 0 – поверхность океана смещается только вверх и вниз в направлении Z, но при более высоком значении – волны также смещаются вбок по осям X и Y, создавая более острые пики волн.
- Скорость ветра (wind velocity)
Скорость ветра в метрах в секунду. При низкой скорости – волны ограничиваются более мелкими поверхностными волнениями.
- Выравнивание (alignment)
Направленность волновых форм из-за ветра. При значении 0 – ветер и волны ориентированы случайным образом, однородно. При более высоких значениях выравнивания – ветер дует более направленно, из-за чего волны кажутся более сжатыми и движущимися в одном направлении.
- Направление (direction)
При использовании „выравнивания“ – указывается направление в градусах, по которому выравниваются волны (используя локальную ось X в качестве ориентира).
- Торможение (damping)
При использовании „выравнивания“ – определяет величину, на которую будут затухать взаимно отражаемые волны. Эта настройка приводит к тому, что движение волны становится более направленным (а не только формирование самой формы волны).
При торможении, равном 0.0, волны отражаются друг от друга во всех направлениях, при торможении, равном 1.0, эти взаимно отражаемые волны затухают, и остаются только волны, движущиеся в направлении ветра.
Пена (foam)¶
Симуляция дополнительных данных для пены.
Её можно извлечь из текстуры океана для использования при текстурировании (возможно, в качестве маски), а также можно генерировать секвенции изображений карты пены при запекании.
- Слой данных (data layer)
Имя «по усмотрению» для слоя данных вершин, используемое модификатором Ocean для хранения карт пены в качестве атрибута цвета. Оно необходимо для доступа к данным пены в самом рендерере.
- Покрытие (coverage)
Изменяет количество пены, покрывающей волны, отрицательные значения уменьшают количество пены (оставляя только самые верхние пики), положительные значения увеличивают её. Обычно колеблется от (-1.0 до 1.0).

Использование атрибутов цвета пены с названным слоем данных.¶
Брызги (spray)¶
Сгенерировать карту направления брызг в качестве атрибута цвета. Эту карту можно использовать для определения скоростей частиц-брызг.
- Карта брызг (spray map)
Имя атрибута цвета, используемого для карты направления брызг.
- Инвертировать (invert)
Инвертирует карту направления брызг.
Спектр (spectrum)¶
- Спектр (spectrum)
Используется для выбора модели спектра волн. Спектры волн используются для описания того, как будет проходить энергия через волны на разных частотах. Энергия проходит через волны по-разному в зависимости от глубины воды и скорости ветра.
- Бурный океан (turbulent ocean)
Используется для бурных морей с пеной (Phillips).
- Спокойный океан (established ocean)
Используется для обозначения большой площади сформировавшегося океана, где океан простирается на многие мили, а ветер дует в течение нескольких дней, позволяя волнам достичь точки равновесия (метод Пирсона-Московица).
- Спокойный океан (острые вершины) (established ocean (sharp peaks))
Однако, подобно обычному спокойному океану, волны будут продолжать расти со временем, создавая более острые пики (JONSWAP и метод Пирсона-Московица). Для определения остроты этих пиков используется дополнительный параметр.
- Мелководье (shallow water)
Используйте для мелких вод с глубиной менее 10 метров, что делает настройку идеальной для небольших озёр и прудов без сильного ветра (методы JONSWAP и TMA – Текселя-Марсена-Арслоу).
- Резкость пиков (sharpen peak)
Искусственный коэффициент, контролирующий остроту пиков волн в моделях спектра „Established Ocean (Sharp Peaks)“ и „Shallow Water“.
- Разгон ветра (fetch)
Расстояние от подветренного берега, называемое разгоном, или расстояние, на котором ветер дует с постоянной скоростью. Используется в спектральных моделях „Established Ocean (Sharp Peaks)“ и „Shallow Water“.
Запечь (bake)¶
Вместо того, чтобы производить симуляцию океанических данных в реальном времени, их можно запечь в файлы с указанием папки для сохранения. Когда запекается симуляция, движок для симуляции не принимается во внимание при воспроизведении, вся информация для модификатора или текстуры извлекается из запечённых файлов.
Запекание имеет следующие преимущества:
Быстрое использование сохранённых данных, вместо пересчитывания их снова и снова.
Позволяет рендерить эти данные океана во внешних рендерерах.
Позволяет создавать более сложные карты для пены.
Данные симуляции хранятся в виде секвенций карт-изображений OpenEXR
, по одной для смещения, нормалей и пены (если разрешено генерировать). При загрузке данных из этих запечённых файлов, когда считывается кадр запечённой секвенции, он кэшируется в памяти. Это означает, что доступ к загруженным кадрам в последующие разы происходит быстро, не прибегая к дополнительной нагрузке в виде повторных обращений к диску.
Поскольку эти запечённые файлы представляют собой простые файлы OpenEXR
, их также можно открывать и рендерить в любом другом приложении или рендерере, который их поддерживает.
- Путь к кэшу (cache path)
Папка для хранения запечённых EXR-файлов. Секвенции будут иметь вид
disp_####.exr
,normal_####.exr
иfoam_####.exr
, где####
– это четырёхзначный номер кадра. Если папки пути к кэшу не существует, – она будет создана.- Кадр - Начало, Конец (frame start, end)
Кадры симуляции для запекания (включительно). Начальный и конечный кадры запекания повторяются при доступе к кадрам за пределами запечённого диапазона.
- Исчезновение пены (foam fade)
Запекание также даёт возможности для совершенствования пены. При симуляции в реальном времени – симулятор океана извлекает данные только для текущего кадра. В случае карты пены это кончики гребней волн для данного кадра. В действительности, после того как пена создана при взаимодействии волн, она остаётся на поверхности волны ещё некоторое время, пока полностью не рассеется. С запеканием возможно аппроксимировать это поведение, накапливая пену из предыдущих кадров, оставляя её на поверхности.
Пример¶
Данный пример был создан и отрендерен в Blender’е. Обратите внимание, что пики волн белые; эффект получен на основе данных о пене.