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

В интернете множество статей и роликов по адаптации и ретекстуированию всего ванильного!

Ну вот от нечего делать решил жахнуть такую небольшую статью, про моделирование, каких мало!

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


Идем во вкладку модификаторов, нажимаем на + рядом с edit mesh.


Разворачивается список, в котором выбираем polygon (красный квадрат)


С зажатой клавишей Ctrl выделяем полигоны.

Но проще, с зажатой левой кнопкой мыши обводим, потом отпускаем кнопку, и вот выделено несколько, если больше чем нужно, не страшно.

Потом уже с зажатой кнопкой Ctrl выделяем недостающие полигоны.

Далее в edit mesh ищем edit geometry и нажимаем detach, обязательно ставим галочку detach as clone, потому что мы не будем отделять в нашем случае от основной модели, таким образом мы просто клонируем выделенный участок.

У нас получилась еще одна модель. выделяем ее,

Немного отдалим ее от основной, но это не обязательно! Я так не делаю, но может кому то будет удобнее так работать, для этого идем в список модификаторов и ищем push

(push value 0.03 больше не нужно.)

Теперь поменяем цвет, зададим материал для удобства, идем в редактор материалов, если у вас вылезло табло slate material editor, то в вкладке modes нажмите compact material editor.

В итоге у вас вылезет такое табло.

тут выбирайте любой материал. в blin basic parameters - ambient задайте серый цвет.

specular level примерно 120, и перетаскивайте материал мышью на наплечник.

Теперь нам будет приятно и удобно работать с будущей моделью, теперь она отличается по цвету и по блеску.

Теперь работаем в editmesh

Удаляем ненужные нам полигоны, если такие у вас имеются, выделяем их и нажимаем delete на клавиатуре. (Для тех, кто не знает, где кнопка del/delete на клавиатуре,

можете найти ее в 3dmax в editmesh - edit geometry.)

Можете экспериментировать. Всегда можно вернуть действие назад на несколько шагов. Далее не все действия вам пригодятся, но если вы хотите работать в 3dmax то исследуйте их для ознакомления.

Теперь ровняем таким способом. в editmesh выбираем vertex, выделяем вершины (синие точки на модели), во вкладке edit geometry, внизу нажимаем collapse

Теперь нам нужно придать форму, такую какую мы хотим. способов может быть несколько, но в этом уроке только один из них.

Выделяем вершины, там где нам к примеру нужно поднять его, нажимаем soft selection (мягкое выделение), в falloff меняем значение на ваше усмотрение, чем выше значение, тем больше соседних полигонов будет задействовано.

Если к примеру где то у вас получилось не ровно. и надо поправить. в edit geometry нажмите make planar. неровно оно скорее всего не получится, но свойство make planar вам в будущем пригодится.

Также можно выделить несколько полигонов, и выровнять их и можно даже весь объект.

О том как выделить весь объект (сейчас это вам не нужно, но мало ли потом пригодиться), (ну как бы так сказать целый элемент объекта). В edit mesh нажмите на element и кликните на модель. Если нажать на make planar, то он станет ровной плоскостью.

Теперь поработаем с объемом, во вкладке модификаторов ищем shell.

В параметрах модификатора по умолчанию в outer amount всегда стоит значение 1,0 но нам к примеру надо толщину меньше, меняем значение на такое, какое вас наглядно устроит. Я поставил 0,5. Значение в inner amount увеличит с внутренней стороны.

В самом низу параметров модификатора shell есть 4 пункта, можно выделить поставив галочку внутренние, внешние стороны, и т.д. поставьте галочку где-нибудь, все равно.

Теперь переведите модель в edit mesh, либо правой кнопкой мыши по модели, convert to - convert to edibatle mesh, либо в списке модификаторов кликните на edit mesh.

В edit mesh (в самом модификаторе, не в моделе) нажмите на polygon, при этом выделится та группа полигонов которую вы выделили в shell, такая же особенность работает везде в 3dmax с любыми модификаторами.

Теперь в editmesh в параметрах где selection поставьте галочку ignore visible edges и кликните по внешней стороне модели, видите, выделился не один полигон, а вся лицевая сторона.

Также можно выделить и внутреннюю и боковую, с зажатой Ctrl любые несколько.

Теперь еще одна интересная функция в edit mesh. Очень нужная в моделировании. Выделите любую группу полигонов или полигон, и нажмите в вкладке edit geometry "Extrude", потом на выделенных полигонах нажмите и не отпуская кнопку мыши немного потяните в сторону.

Но я всегда проще делаю, рядом с extrude где значения стоит 0,0, если нажать один раз по стрелке, которая указывает вверх, то так же добавится новая площадь. Если в значениях указать к примеру -0,5 то ширина добавляемой пощади будет в половину меньше. если в 5.0 - то в 5 раз больше, если зажать стрелку и потянуть, то будет наращиваться пока тяните. Стрелка вниз делает дополнительную площадь, но уже в глубину.

Тут я сделал дополнительную площадь, затем уменьшил ее, и оттянул вглубь. могу выдвинуть еще площадь.

С этой функцией extrude можно творить чудеса до бесконечности, делать модели, вот к примеру. это сделано из примитива box - коробка, через edit mesh и функцию extrude, ну так же тут и еще один модификатор присутствует. meshsmooth

Найдите в списке модификаторов Meshsmooth - то без чего я не могу представить себе 3дмакс. Инструмент сглаживания. Если бы сетка основной модели была бы ровней, то и сглаживание было бы чище.

Удобно то что вы можете вернуться назад к editmesh поправить что то, добавить, не убирая meshsmooth сверху, в 3д максе эти модификаторы, это как слои в фотошопе.

Вот я вернулся в editmesh, и сделал еще 2 площади через extrude, вторую уменьшил.

Если модель готова, то можно приступать к созданию развертки UV, сделать это будет удобнее до модификатора meshsmooth.

Но и с мешсмутом порой тоже приходится делать, возвращаемся сначала к edit mesh и выделяем то что нам нужно, selection - ставим галочку ignore visible edges (об этом упоминалось выше) и выделяем лицевую сторону. Я мог бы выделить лицевую полностью, но так я смогу больше объяснить, как с UV работать.

Далее накидываем модификатор Unwrap UVW, он у нас оказывается сверху editmesh и ниже meshsmooth. В его свитке выбираем polygon, полигоны у нас уже выделены и нажимаем на кнопку с молнией, далее нажимаем Open uv Editor

У нас открывается такое вот табло, там нажимаем на яйцо с молнией и координаты выбранной части UV разглажены и качественны, а следовательно текстура на них ляжет хорошо.

Остальная часть модели (которая осталась) - в этом табло и выделяем, нажимаем квадрат с молнией(где модификатор), не выходя из окна Edit UVWs(можно закрыть конечно, это я к слову), потом в окне опять Quick peel(яйцо с молнией) получается такая вот картина, тут в окне будет удобно выделить все что еще нужно.

Вот тут по кругу я выделил, то что не выделил до этого на лицевой стороне, потратил на это секунд 30.

Забрали кусок лицевой стороны у задней планки, и добавили его к лицевой планке.

Так как внутренняя сторона нам не нужна, ее не видно, поэтому ее можно сделать меньше, чем лицевую. Выделяем ее и уменьшаем, затем раскладываем на Uv карте

Заключительный этап. возвращаемся к meshsmooth, если модель брони делается для игры, то полигонов нужно как можно меньше, потому в meshsmooth настраиваем параметры subdivision amount, interations стоит 1. но можно поставить 0, при этом модель не будет сглажена в полигонах, только нормали останутся сглаженными. показывать не буду, так как пример неудачный, настолько низко-полигональную модель придется конечно сгладить как надо.

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

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

Спасибо за внимание!


Перевод: Viewport

Скульптинг брони

Шаг 1. Торс

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

Продублируйте сабтул с телом (SubTool > Duplicate). Затем скройте ноги и руки ((Ctrl + Shift + drag)) и удалите скрытое (Geometry > Modify Topology > Del Hidden). Мы используем это как базовый меш для блокинга одежды.

Чтобы создать форму из этой геометрии, нам нужно будет воспользоваться Dynamesh. Выберите сабтул и кликните на Dynamesh (DynaMesh (Geometry > Dynamesh > Dynamesh). Настройте разрешение Dynamesh, чтобы получить нужный вам результат.

Во время скульптинга я использовал разрешение 256. Значение Blur было 0 или 1 с включенным ReProjected Dynamesh.

Используйте Clay и Move кисти, чтобы создать острые формы доспехов на туловище. Сконцентрируйтесь на силуэте и крупных формах до начала детализации. Вам нужно будет постоянно менять сетку с помощью DynaMesh (Ctrl + растянуть рамку на документе), чтобы поддерживать хорошее распределение полигонов.

Используйте кисть DamStandard создать определяющие границы и разделения между различными частями брони. После того, как основные части найдены, используйте комбинацию кистей Smooth и hPolish , чтобы сгладить поверхности брони.

Главный совет: Альтернативное сглаживание.

При использовании DynaMesh вы столкнётесь с полюсами - это когда к вершине сходятся 3 и более ейджа - в топологии. Используя обычную кисть Smoothing (Shift + Click) у вас всё равно могут остаться в сетке видимые недостатки. Тем не менее, вы можете использовать альтернативный режим сглаживания, чтобы исправить эти недостатки. Просто удерживайте Shift, и начинайте сглаживать, затем отпустите Shift, но продолжайте сглаживать сетку и ZBrush переключится в режим альтернативного сглаживания.

Шаг 2. Расширьте позицию ног.

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

Выберите Rotate (R) Transpose Tool, растяните линию от бедра к низу ноги и затем немного поверните.

Шаг 3. Создание брони для ног.

Снова сдублируйте тело, скройте всё , кроме левой ноги и удалите скрытое -- Delete Hidden.

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

Опять же мы будем использовать для хорошей сетки Dynamesh. Броня ног достаточно большая и громоздкая, поэтому мы работаем кистями Move и Clay, чтобы вылепить профиль брони.

На этом этапе мы набираем грубые массы, общие формы, поэтому не беспокойтесь о том, что вы тратите на это время. Используйте Clay кисть чтобы создать поверхности и кисть DamStandard, чтобы сделать прорези в геометрии. Для сглаживания используйте Smooth и hPolish кисти. Кисть hPolish идеально подходит для создания чёткого края, где стыкуются 2 поверхности, так как, например, на передней части голени.

Шаг 4. Покрытие брони для ног.

Для двух отдельных поверхностей в верхней части ноги и нижней, я использовал тот же самый метод.

Нарисуйте кистью маску на покрытии, выполните Extract (SubTool > Extract > Extract). Отрегулируйте настройку толщины, чтобы получить пластину нужной толщины. При нажатии кнопки Extract , вы увидите только превью нового меша, и когда вас устроят настройки, то нажимайте Accept (SubTool>Extract>Accept). Чтобы дальше работать с извлечённой геометрией, мы как и со всеми другими сабтулами используем Dynamesh. Чтобы отполировать геометрию, пользуемся кистью hPolish.


Шаг 5. Броня руки.

Для верхней и нижней части брони, замаскируйте место под кусок брони на руке. Снова сделайте Extract и создайте новые сабтулы. Только на этот раз значение толщины поставьте на 0. После того, как вы включите Dynamesh, то он закроет все дырки вверху и низу новой геометрии.

Для большой пластины на плече также используйте extract , но придайте небольшую толщину.

Используйте Move brush для создания общих форм, а потом кистями Clay и hPolish уточните изгибы геометрии. После того как крупные детали будут найдены, используйте DamStandard кисть, чтобы определить в доспехах сегменты.

Шаг 6. Создание шлема

Шлем сделан из 4 сабтулов. Для части шлема, который охватывает голову сзади и ремешка на подбородке, мы используем тот же метод маскировани и extract-а с настройкой толщины, как мы использовали и раньше.

Отдел козырька для шлема состоит из двух сабтулов. Также примените маскирование и extract вокруг верхней части головы и в районе ушей. Используйте Move brush и DynaMesh, чтобы сформировать нужную геометрию. Затем сдублируйте этот сабтул (Subtool > Duplicate) и создайте переднюю часть козырька.

Сгладьте поверхность шлема кистями Smooth и hPolish. Мы можем использовать Clip brushes, чтобы создать чёткие края и изогнутые формы шлема.

Выберите Clip кисти, удерживая при этом Ctrl + Shift , кликните на иконку с кистью и выберите нужную вам кисть, в данном случае -- Clip Curve brush.

Clip кисти работают на основе геометрии, созданной Clip Curve. Чтобы использовать Clip Curve brush, просто нажмите и удерживая, растяните прямую линию. Когда вы отпустите левую кнопку мыши, полигоны расположатся вдоль этой линии.

Чтобы создать кривую линию, нажмите Alt, и удерживая кнопку, создайте острый угол дважды кликнув, удерживая кнопку мыши в нажатом состоянии.

Если вам нужно переместить кривую, то нажмите пробел.

Шаг 7. Волосы.

Выберите сабтул с головой, замаскируйте место под волосы, сделайте extract (SubTool > Extract > Extract), создав при этом новый сабтул.

Для этого персоанажа я хочу заскульптить волосы широкими мазками и удержать этот уровень детализации до конца.

Начните формировать направление волос с помощью Clay и Standard кистей. Используйте DamStandard кисть, чтобы указать направление волос и сделать некоторые пряди. Добавьте цилиндр (Subtool > Append > Cylinder3D) и включите Dynamesh. Используйте Transpose tools, чтобы разместить хвост на своём месте.

Move кисть мы используем для создания общей формы, а кисти Clay и DamStandard -- для направления некоторых прядей волос. Хвост нам нужен как определения места, где будут располагаться волосы на момент ретопологии.


Шаг 8. Чистка сетки и Decimation

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

Нам нужно продесимейтить геометрию, но для начала мы сохраним копию модели как ZTool. Далее идём ZPlugin > Decimation Master и выбираем Pre-process All. Не всегда одно значение подходит для каждого сабтула, поэтому я предпочитаю десимейтить каждый сабтул в отдельности, подбирая настройки индивидуально для каждого сабтула.

Попробуйте применить такое значение, при котором будет минимальное количество полигонов, и визуально не будет никаких изменений. После того как все сабтулы будут продесимейчены, экспортируйте их -- Decimation Master > Export All Subtools или SubTool Master > Export to export all visible SubTools.


Создание полигонального меша брони

Шаг 1. Настройка сцены.

В этой части урока я расскажу, как создать "чистую" геометрию для брони нашего персонажа на основе грубой геометрии, которую мы создали в ZBrush.
Этот процесс сводится к личным предпочтениям и индивидуальным последовательным действиям работы. Некоторые предпочитают дальше делать доработку в ZBrush, другие используют ретопологию в ZBrush или 3ds Max. В этом уроке я использую новые инструменты моделирования в Maya 2014.

Так как я использовал описанный мною способ для всех частей брони, я расскажу только о том, как я создавал одну часть брони.
Для начала импортируем продесимейченные части брони в Maya и разместите их в новый слой и назовите "ZB". Во втором слое я буду использовать геометрию из ZBrush и назову его "Working".
В этот слоя я буду помещать геометрию, над которой буду работать в данный момент. Третий слоя я буду использовать для всех новых геометрий, которые я создам в Maya.
Я считаю этот способ работы очень удобным, так как я могу быстро переключаться между видимыми слоями, с которыми работаю.


Шаг 2. Процесс ретопологии.

Основной инструмент, который я использовал для ретопологии--это Modeling Toolkit (Edit Mesh > Show Modeling Toolkit). Я покажу процесс ретопологии на примере шлема.

Выберите продесимейченную в ZBrush геометрию шлема и добавьте её в слой "Working". В Modeling Toolkit > Transform Constraints > Other Surface выберите геометрию шлема.

Выберите Quad Draw (Modeling Toolkit > Mesh Editing Tools > Quad Draw)и начинайте размещать по сетке вершины. Используйте MMB, чтобы подвинуть вертекс, Ctrl--чтобы удалить, Shift -- создать полигон между 4 вершинами.

Используйте Quad Draw, чтобы создать половину нового меша. Топология плоских поверхностей не настолько сильно важна, однако старайтесь держать сетку равномерной и убедитесь в том, чтобы вдоль острых краёв шли дополнительные ейджи.

После того, как создана половина шлема, отзеркальте геометрию -- (Mesh > Mirror Geometry) , а затем объедините (merge) и выровняйте вершины вдоль центральной линии.

Выберите все фейсы геометрии и сделайте Extrude, чтобы создать толщину шлему. Экструдирование вовнутрь может инвертировать нормали. Проверьте их в Display > Polygons > Face Normals. Если они развёрнуты неправильно, примените Normals > Reverse.

Шаг 3. Добавьте crease.

Вместо добавления edge loop-а, чтобы создать жёсткий край, мы будем использовать Crease Set Editor. Для каждой геометрии выберите ейджи, которые нужно сделать жёсткими, во вкладке Crease Set Editor (Edit Mesh > Crease Set Editor) кликните New чтобы создать новый Crease Set. Вы можете легко добавить или удалить ейджи на любом crease set в окне Crease Set Editor.

Каждому объекту нужен будет свой собственный Crease Set. Как только объект сгладиться, все края остануться жёсткими и будут держать форму без надобности добавления ейдж лупов.

Шаг 4. Завершение и экспорт.

Продолжайте создавать новую геометрию для каждой части брони и назначайте новые crease сеты, где это необходимо. После того как все объекты будут готовы, удалите историю (Edit > Delete by Type > History) и сделайте экспорт каждой в отдельности части в Maya Ascii file, чтобы сохранить информацию по кризам. Выберите объект, идёте в File > Export Selection и устанавливайте тип файла -- mayaAscii.

Шаг 5. Импорт в ZBrush

В ZBrush вы можете удалить (Subtool > Delete) все первоначальные меши, которые мы делали для блокинга, за исключением головы, тела, глаз и волос. Затем идёте в ZPlugin > SubTool Master и выбираете MultiAppend, чтобы импортировать новую броню в MayaAscii формате.

Шаг 6. Сглаживание ейджей.

Чтобы увидеть кризы в ZBrush, кликните на иконку Draw Polyframe (Shift + F), и вы увидите маленькие ейдж лупы вдоль края. Подразделите сетку (Ctrl + D) несколько раз, и вы убедитесь, что кризы сделали край жёстким. Когда мы будем печь карту нормалей, этот край нам нужно будет чуть чуть смягчить, чтобы получить лучший результат на карте.

Чтобы смягчить края, после того как сабтул был подразделён 2-3 раза, удалите кризы, выбрав UnCreaseAll (Geometry > Crease > UnCreaseAll) и снова продивайдите модель. Вы увидите, что края теперь смягчены, при этом основная форма осталась.

Чтобы смягчить и отполировать края, используйте Polish by Crisp Edges, Polish by Features и Polish sliders в разделе Deformation. Сделайте это для всех сабтулов брони и мы продолжим детализацию.

Ткани представляют собой одну из групп динамических объектов и обладают свойствами эластичности, плотности и растяжения. Моделировать в Maya их можно двумя способами: как мягкие тела (Soft Body) либо как Cloth-объекты, то есть объекты из ткани. Мягкие тела более подходят для получения образцов ткани, не имеющих швов (развевающихся на ветру флагов, наброшенных на кровать покрывал и т.п.). Возможности Cloth-объектов гораздо шире - они моделируются по настоящим выкройкам и потому применяются не только для получения бесшовных объектов из ткани, но и создания одежды персонажей. Такая одежда может состоять из различных по своим характеристикам тканей: хлопка, шелка, шерсти и т.д. С вариантом моделирования тканей в виде мягких тел мы уже ознакомились на одном из предыдущих уроков, а этот урок посвятим динамике Cloth-объектов.
Работа с Cloth-телами реализуется через специальный модуль Maya Cloth, позволяющий создавать образец ткани (бесшовный либо со швами), обертывать ткань вокруг модели с естественной деформацией и формированием складок. В случае динамического персонажа полученная таким образом одежда будет дополнительно деформироваться при его движении, то есть также окажется динамической. Задача данного модуля - натянуть либо набросить ткань на указанную модель, для этого программа определяет характер взаимодействия ткани с моделью, учитывая геометрию, с которой ткань приходит в соприкосновение, и характеристики самой ткани. Проводимые для этого расчеты достаточно длительны, существенны и затраты системных ресурсов.

Теоретические аспекты

Технически создавать Cloth-ткань можно двумя способами: превращая в ткань существующие полигональные объекты или NURBS-поверхности либо получая ткань на основе предварительно подготовленных выкроек. Первый вариант проще, ведь для этого достаточно выделить исходный объект и запустить процесс превращения его в ткань, выбрав ответственную за это команду.

Технология создания ткани на базе выкроек достаточно сложна и включает прохождение нескольких этапов. Вначале формируется контурная выкройка - если провести аналогию с реальным моделированием одежды, то данный процесс может ассоциироваться с рисованием обычной швейной выкройки на листе бумаги. Если предполагается, что Cloth-объект будет представлять собой единственный кусок ткани, то в роли основы для такой выкройки может выступать замкнутая кривая либо набор кривых, образующих замкнутый контур. Если же Cloth-тело должно быть сформировано из нескольких сшитых между собой кусков ткани, то ровно столько же следует создать и замкнутых контуров (по контуру на каждый лоскут ткани). Количество контуров в контурной выкройке может быть любым, но они должны быть абсолютно плоскими, а значит, рисовать их можно только в окнах планарных проекций: Top, Front и т.д. Любым также может быть число задействованных при создании отдельного контура кривых, но координаты конечной точки одной кривой должны точно совпадать с координатами начальной точки другой кривой (иначе при последующих действиях программа выдаст ошибку). Кроме того, есть еще один важный нюанс: поскольку в дальнейшем на базе контуров будут создаваться лоскуты ткани, которые обычно требуется сшивать между собой, то следует заранее четко представлять себе расположение швов, предназначая для каждого шва отдельную кривую. Когда все контуры оказываются сформированными, то переходят к следующему этапу - для каждого контура создается плоскость-выкройка (ее принято называть панелью - panel), то есть, если продолжить аналогию, выкройка вырезается из бумаги. После этого из полученных выкроек формируются лоскуты ткани. Созданные лоскуты сшиваются между собой по соответствующим кривым. Затем модель, на которую должно быть наброшено либо одето изделие из ткани, превращается в объект коллизий с тканью (без данной операции ткань провалится сквозь модель и исчезнет вследствие тяготения) и производится настройка параметров коллизии, отвечающих за поведение ткани. И наконец, на последнем этапе запускается процесс симуляции ткани, по окончании которого в зависимости от разнообразных параметров одежда садится на персонаж точно по фигуре либо ткань просто набрасывается на модель.

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

Maya создает для Cloth-тел специальную полигональную сетку, оптимизированную для симуляции ткани. Принципиальная особенность такой полигональной сетки заключается в том, что даже при низком разрешении она ведет себя достаточно естественно при создании симуляции. Увеличение разрешения сетки обеспечивает получение еще более красивых и натуральных складок и изгибов, но при этом существенно удлиняется процесс симуляции. Уменьшение количества полигонов позволяет сократить временны е затраты на процесс подгонки изделия по модели, но может привести к потере естественности симуляции и появлению заломов в местах складок. Поэтому в каждом конкретном случае приходится искать разумный компромисс между уровнем разрешения полигональной сетки и естественностью поведения ткани. При этом стоит иметь в виду один важный момент: чем точнее (с учетом изгибов тела персонажа) с помощью лоскутов определяется форма силуэта одежды, тем лучше будет результат при меньшем разрешении лоскутов. То есть одежда будет вести себя более предсказуемым образом (швы окажутся менее растянутыми, а складки более естественными), уменьшится время просчета и снизятся требования к компьютерным ресурсам.

В Maya 8.0 работа с Cloth-объектами производится в режиме Cloth (в предыдущих версиях - в режиме Dynamics через меню Cloth ). Основные команды, требуемые для моделирования тканей, сосредоточены в одноименном меню Cloth (рис. 1). Это команды Create Panel (Создать панель), Create Garment (Создать предмет одежды), Create Seam (Создать шов), Create Collision Object (Создать объект коллизий) и Create Cloth Object (Создать Cloth-объект).

Рис. 1. Меню Cloth

Для примера создайте простую сцену из шара размером 1x1x1 и расположенной над ним замкнутой NURBS-кривой в виде прямоугольника (рис. 2). Прямоугольник нужно формировать не вручную, а инструментом Create a Nurbs square (иначе могут возникнуть проблемы, решение которых мы рассмотрим немного ниже), причем в окне проекции Top - рис. 3. Попробуем получить на основе данного прямоугольника кусок ткани и добиться того, чтобы эта ткань реалистично облегала шар. Выделите прямоугольник и создайте на базе кривой панель, воспользовавшись командой Cloth =>Create Panel (Ткани=>Создать панель) - рис. 4. Затем сформируйте по панели (она должна быть выделена) кусок ткани, применив команду Cloth =>Create Garment (Ткани=>Создать предмет одежды). Пока ткань выглядит как обычная плоскость (рис. 5) и имеет очень низкое разрешение полигональной сетки, при котором ни о каких складках не может быть и речи - для получения более сглаженной поверхности увеличьте в окне каналов базовое разрешение (параметр Base Resolution в области cpStitcher ) с 25 до 300 (рис. 6). Увеличьте число кадров анимации до 40. Если после этого сразу воспроизвести анимацию, то вы увидите, что под воздействием гравитации кусок ткани упадет на шар, пройдет сквозь него и исчезнет.

Рис. 3. Выбор инструмента CreateaNurbssquare

Чтобы этого не происходило, превратите шар в объект коллизий с тканью, выбрав из меню Cloth команду Create Collision Object (Создать объект коллизий). Прежде чем запускать анимацию, при выделенной ткани удалите кэш симуляции (команда Simulation =>Delete Cache - Симуляция=>Удалить кэш), поскольку в противном случае при воспроизведении анимации отображаться будет ранее записанный в кэш результат. После превращения шара в объект коллизий Cloth-тело ляжет на шар, правда в действительности ткань оно будет напоминать весьма слабо и в большей степени окажется похожим на жесткую пергаментную бумагу (рис. 7). Причин жесткости ткани две: неверное понимание программой реальных размеров шара и куска ткани и некорректные значения параметров, регулирующих расстояние, на котором ткань должна держаться от объекта, чтобы не проникнуть в него. И дело не в том, что в Maya значения управляющих данными аспектами параметров по умолчанию установлены неудачно, а в том, что значения соответствующих параметров тесно связаны с размером модели, а он в каждом конкретном случае свой.

Первая проблема устраняется путем увеличения значения параметра Solver Scale (Масштаб решателя). Данный параметр позволяет указать модулю Maya Cloth то, насколько модель большая, от чего кардинально зависит поведение надеваемой (набрасываемой) на нее ткани. Установленное по умолчанию для параметра Solver Scale значение 1 подходит только для маленьких моделей (носовой платок, платье для куклы и т.д.). Если модель большая (полотнище флага, платье для реального живого персонажа и т.п.), то значение данного параметра должно увеличиваться - чем модель значительнее, тем оно больше. Поэтому выделите ткань и установите названный параметр равным 10 (рис. 8). Стоит заметить, что подобный подход справедлив лишь в том случае, если у созданной модели не реальные, а уменьшенные размеры (как в нашем случае, когда у шара указан размер 1x1x1). Если размеры модели реальные, то увеличение параметра Solver Scale не требуется.

Для решения второй проблемы придется изменить сразу два параметра: Collision Offset (Расстояние до объекта коллизии) и Collision Depth (Глубина проникновения в объект коллизии). По умолчанию каждый из них равен 1, а в нашем случае шар имеет точно такой же радиус, поэтому значения данных параметров оказываются слишком большими. Выделите шар и уменьшите значения параметров Collision Offset и Collision Depth примерно до 0,2 (рис. 9). Удалите кэш симуляции (команда Simulation =>Delete Cache ) и вновь запустите анимацию - теперь Cloth-тело уже будет походить на ткань, но оно слишком сильно проникнет в шар (рис. 10). Правда, связано это уже не с тем, что настройки проникновения подобраны неверно, а с геометрией самого шара - по умолчанию число разбиений в нем по всем осям невелико, что сказывается на характере облегания шара тканью. Увеличьте число разбиений до 20 - ткань станет ложиться на шар уже вполне естественно (рис. 11). Сохраните сцену.

Рис. 8. Корректировка параметра SolverScale

Рис. 9. Изменение параметров CollisionOffset и CollisionDepth

А теперь попробуем добиться того же эффекта набрасывания ткани на шар, но получим ткань из NURBS-поверхности. Скройте Cloth-объект (Display=> Hide=> Hide Selection ), создайте NURBS-плоскость того же размера, что и замкнутый контур для только что скрытого Cloth-объекта, и расположите ее над шаром (рис. 12). Выделите плоскость и превратите ее в ткань при помощи команды Cloth =>Create Cloth Object (Ткани=>Создать Cloth-объект) - на самом деле это по-прежнему плоскость (то есть объект nurbsPlane , а не Cloth-объект, в чем можно удостовериться, например, в окне Outliner ), но с несколько иной структурой рис. 13. Если сразу запустить процесс симуляции, то результат окажется неутешительным (рис. 14), что и понятно, ведь разрешение плоскости минимально. Увеличим разрешение, установив в полях U Number и V Number (узел nurbsTessellate ) значение 20 (рис. 15), - поведение плоскости станет напоминать поведение ткани (рис. 16), хотя складки будут не столь естественными, как у ткани, созданной на базе выкройки.

Проводить симуляцию ткани можно не только через проигрывание анимации, но и путем локальной симуляции (команда Simulation =>Start /Stop Local Simulation -Симуляция=>Начать/Закончить локальную симуляцию). Отличие данного способа в том, что при его применении новые кадры анимации не создаются и данные в кэш не записываются. Правда, при использовании данного способа проблематично остановить процесс симуляции в нужный момент, поскольку не удается быстро добраться до команды Stop Local Simulation . Однако эта проблема легко разрешается, если временно перетащить соответствующее подменю на рабочую зону, щелкнув на двойной полосе под именем меню (рис. 17).

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

  • Transform constraints - привязывает указанные вершины либо исходные кривые ткани к определенной точке сцены;
  • Mesh constraints - обеспечивает привязку указанных вершин либо исходных кривых ткани к персонажу;
  • Cloth constraints - привязывает одну ткань к конкретным вершинам другой ткани;
  • Collision constraints - позволяет регулировать возникновение складок при симуляции ткани (то есть используется для управления процессом столкновения вершин ткани друг с другом);
  • Field constraints - обеспечивает управление ограничением реакции ткани на воздействие динамических сил;
  • Button constraints - позволяет привязывать к ткани полигональные объекты и NURBS-поверхности, например кнопки и пуговицы.

Попробуем в сцене с ранее смоделированным Cloth-объектом (она была сохранена) установить Transform-ограничитель. Создайте локатор, применив команду Create => Create Locator (Создать=>Создать локатор), и разместите его желаемым образом (рис. 18) - локатор нужен нам для того, чтобы привязать к нему ткань. Не снимая выделения с локатора, нажмите правую кнопку мыши на ткани и установите режим работы с вершинами (команда Vertex ), а затем при нажатой клавише Shift выделите вершину в одном из углов ткани (рис. 19). Примените команду Constraints =>Transform (Ограничители=>Трансформация). Очистите кэш симуляции и запустите анимацию - ткань опадет на шар, но один из ее концов останется на месте, то есть окажется как бы привязанным к той точке пространства, где он располагался до начала симуляции (рис. 20). Характер привязки регулируется в свойствах ограничителя (объект transformConstraint ) - рис. 21. Например, изменив значение целевого веса (параметр Goal Weight ) с 0 на 1, мы добьемся того, что конец ткани будет прикреплен не к исходной точке, а непосредственно к локатору (рис. 22).

С таким же успехом можно прикрепить к локатору и panel-кривую - попробуем это сделать. Удалите созданный ограничитель, выделив его в окне Outliner и нажав клавишу Del. Выделите локатор и при нажатой клавише Shift одну из кривых, на базе которых была построена панель, и примените команду Constraints =>Transform . Очистите кэш симуляции и запустите анимацию - теперь привязанной к точке пространства окажется уже одна из сторон ткани (рис. 23).

Усложним ситуацию - попробуем набросить на объект не кусок ткани, а простое сшитое изделие. Создайте сцену с плоскостью и вытянутым на ней по оси Z сглаженным Subdiv-кубом - для его сглаживания примените команду Display =>Subdiv Smoothness =>Fine (Отображение=>Subdiv-сглаживание=>Высокий уровень детализации) - рис. 24. Пусть это будет, например, имитация кровати. Попробуем создать для нее покрывало с оборками по бокам. Получается, что покрывало должно состоять из трех сшитых прямоугольных кусков ткани. Исходя из этого, создайте в проекции Top три прямоугольника, тщательно отрегулировав их положение в отношении куба (рис. 25). Последовательно для каждой из замкнутых кривых сформируйте панели, по очереди выделяя нужную кривую в окне Outliner и применяя к ней команду Cloth =>Create Panel (рис. 26). Получите на базе панелей соответствующие лоскуты ткани, также по очереди выделяя определенную панель и применяя к ней команду Cloth =>Create Garment (рис. 27). Теперь требуется сшить лоскуты. Выделите указанные на рис. 28 отрезки кривых и сшейте соответствующие лоскуты между собой при помощи команды Cloth =>Create Seam (Ткани=>Создать шов) - между лоскутами появится шов (рис. 29). Аналогичным образом пришейте второй лоскут - результатом станет получение единого Cloth-объекта (рис. 30).

Рис. 30. Вид сшитых лоскутов в проекции Top

Для сшитых лоскутов (это будет уже один объект cloth1) увеличьте базовое разрешение (Base Resolution в области cpStitcher ) до 300, а значение параметра Solver Scale до 10 и обнулите параметр Relax Frame Length (он определяет число кадров, предшествующих моменту начала воздействия на ткань гравитации) - рис. 31. Превратите Subdiv-куб в объект коллизий с тканью (Cloth =>Create Collision Object ) и уменьшите для него значения параметров Collision Offset и Collision Depth до 0,18 и 0,2 соответственно. Выделите в окне Outliner все три прямоугольных контура и переместите их над кубом (рис. 32) - лоскуты ткани также переместятся. Запустите симуляцию и оцените вид полученного покрывала. После этого при необходимости подрегулируйте размеры отдельных лоскутов путем масштабирования соответствующих прямоугольных контуров (обычно чрезмерно усердствовать при таком редактировании не рекомендуется, поскольку в более сложных конструкциях нарушаются связи с тканью и ее приходится создавать заново), а затем увеличьте базовое разрешение до 500. Это позволит добиться достаточно реалистичного собирания оборок у импровизированного покрывала (рис. 33).

Деятельность специалистов по технической анимации в разных компаниях называется по-разному, но сути дела это не меняет. Они устраивают разрушения, отвечают за динамику одежды и прочие симуляции. В этом уроке мы обсудим динамику одежды персонажа на примере Фроси – героини анимационного сериала «Джинглики ».

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

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

Итак, займемся динамикой одежды в программе Autodesk Maya 2014 на примере персонажа Фроси.


Персонаж мультсериала «Джинглики». Фото предоставлено Open Alliance Media

Возьмем нашего персонажа и начнем поэтапно создавать динамический сетап для юбки. В программе Maya для этого используют nCloth.

Часто персонажи имеют очень детализированную и высокополигональную одежду. Чтобы увеличить скорость просчета симуляции солвером (nucleus) программы, создают прокси-объекты (proxy). В роли прокси-объектов выступают низкополигональные копии одежды, на которых как раз и просчитывается симуляция, а на основную геометрию костюма мы только передаем деформации за счет различных деформеров (deformers). Низкополигональные копии увеличивают производительность и даже могут дать более красивый результат, чем если бы мы просчитывали всю одежду полностью.

Это оригинальная юбка:


А это юбка для прокси:


Элемент одежды персонажа мультсериала «Джинглики». Фото предоставлено Open Alliance Media

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


Но вернемся к нашей Фросе и ее прокси-юбке. Пора назначить на нее nCloth. Но если мы это сделаем, то юбка уже не будет следовать за перемещением персонажа в сцене. То есть, если мы загрузим нашу героиню в анимационную сцену и подвинем ее за контрол (control), юбка останется в центре глобальных координат, так как солвер «ничего не знает» о том, что у нас есть персонаж, и это именно его юбка, и именно за ним она должна перемещаться. Чтобы это исправить, мы выделим скелет Фроси за рутовую (главную) кость, потом выделим прокси юбки, пойдем в меню animation и выберем команду Smooth Bind.


Работа над элементами одежды для персонажа мультсериала «Джинглики». Фото предоставлено Open Alliance Media

Теперь, если перемещать девочку за контролы, прокси юбки всегда будет следовать за ней. Не помешает также перекинуть «веса» с исходной юбки на прокси при помощи команды Copy Skin Weights.



Работа над элементами одежды для персонажа мультсериала «Джинглики». Фото предоставлено Open Alliance Media

Обычно в студиях, где используется динамика одежды в анимационных сценах, персонажей всегда выставляют в Т-позу, чтобы при начале просчета одежды, она всегда была в исходном положении, в котором ее смоделировали. Если поза будет отличаться от исходной, нам поможет копирование «весов» с исходной геометрии. Ведь на исходной одежде они уже прокрашены корректно – это учли еще на этапе создания рига персонажа.

Теперь можно назначить nCloth на прокси юбки. Выделяем юбку, идем в меню nDynamics и жмем на команду Create nCloth.


Работа над элементами одежды для персонажа мультсериала «Джинглики». Фото предоставлено Open Alliance Media

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

Для начала надо настроить динамику по отношению к масштабу сцены. За это отвечает параметр Space Scale. В зависимости от размера персонажа по отношению к глобальному масштабу сцены, этот параметр нужно менять. В процессе использования Space Scale вы поймете, как он работает и в каких пределах его стоит выставить, чтобы подобрать значение именно под вашего героя. В моем случае он будет иметь значение 0.01.

Кроме того, следует обращать внимание на такие основные настройки, как Substeps и Max Collision Iterations. Оба параметра позволяют повысить качество просчета вашей динамики. Substeps отвечает за то, сколько промежуточных кадров будет просчитываться в межкадровом интервале. Например, если по замыслу ваш персонаж двигается очень быстро, то Substeps нужно повысить, иначе солвер не успеет просчитывать ткань, и она будет бажить. Max Collision Iterations устанавливает, сколько раз, максимум, солвер будет обращаться к вершинам вашего объекта для определения их последующего положения в пространстве. Его также стоит повышать при быстрых и сложных симуляциях. Параметр Time Scale отвечает за скорость протекания процессов при симуляции.


Работа над элементами одежды персонажа мультсериала «Джинглики». Фото предоставлено Open Alliance Media

Обычно, если вы правильно задали параметр Space Scale, то для настройки симуляции ткани можно выбрать один из пресетов и немного подкрутить его. Не будем сейчас углубляться в дебри всего, что там можно настраивать, – этому надо посвящать отдельный большой мануал. Выберем стандартный «майский» пресет. Для этого выделим прокси юбки, перейдем в Attribute Editor и нажмем в нем на кнопку Presets в верхнем правом углу, а из выпадающего списка выберем пресет tshirt, нажав команду Replace.


Работа над элементами одежды для персонажа мультсериала «Джинглики». Фото предоставлено Open Alliance Media

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

Если теперь мы нажмем кнопку play и запустим просчет симуляции, наша юбка будет свободно падать, пролетая сквозь персонаж. Чтобы это поправить, присоединим (приконстрейним) ее к телу и создадим объекты коллизии, от которых юбка будет отрабатывать. Для этого выберем прокси юбки, перейдем в режим выделения вертексов и обозначим их на поясе. Затем выделим тело персонажа и нажмем команду Point to Surface.


Работа над элементами одежды для персонажа мультсериала «Джинглики». Фото предоставлено Open Alliance Media

Таким образом мы «оденем» юбку. Теперь, если нажать кнопку play, юбка будет прикреплена к поясу Фроси, но будет проникать внутрь. Это происходит потому, что в данный момент Maya автоматически создала объект коллизии (Passive Collider), но не включила её, а только зафиксировала юбку на объекте. Чтобы включить коллизию, выделим тело персонажа и в Attribute Editor активизируем галку collide.


Работа над элементами одежды для персонажа мультсериала «Джинглики». Фото предоставлено Open Alliance Media

Для включения в коллизию дополнительных объектов (например, рук и головы), обозначим интересующий нас объект и выберем команду Create Passive Collider.


Работа над элементами одежды для персонажа мультсериала «Джинглики». Фото предоставлено Open Alliance Media

Это создаст объект коллизии, и при выполнении данной команды галка collide установится автоматически.

Теперь нужно сделать так, чтобы исходная ткань юбки наследовала трансформации, которые будут возникать на прокси-объекте при симуляции. Для этого мы можем объединить нашу высокополигональную юбку и низкополигональную прокси. Для этого выберем сначала высокополигональную юбку, затем низкополигональную, перейдем в меню animation и там нажмем команду Wrap.


Работа над элементами одежды для персонажа мультсериала «Джинглики». Фото предоставлено Open Alliance Media

Теперь можно скрыть прокси-геометрию, нажать play и увидеть, как исходная геометрия юбки опустится на Фросю.


Работа над элементами одежды для персонажа мультсериала «Джинглики». Фото предоставлено Open Alliance Media

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

Всем привет! Сегодня мы поговорим об одном из способов ускорить вашу работу в Maya 2016 или в более ранних версиях. А именно, как иметь всегда под рукой нужные вам инструменты.

Работаем эффективно в Maya

Вы наверное заметили что в Maya есть множество полочек Shelves на которых удобно расположились инструменты и каждый расположен в своей категории. И чтобы взять нужный нам инструмент нужно все время искать его на других полках или в раскрывающихся списках меню.



Можно облегчить поиск нужных инструментов собрав их на свою полочку. Вот так, например, выглядит моя полочка MY(Shelf).



У меня тут собрано все что нужно для быстрой и эффективной работы. И это здорово, потому что помогает мне в моей работе. И я очень надеюсь, что данный урок поможет и вам.


Первым делом нам нужно создать саму полочку Shelf . Для этого жмем на значок шестеренки как указано на рисунке.



Из открывшегося меню смело выбирайте New Shelf:


Не используйте пробелы в Maya!

Откроется окно, где нужно будет вписать имя вашей полки. Например, My_shelf . Символ нижнее подчеркивания не случайно. Дело в том, что Maya еще с древних времен очень не любит в названиях пробел. И я рекомендую во всех ваших названиях в программе использовать или нижнее подчеркивание, чтобы разделить название, или писать слитно, разделяя слово большими буквами. Например, MyShelf . И это еще не все. Также в названии нельзя писать цифры и знаки препинания.



У вас появиться закладка с вашей полочкой, но, она пока пустая. И мы сейчас займемся тем, что начнем заполнять ее нужными нам инструментами.


Заполняем полку инструментами

Открываем снова меню, в котором мы создавали нашу полочку (Shelf). Это находится тут:



Откроется окно с параметрами, где мы будет настраивать нашу полочку (Shelf):



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



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


Можете пока закрыть окно. Мы еще вернемся сюда для редактирования параметров.


Итак, для того чтобы добавить нужный вам инструмент на полку, нужно выбрать этот инструмент с зажатыми кнопками Ctrl+Shift . И он появится на вашей полке. Но, будьте внимательны, ваша полка должна быть открыта в данный момент, иначе вы добавите его на ту полку, которая будет активна.



Таким образом, я собрал несколько инструментов на полку. И даже добавил лишних. Сейчас мы отредактируем вид нашей полки под себя:



Для этого выберем из выпадающего списка Shelf Editor … и попадем в уже знакомое нам окно:



В правой части окна вы можете выбрать нужный инструмент и переместить его вверх, вниз или удалить его совсем – выбрав значок «мусорки». Можно заменить значок иконки инструмента в строке Icon Name – нажав раскрытую папку. Есть возможность подписать иконку инструмента поменяв значение в строке Icon Label . Поиграть настройками цвета и прозрачности.

Быстрый доступ к скриптам в Maya

Довольно часто есть потребность к быстрому доступу к скриптам. И у вас есть возможность иметь нужные и часто используемые скрипты под рукой. Для этого мы также поместим их на нашу полку.


Для начала откроем редактор скриптов:



Загрузим нужный нам скрипт: File – Load Script . Затем, из того-же раскрывающегося списка File выберем Save Script to Shelf .