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



Секреты Marvelous Designer 3

Обновление (05.11.2018): ВАЖНО! всё содержание этой статьи применимо к 3-тей, 4-той, к 5-той версии Marvelous Designer и к 6-той, к седьмой и восьмой версиям.

Обновление (22.01.2015): добавил картинку (в конце статьи), где искать параметр Number Of CPU In Use, который отвечает за количество ядер, которые принимают участие в симуляции ткани (по умолчанию там стоит значение 4). И если у вас больше, чем четыре логических (не физических) ядер, то нужно этот параметр увеличить.

Обновление (03.04.2014): добавил исследований по новым параметрам.

В этой статье я поделюсь теми наблюдениями (ставшие для одних советами, а для других были до этих пор секретами 😉 ), которые помогли мне более эффективно симулировать одежду в Marvelous Designer 3 (MD3).

Наверное, это многих раздражает, что MD3 не использует во время симуляции все ядра на 100%. И если вы уже нашли параметр Number Of CPU In Use (картинка, где его искать в конце статьи) и поставили там значение, равное количеству логических ядер у вас на компе, а ядра всё равно не загружаются на 100%, то продолжайте читать. А если еще не нашли, то сначала найдите и порадуйтесь разнице 🙂 , а потом тоже продолжайте читать.

Оказывается, ядра начнут загружаться максимальнее, если уменьшить расстоянием между частицами (Particles distance), что означает, что мы увеличим количество полигонов.

В теории, кажется, что если увеличивать количество частиц до определённого момента, то можно достичь увеличения качества симуляции бесплатно, за счёт неиспользуемых ядер. Но проделав эксперименты, я доказал, что это не так. Смотрите сами.

Исследование параметра Particles distance.

MD3: график зависимости времени симуляции от количества полигонов на ткани

Это график зависимости времени симуляции в MD3 от количества полигонов на ткани.

Эксперимент я проделывал вот на такой одежде на настройках Complete:

Средневековая рубаха и колет в MD3

В обычном состоянии (когда нету никаких глюков, выворотов, взрывов и запутываний ткани) для вышеприведённой одежды с расстоянием между частицами (Particles distance) 5 мм, MD3 кушает 1.4 ГБ оперативки и 40% процессора (спецификация моего компа) на всём процессе симуляции.

Таким образом, я выяснил, что чем больше полигонов в одежде, тем больше процессора и тем больше оперативной памяти кушает Marvelous Designer 3.

Причём зависимость (как вы видите на графике выше) степенная

Y = 1400/X2.6,

где

  • Y - время симуляции.
  • X - расстояние между частицами.
  • 1400 - это коэффициент для моей одежды (у вас он будет другим).

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

К примеру, если расстояние между частицами было 10 и, соответственно, время симуляции Y = 1400/(10*10*10) = 1,4 секунды, то, при уменьшении расстояния между частицами в два раза (до 5), время симуляции одного кадра возрастёт до Y = 1400/(5*5*5) = 11 секунд!

Время выросло в восемь(!) раз, хотя расстояние между частицами уменьшили только в двое.

Вывод: с параметром Particles distance нужно быть осторожным.

Влияние параметра Number of Simulation на скорость симуляции.

В настройках качества симуляции есть параметр Number of Simulation, который отвечает за количество проделанных симуляций за один кадр. По умолчанию там стоит значение 5. Это значит, что между каждым кадром MD3 будет симулить поведение вашей одежды пять раз. Потом он эти поведения усредняет и показывает вам усреднённое значение.

Таким образом, накручивание этого параметра помогает (в теории) избавится от мелкого дрожания 3D ткани. На практике это тоже есть, но эффект очень незначителен (или просто у меня попадались такие случаи, что я разница была не очень большой).

Вот график зависимости скорости симуляции одежды от параметра Number of Simulation.

Влияние параметра Number of Simulation на скорость симуляции MD3

Формула получается линейная:

Y = 0.95*X + 5,

где

  • Y - время симуляции.
  • X - количество симуляций (Number of Simulation).
  • 5 - коэффициент для моей одежды (у вас он будет другим).

 Вывод: количество симуляций - это и есть ИМЕННО КОЛИЧЕСТВО симуляций. Т.е. если было 5, а вы сделали 10 (увеличили в два раза), то и время симуляции увеличится в 2 раза.

Влияние параметра Self Collision Iteration Count на скорость и качество симуляции одежды.

Похоже, что Self Collision Iteration Count - это самый неоднозначный параметр.

Во-первых, его значение можно поставить от 1 до 10, но MD3 не запоминает значение этого параметра выше 5. (и это также видно на графике ниже)

Во-вторых, его увеличение не всегда приводит к улучшению симуляции, а иногда даже наоборот.

График скорости имеет приблизительно логарифмический вид. Это значит, что сначала время симуляции растёт, а потом, начиная с некоторого значения - перестаёт расти, как бы сильно вы этот параметр не увеличивали:

Self Collision Iteration Count почти не влияет на время симуляции одежды в MD3

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

Ткань начинает импульсивно взрываться, если есть места, где ткань зажуёт меш аватара (в подмышках или в локте), при накрученном параметре Self Collision Iteration Count до 5 и больше. А при Self Collision Iteration Count 1 такого не происходит. Т.е. эти ошибки заживывания ткани игнорируются.

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

На видео ниже видны такие взрывы:

Вывод: параметр количества самопроникновений стоит накручивать (максимум - это 5, дальше можете не увеличивать, я думаю, что больше пяти он физически не работает), только если вам все другие методы не помогли и вы уверены, что у вас аватар не зажёвывает ткань.

Почему MD3 зависает и как с этим бороться.

Я заметил, что когда с тканью случается глюк (её где-то между мешем защемило и она начинает запутываться или её "рвёт" слишком резкое движение аватара), то программа вешает всю систему (т.е. все ядра работают на 100%), а еще бешено и непрерывно растёт потребление оперативной памяти.

Если вы видите подобные симптомы у себя, то можете сразу убивать процесс MD3_Personal_x64.exe. Шанс, что вы сможете остановить такую симуляцию почти нулевой.

Чтобы избежать этого, нужно тщательно следить за кучей факторов. Я приведу некоторые из них. Наиболее глючные сверху.

  • чтобы ткань на защемляло между мешем;
  • если происходит защемление, то чтобы параметр Self Collision Iteration Count был равен 1;
  • чтобы аватар никакой своей частью не двигался очень резко;
  • чтобы совпадал номер слоя для соприкасающейся ткани;
  • чтобы не было большой разницы плотности полигонов соприкасающихся тканей;
  • чтобы не использовались без крайней необходимости параметры Srinkage Weft и Warp (сжатие и расстяжение ткани по горизонтали и вертикали);
  • чтобы не использовался без крайней необходимости параметр эластичности (бывает лучше сильно завысить силу трения, чем стянуть одежду резинкой).

Number Of CPU In Use (сколько ядер использует MD4 для симуляции)

Обязательно поставьте параметр Number Of CPU In Use равным количеству логических ядер в вашей системе. К примеру, у меня вот такой процессор. В нём 6 физических ядер, но 12 логических. Соответственно, я выставляю Number Of CPU In Use = 12. Поскольку, по умолчанию, там стоит число 4:

Где искать Number Of CPU In Use

Чтобы найти параметр Number Of CPU In Use, нужно в меню Preferences нажать Simulation Properties, тогда откроется панель Property Editor, где он и находится.

Статья еще пишется. Заходите позже, чтобы узнать все секреты 😉

P.S. Девушка на заглавной картинке сделана мексиканским 3D художником Carlos Ortega Elizalde в Marvelous Designer 2 и Maya 2013 (текстуры в Mudbox, а рендер - Mental Ray). Оригинал смотрите там.



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





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

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

комментарий 31 к статье “Секреты Marvelous Designer. Почему MD зависает и не использует ядра на 100%”

  1. А не подскажите из-за чего ткань может частично игнорировать аватара? В некоторых местах, она как будто не видит его, проходит насквозь и зацепляется в другом месте.

    • Причин может быть очень много. Первое что приходит на ум:
      + аватар очень быстро двигается (нужно уменьшить Time Step);
      + у аватара очень крупные полигоны;
      + у ткани очень крупные полигоны.
      Причины того, что ткань цепляется:
      + резкая смена плотности полигонов на аватаре;
      + полигоны стыкуются под острыми углами.
      Общий совет — нужно увеличить качество симуляции.

  2. У меня вопрос к Вам, Юрий. Как я понял — Вы работаете в 3ds max.
    А почему симулируете одежду в Marvelous Designer, а не модулем Cloth?

  3. Подскажите пожалуйста, где менять параметр Number Of CPU In Use?

    • Ну что ж вы так? Давайте будем учиться пользоваться Help’ом 😉

      • Нашел, но он только при симуляции движения лекала работает?

      • незнаю какой там хелп имеешь ввиду, но ничего подобного нету. Все настройки перешарил, ничего. Вопрос: может из за того что у меня версия проги Enterprise? Спасибо.

        • Добавил в конце статьи картинку, где показал, как найти параметр Number Of CPU In Use.

  4. Насколько мне известно, у вас i7 x6?
    Интересно, как там показывает работу проца. 6 ядер и множитель на 2. На всех 12-и, какая загрузка в %-ах?

    Добавлю по теме, еще нужна очень тщательная «рихтовка» файла движения для аватара. С учетом НЕпроникновения частей меша самого аватара.
    И с учетом особенностей сложности узлов 3Д-одежды тоже. Особенно подмышки.

    • Я в статье написал, какая у меня загрузка процессора. Между 12 логическими ядрами она распределяется более менее равномерно +-20%

  5. Очень классная софтинка… Решил опробовать ее для создания занавесок, хоть это можно было сделать стандартными средствами 3Ds Max/Maya.

    Вообще *абсолютно* ничего не учил по этой проге, открыл и просто начал фигачить. Все очень интуитивно. Только вот как-то туговато работает.

    Процессор — AMD FX-8350 | Выставил «CPU In Use» — 8
    Particle Distance — сначала выставил 50, потом снизил до 30.
    Пресет — Normal. И оно как-то, туго симулировало (1 Кадр в 2 Секунды).

    Или это нормально для Marvelous Designer 3 и моего процессора ?

    http://i.imgur.com/SDxq3w9.jpg

  6. Смотрю Marvelous Designer 4 вышел, интересно на что они сделали упор… В производительность, функционал или что ?

    • Он не вышел. Просто сейчас идёт закрытое бета-тестирование.
      Я потестил. Из новых фич, что добавили, мне понравилась возможность работы с квадами вместо треугольников (но эта фича глючная и всё еще остаются треугольники), а также симметрия.

      • Понятно 🙂 Просто нигде не указано что это Beta.
        Ни в About меню ни в названиях раздач на трекерах…

        «Marvelous Designer 4 1.4.32.8325 Win64»

        • Да, это именно та версия, которую выдали сотне бета-тестеров для тестирования.

      • yuriki:
        Вы были в этих сотнях тестером, кажется.
        Квад в принципе не интересует.
        Но вот как там с FBX?
        Такая же глючная фича на сегодня?

        • На данный момент через FBX можно импортировать только меш и скелет (анимацию, морфы и всё остальное обещают прикрутить на протяжении бета-теста). Но вот уже вышла новая beta версия MD4 1.4.35.8392, но анимацию всё еще не импортирует.

  7. Надо полагать к Новому году прикрутят хоть импорт FBX с анимацией. После займутся экспортом.
    Вечные запоздания по «дорожной карте» уже у них становятся каноном.

  8. Заметил, что при Particles distance = 20…9, загрузка ЦП = 100%. При понижении до 5, загрузка пропорционально падает до 15%. Как такое может быть? Нормально ли это?

    • Всё верно. Particles distance — это величина, обратно пропорциональная количеству частиц. При каком-то значении количество частиц, процессор успевает их всех обработать и просто стоит ждёт пока MD пришлёт новую порцию.

      • Разве не наоборот? Чем меньше Particle Distance, тем плотнее сетка.

        • Именно так я и сказал: чем меньше particles distance, тем больше частиц.

          • Согласен. А почему тогда процессор стоит ждёт, пока MD пришлёт новую порцию? Точнее почему MD не присылает сразу очередную порцию?

          • Я исходный код MD не видел 😉 но чисто логически могу предположить, что при многопоточных вычислениях малого количества частиц больше времени тратится не на сами вычисления, а на то, чтобы определить, в какой поток отправить какую частицу.

  9. Добрый день!
    Подскажите, Вы обучаете программе Marvelous Desinger?

    • В данный момент нет. Но программка очень простенькая: при наличии большого желания её легко можно освоить самостоятельно.
      А может кто-то в комментариях отзовётся 😉

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

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