Ветер и "подводные" волосы в Ornatrix Maya: симуляция Moov шаг за шагом
Разберём, как с помощью Moov Physics в Ornatrix для Maya сделать волосы, которые треплет ветер. А потом парой правок превратим ту же настройку в эффект движения под водой. В поставку Ornatrix входит отдельный Python-скрипт для Moov, заточенный как раз под ветер, на нём всё и построим.
Вот к чему придём в конце:
1. Готовим грум: симулируем только то, что нужно
Первое правило быстрой симуляции: не гонять сотни тысяч прядей там, где это не нужно. Упрощаем грум до базы и симулируем гайды, а не финальные плотные волосы. Движение гайдов потом само перейдёт на рендерные пряди через Hair from Guides.
Симулировать сразу все пряди тоже можно, но вьюпорт от этого заметно проседает, и каждая итерация настройки превращается в ожидание. Есть и промежуточный вариант:
- настраиваем симуляцию только на гайдах, пока всё не устроит;
- затем переносим оператор Moov выше Hair from Guides, и та же настройка работает уже на всех рендерных прядях.
В этом примере нам хватает одних гайдов. Отключаем Hair from Guides и все операторы над ним, которые зависят от сгенерированных плотных волос, и добавляем оператор MoovPhysics. Стек выглядит так:
2. Сколько гайдов и точек брать
В груме примерно 1200 гайдов по 10 вершин на каждый. Для этой причёски 1200 гайдов, пожалуй, даже с запасом, зато движение получается детальным и почти не требует интерполяции.
А вот 10 вершин на гайд - это сознательная экономия. Чем меньше геометрии уходит в симуляцию, тем быстрее она считается и тем быстрее итерации. Гладкость возвращаем уже после симуляции: над Moov стоит оператор Detail, который добавляет вершины к результату и не утяжеляет сам расчёт.
3. Подключаем скрипт ветра
Выделяем оператор Moov, чтобы его параметры появились в Attribute Editor. Дальше:
- В секции Scripts, в поле Python File, загружаем файл HairSimulatorWind.py.
- Он идёт вместе с Ornatrix и обычно лежит здесь:
C:\Program Files\Ephere\OrnatrixMaya2026\scripts\Moov\HairSimulatorWind.py - После загрузки в параметрах появится новая секция Wind.
- Включаем 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:
- Открываем File > Import.
- В Files of Type выбираем Ornatrix Alembic и указываем записанный файл.
- 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.