Наша новая игра 8 сентября в раннем доступе на steam



Симуляция длинных 3D волос в 3ds Max + Marvelous Designer

Метод симуляции, который я опишу ниже, годится для любых длинных 3D волос в 3ds Max, сделанных любым способом.

Сначала смотрите, что у меня получилось (ролик я рендерил VRay'кой в Максе на вот этом компе, на каждый фрейм (1280x720) уходило от 9 до 26 минут в зависимости от количества волос в кадре):

Теперь коротко о том, как я это сделал, а дальше я по каждому пункту пройдусь более подробно.

  1. Всю причёску я разделил на несколько частей (слоёв, которые лежат один над другим).
  2. Набросил на каждый слой модификатор HairMesh Link (этот шаг нужен только, если вы тоже используете плагин HairFarm для создания волос).
  3. Открыл Marvelous Designer 3 (MD3) и создал 4 слоя ткани по такому же принципу, как я разделил всю причёску в 3ds Max.
  4. Просимулировал эти слои ткани. Вот что получилось:

  1. Импортировал кеш просимулированной ткани в 3ds Max.
  2. Привязал (с помощью модификатора Skin Wrap) каждый MeshLink к соответствующему слою просимулированной ткани.

Теперь по каждому пункту подробно.

1. Как я делил 3D причёску на части.

Как видно на скриншоте ниже, я сделал 4 слоя. Верхний (голубой) крепится ко всей макушке, нижний (зелёный) крепится по периметру черепа на уровне уха, следующий (жёлтый) крепится еще ниже, а самый нижний (оранжевый) - у основания шеи.

Разделение 3D волос на слои

Каждый слой причёски - это отдельный объект.

2. Модификатор HairMesh Link.

Модификатор HairMesh LinkМодификатор HairMesh Link создает копию волос в виде обычного полигонального объекта Editable Poly. С этой копией можно делать всё что угодно (всё, что можно делать в 3ds Max с обычным editable poly). А благодаря HairMesh Link, все эти изменения будут происходить и с волосами.

Таким образом, создав копию волос, я потом смогу её анимировать с помощью чего угодно. Будь то ткань из внешнего редактора или мягкий объект MassFX, любой модификатор Макса или кости. В общем, потенциал вы поняли.

По такому же принципу работает модификатор Skin Wrap. Когда вы один объект (к примеру, это низкополигональный объект, который проанимирован костьми), привязываете к другому (высокополигональному объекту), чтобы он двигался так же, как и низкополигональный.

 

 

 

 

 

3. Как я создавал слои ткани в MD3.

Сначала я пошил что-то наподобие шапочки, которую с помощью Pin'ов присоединил намертво к голове, чтобы она не сдвигалась во время анимации/симуляции:

Слои ткани в MD3 для симуляции длинных волос

Для этого я выбрал инструмент Box Pinning (показан на картинке выше) и выбрал все вершины шапочки. Потом кликнул по выбранным пинам правой кнопкой мышки (ПКМ) и выбрал пункт Attach Pin to Avatar (присоединить шпильки к аватару).

Дальше, я так вырезал 4 лоскута ткани, чтобы они точно походили по размерам на слои причёски из пункта 1. Чтобы это было удобнее делать, я импортировал причёску (вернее, ту полигональную копию, которую создал мне модификатор HairMesh Link, или которую можно сделать вручную с помощью модификатора HairMesh to Poly) в MD3 в качестве еще одного аватара (File -> Add -> Avatar).

Но просто куски ткани не могут имитировать причёску - они ведь плоские, а волосы (даже те волосы, что я поделил на слои) - создают объём. Поэтому для боковых граней я включил эластичность в свойствах (Elastic On):

Эластичные краи ткани в MD3

Это позволило мне:

  1. Придать каждому слою ткани такой объём, как и у слоёв моих 3D волос.
  2. Позволить волосам в процессе анимации немного распрямляться (ведь в причёске у меня волосы немного вьются, а значит во время резкого движения должны выпрямляться, а потом подскакивать).

Т.е. по сути, я стянул свои кусочки ткани резинкой по периметру. При этом я следил, чтобы объём, ширина и высота каждого лоскута ткани совпадали с этими же параметрами конкретного слоя волос в спокойном состоянии (т.е. пока персонаж стоит в А-позе, которая от Т-позы отличается только тем, что руки немного опущены вниз, чтобы было удобнее шить одежду на плечах).

4. Как я симулировал ткань, чтобы она напоминала волосы.

Параметры ткани MD3 имитирующей волосыЧтобы движение ткани походило на движение волос, я в свойствах ткани указал такие параметры как на скриншоте слева.

За основу я взял готовый материал R_Chiffon_CLO_v1 (где R - сокращённо от Real - реальный) и подправил почти все параметры так, чтобы ткань очень легко растягивалась как по горизонтали, так и по вертикали (Stretch-Weft и -Warp = 1), но при этом немного хуже гнулась, чем шифон (Bending-Weft и -Warp =20). Зато увеличил параметр, который отвечает за сильную деформацию (Buckling Ratio = 90) и уменьшил параметр жёсткости (Buckling Stiffness = 1). И, конечно же, сделал ткань невесомой, уменьшив её плотность (Density = 1).

После нескольких тестов, я понял, что слои ткани сильно разлетаются один относительно другого, а это нереалистично выглядело на волосах. Поэтому, я в некоторых местах сшил лоскуты ткани (места сшивания видны на первом скриншоте из пункта 3).

Дальше я загрузил в MD3 все объекты, с которыми должны были взаимодействовать волосы (каждый объект, как новый аватар): второго персонажа, тело и голову девочки (чьи волосы я симулирую), одежду обоих персонажей.

Также я подключил к каждому аватару кеш с анимацией (чтобы они двигались) - File -> Import -> Maya Cache (или Point Cache 2).

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

Подробно о настройках качества симуляции читайте в моей статье про секреты Marvelous Designer.

5. Как я экспортировал слои ткани из MD3 в 3d Max.

Когда симуляция ткани в MD3 закончилась, я экспортировал OBJ ткани и анимационный кеш (File -> Export -> Point Cache 2).

В 3ds Max'е я импортировал геометрию ткани из файла OBJ и набросил на неё модификатор Point Cache, чтобы подгрузить анимационный кеш.

Удаление лишних слоёв анимированной ткани в 3ds MaxНо здесь получилась засада. Ведь мне нужны были отдельно каждый слой ткани, а MD3 экспортировал мне все слои в одном файле и одним объектом. Чтобы это исправить, я создал еще три копии этой тканевой причёски (с модификатором Point Cache вверху) и на каждую набросил модификатор Edit Poly. Теперь мне осталось только зайти в каждый из четырёх модификаторов Edit Poly и (на уровне полигонов) удалить лишние слои так, чтобы у меня получилось 4 отдельных объекта с разными слоями в каждом (как показано на втором видео в начале статьи).

6. Как я привязывал проанимированную ткань к волосам.

Я поочерёдно брал каждый полигональный объект (который создал модификатор HairMesh Link) и набрасывал на него модификатор Skin Wrap, с настройками показанными ниже:

модификатор skin wrap поверх hairmesh link

Понятно дело, что полигональные объекты HairMesh Link и проанимированный слой ткани должны были максимально совпадать.

Вышеприведённые параметры влияния на деформацию я выбрал экспериментальным путём. Т.е. именно такие параметры (по моему мнению) наиболее реалистично передавали движение ткани на движение волос.



Подпишитесь на обновление блога (вот 3 причины для этого).
Введите ваш e-mail:


Всё!

Если у вас волосы сделаны каким-то другим методом (а не плагином Hair Farm), то выполняете все пункты кроме второго. А потом, в конце, вам нужно привязать ваши управляющие объекты (у вас это могут быть сплайны, хелперы, кости, меш или что-то еще) к проанимированной ткани. Привязку можно осуществиь либо через модификатор Skin Wrap (возможно, через посредников), либо каким-то другим способом (Link, Constraint, Morph и т.д.).

Дальше просто прячем вспомогательные объекты и оставляем видимыми только длинные волосы, которые теперь достаточно реалистично движутся.

Если у вас есть какие-то вопросы - спрашивайте (только на комментарии из VK я отвечаю не сразу, поэтому лучше спрашивайте в комментариях на движке сайта).

Кстати, скоро (в конце лета 2014) в Киеве пройдёт выставка 3D печати и 3D принтеров. Стоимость входного билета меньше $9.

Я скорее всего пойду, а то как-то тема практической 3D-печати проходит мимо меня. А вы как?




Вам понравилась статья? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.

Введите ваш e-mail (используется только для отправления обновлений блога):

комментариев 13 к статье “Симуляция длинных волос в 3ds Max с помощью ткани из Marvelous Designer”

  1. Когда то тоже такую статью хотел написать. Столкнулись с проблемой волос когда мультик делали…
    НО подход был у меня более консервативный — решить все средствами макса. Тогда я еще увидел мейкофф Диабло у близарда, там где телка письмо пишет и засыпает и попадает к дьяволу. Там было четко видно как они решили этот вопрос, ну короче точь в точь как у тебя. Единственно не ясно чем они анимировали саму ткань.
    Я тогда тоже попытался так сделать, но столкнулся с одной проблемой, что если волосы должны разделятся?
    Как по мне мы тогда нашли более простое и эффективное средство. И не надо было скакать из пакета в пакет.
    Просто создаеться прическа из сплайнов а не из меша. Сплайны конвертируються в меш. Меш анимируеться как ткань. Тогда это был стандарный максовский cloth. Марвелоса еще не было тогда и massfx тоже.
    Все было очень просто и очень реалистично. и к тому же волосы можно былоперебирать, то есть разделять локоны…

  2. Да вот тест, что тогда вышло

  3. Доброго дня, Юрій.

    В першу чергу хочу щиро подякувати за Вашу працю (як в 3D, так і в самому поширені різного роду матеріалу в цій сфері).

    Подобається те що, Ви розписуєте в дрібних деталях зачасто складні чи важко-зрозумілі методики, інструменти і взагалі аспекти роботи в просторі CG.
    Я вже довший час слідкую за даним блогом, і досить часто звертаюсь до нього при необхідності. Для мене це не тільки джерело інформації, а ще й свого роду допоміжний інструмент при навчанні/роботі.

    Також користуючись нагодою, хочеться попросити Вас, чи викласти подібний матеріал, чи можливо маєте хороший ресурс де описаний аналогічно — процес стоворення штор (знаю даного матеріалу як сміття в неті, а ось хорошого, подібно до опису симуляції довгого волосся — «банка»).

    Юрій, ще раз дякую, за цю всю титанічну працю (можна ж для прикладу забити на ці тексти і просто в задоволення працювати). Успіху Вам, і не зупиняйтесь. Це дійсно потрібно багатьом хто починає, і навіть тим хто вже «вариться» в цій індустрії.

  4. Круто получилось, но почему-то кажется, что волосы «тяжелые». А вообще, спасибо за интересный метод!

  5. Думаю надо делать «веером», чтобы волосы как бы разлетались. А то кажется что они слиплись.

  6. Добрый день 🙂 наверное, я прошу слишком многого, но не могли бы вы рассказать детально об импорте анимации из 3Ds Max в Marvelous D.? Если моя просьба уже чересчур, в топку смело 🙂 Но я очень надеюсь на вашу помощь, ведь к кому еще обратиться-то(

    • Здравствуйте «Летающий скат»
      Есть несколько способов экспорта анимации из 3Ds Max в MD.
      Расскажу о двух, это Cache импорт положения вершин и второй формат COLLADA (быстрее OpenCOLLADA https://github.com/KhronosGroup/OpenCOLLADA/wiki/OpenCOLLADA-Tools) основан на экспорт персонажа с оснасткой и соответственно с костями.
      В первом случае:
      в 3ds Max:
      Сохраняем данный объект в формате OBJ не забудте во вкладке Optivize снять все три чекбокса.
      модификатор Point Cache записываете анимацию: NEW… формат PC2 ,затем жмём Record.

      в MD: File > Import> OBJ (импортируете Ваш об’ект )
      File > Import> Vertex animation>Point Cache 2 (накладываем аним. вершин)
      В открывшемся окне укажите масштаб Вашей сцены
      Со вторым способом всё проще , но требовательнее к качеству геометрии и не поддерживает модификаторы сглаживания.
      Удачи Вам

  7. День добрый!
    а Вы сталкивались с тем, что прикрепленный к аватару pin при анимации на самом деле становится прикрепленным к определенному месту в сцене (где его закрепили), а не к самому аватару? будто замороженная точка получается.
    вот по этой логике не очень понимаю как вы шапку на персонаже закрепили в самой анимации.

    • Это значит, что вы просто СОЗДАЛИ пин, но не ПРИКРЕПИЛИ его к голове.
      Т.е. процедура такова. Сначала пины создаются, потом кликается на них правой кнопкой мышки и выбирается «прикрепить к аватару».

      • )) это само собой. Я разобрался в этом баге. Дело в том, что кэш аватара следует подгружать только после всех правок в сцене, иначе могут быть бока либо с тканью, либо с анимацией аватара. По моему опыту следует перезагружать кэш даже при повторных симуляциях. Конечно, возможно, у меня этакая версия MD3

  8. Юрий, а вы не знаете как решить проблему?

    Суть в чем =) У меня есть персонаж — девушка. Я симмулирую одежду на ней. Анимация ее заключается в том, что она подымает руки и слаживает их в узел. Когда руки касаются ткани, то она себя не очень естественно ведет. Начинает как бы обтекать руки, обнимая их =) Что с этим делать, какую настройку ткани или симмуляции крутить?

Извините, в данный момент комметарии закрыты.

© 2008 - 2018 3dyuriki.com
Для связи со мной 3dyuriki@gmail.com