Render.ru
Поддержать
  • ПРЕДЛОЖИТЬ ПРОЕКТ
  • ДОБАВИТЬ В КОНТАКТЫ
37Записей
14Следят
2Читает
153 KЗаходов
Андрей Кривуля (artofcharly)

Ветер и "подводные" волосы в Ornatrix Maya: симуляция Moov шаг за шагом

Урок

Разберём, как с помощью Moov Physics в Ornatrix для Maya сделать волосы, которые треплет ветер. А потом парой правок превратим ту же настройку в эффект движения под водой. В поставку Ornatrix входит отдельный Python-скрипт для Moov, заточенный как раз под ветер, на нём всё и построим.

Вот к чему придём в конце:

1. Готовим грум: симулируем только то, что нужно

Первое правило быстрой симуляции: не гонять сотни тысяч прядей там, где это не нужно. Упрощаем грум до базы и симулируем гайды, а не финальные плотные волосы. Движение гайдов потом само перейдёт на рендерные пряди через Hair from Guides.

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

  • настраиваем симуляцию только на гайдах, пока всё не устроит;
  • затем переносим оператор Moov выше Hair from Guides, и та же настройка работает уже на всех рендерных прядях.

В этом примере нам хватает одних гайдов. Отключаем Hair from Guides и все операторы над ним, которые зависят от сгенерированных плотных волос, и добавляем оператор MoovPhysics. Стек выглядит так:

Стек операторов Ornatrix с MoovPhysics

2. Сколько гайдов и точек брать

В груме примерно 1200 гайдов по 10 вершин на каждый. Для этой причёски 1200 гайдов, пожалуй, даже с запасом, зато движение получается детальным и почти не требует интерполяции.

А вот 10 вершин на гайд - это сознательная экономия. Чем меньше геометрии уходит в симуляцию, тем быстрее она считается и тем быстрее итерации. Гладкость возвращаем уже после симуляции: над Moov стоит оператор Detail, который добавляет вершины к результату и не утяжеляет сам расчёт.

Оператор Detail над Moov в стеке

3. Подключаем скрипт ветра

Выделяем оператор Moov, чтобы его параметры появились в Attribute Editor. Дальше:

  1. В секции Scripts, в поле Python File, загружаем файл HairSimulatorWind.py.
  2. Он идёт вместе с Ornatrix и обычно лежит здесь:
    C:\Program Files\Ephere\OrnatrixMaya2026\scripts\Moov\HairSimulatorWind.py
  3. После загрузки в параметрах появится новая секция Wind.
  4. Включаем Use Wind и жмём Play на таймлайне Maya.

Волосы должны плавно поплыть вправо по ветру. В той же папке лежит стандартный скрипт Moov, так что вернуть исходное поведение можно в любой момент.

Параметров у ветра немного: скорость по каждой оси, трение (friction) и турбулентность (turbulence).

4. Анимируем ветер

По умолчанию Wind Velocity X равен 200. Поднимаем до 400, и сила ветра вправо сразу заметно растёт.

Ровный постоянный ветер выглядит скучно, поэтому анимируем Wind Velocity X. Например, ключи со значениями 200, 80, 800, 100 дают резкие порывы и затишья, и движение становится живее. Вот результат пока без коллизий:

Совет: если гайды во время симуляции тянутся, включите Limit Stretch.

5. Добавляем коллизии

Пока что гайды спокойно проходят сквозь персонажа. Исправляем: в Moov открываем секцию Collision Objects и добавляем меш для столкновений кнопкой + или через правый клик.

В качестве коллизионного меша здесь используется упрощённая низкополигональная копия персонажа, у которой закрыты все дыры. Почему именно так:

  • Закрытый меш. На открытых краях пряди любят застревать или проскакивать сквозь поверхность, замкнутая геометрия этого не допускает.
  • Мало полигонов. Симуляции меньше считать, итерации идут заметно быстрее. Меш должен передавать только общий силуэт и форму, важные для волос, мелкие детали финальной модели ему не нужны.

Упрощённый закрытый меш головы для коллизий

6. Настройки коллизий

В секции Collisions проверяем, что включён Collide With Meshes (по умолчанию он и так включён).

Там же Particle Radius задаёт толщину зоны столкновения вокруг каждой вершины гайда или пряди. Если нужно, чтобы толщина менялась по длине, используйте Particle Radius Curve.

В этой сцене хорошо работает Particle Radius = 0.6. Но значение зависит от масштаба сцены, так что под свой грум его стоит подобрать опытным путём. Результат с коллизиями:

7. Как не потерять исходную причёску

Симуляция может заметно "развалить" исходную укладку. Для этого в Moov есть Attract To Initial Shape в секции Forces and Fields: включаем его и подбираем Attract To Initial Shape Stiffness.

Задача - найти баланс: волосы должны естественно реагировать на ветер и при этом держать форму причёски. Слишком большое значение сделает их деревянными.

8. Гравитация и сопротивление: эффект под водой

Иногда полезно полностью убрать гравитацию, выставив Gravity в 0. Так проще изолировать тот эффект, который вы добиваетесь. А с парой правок та же сцена превращается в волосы, которые колышутся под водой:

  • Gravity: 0
  • Drag: 0.2

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

9. Запекаем симуляцию

Когда результат устраивает, записываем симуляцию в файл, чтобы потом использовать его вместе с грумом. Добавляем оператор Animation Cache над Moov, выделяем его и в поле File Name кнопкой сохранения указываем файл и папку.

Record Render Hair

Эта опция связана с двумя параметрами:

  • Render Count - сколько прядей идёт в финальный рендер;
  • Viewport Count Fraction - какая доля от них показывается во вьюпорте.

С включённым Record Render Hair кэш пишет полные рендерные волосы, а не урезанную версию из вьюпорта. Похожим образом ведёт себя и Detail, у которого может быть разное число точек для вьюпорта и рендера.

Нам эта опция не нужна: кэш записывает только гайды, а Detail стоит выше кэша, так что его рендерные настройки на запись не влияют.

Диапазон записи

Use Record Time Range (включён по умолчанию) берёт диапазон кадров с таймлайна Maya. Если его выключить, первый и последний кадр можно задать вручную. Остальные параметры описаны на странице Animation Cache.

10. Пишем кэш

Жмём Record Animation и ждём окончания записи. Animation Cache сам подгрузит получившийся файл. После этого Moov можно отключить или удалить: вся симуляция уже живёт в кэше.

11. Используем кэш в другой сцене

В файле хранится не только анимация. Там же лежат сами гайды или пряди вместе с их данными, включая Strand IDs и Strand Channels.

Чтобы перенести их в новую сцену Maya:

  1. Открываем File > Import.
  2. В Files of Type выбираем Ornatrix Alembic и указываем записанный файл.
  3. Ornatrix создаст грум с оператором BakedHair или BakedGuides.

В свойствах оператора можно назначить distribution mesh и продолжить работу с прядями другими операторами Ornatrix.

Важный момент: импортированные так пряди статичны. Чтобы вернуть анимацию, добавьте оператор Animation Cache и загрузите в его File Name тот же файл кэша. Он применит записанное движение к запечённым прядям.

Файлы урока

В уроке используется сэмпл-грум Layered Bob Hairstyle. На его странице можно скачать:

  • Maya-проект Layered Bob Hairstyle - сцена, грум, текстуры и всё нужное для проекта;
  • Simulation Caches - готовые кэши Ornatrix Alembic с примерами симуляции ветра.

Страница сэмпла: Layered Bob Hairstyle

Для сэмпла нужны Maya 2026 и Ornatrix 5.2.0.39751 или новее.

Оригинал урока в документации Ornatrix: Moov Hair Simulation. Подробнее о самом операторе: Moov Physics.

721
Комментарии:0
по поступлению