Дарим цветы        21.09.2019   

Основы моделирования брони, одежды и т.д. Быстрый доступ к скриптам в Maya

Ткани представляют собой одну из групп динамических объектов и обладают свойствами эластичности, плотности и растяжения. Моделировать в 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).

Данное повествование довольно долгое и занудное, но если прочитать его внимательно и вдумчиво, то вполне можно научиться создавать и настраивать скелеты персонажей. Наличие опыта работы с программой обязательно, так как многие очевидные вещи не объясняются подробно. Старайтесь не делать лишних кликов и нажатий клавиш. Если ситуация вышла из-под контроля - не пугайтесь. Вы всегда можете откатиться назад с помощью команды Undo (кнопка «z»). Для более глубокого понимания предмета не лишним будет периодически обращаться к соответствующим разделам Help.

Basic human skeleton setup

Встречающиеся в тексте сокращения:
LMB – левая кнопка мыши
MMB – средняя кнопка мыши
RMB – правая кнопка мыши

Допустим, есть такая модель двуногого существа. Выглядит она не очень привлекательно, но это сделано специально, для наглядности.

Рассмотрим модель по частям.

Общее количество отдельных частей персонажа насчитывает 17. Именно столько костей нам и понадобится, чтобы создать для неё управляющий скелет.

Загрузите файл Dummy_mesh.mb . Если после загрузки модель не стоит ногами на полу, а лежит горизонтально раскинув руки - откройте окно Preferences и поменяйте вертикальную ось мировых координат с “Z ” на “Y ”.

Откройте файл ещё раз.

Joints (кости)

Команда создания костей (Joint Tool) находится в меню модуля Animation , для перехода в который нажмите F2 . С начала проверим правильность опций создания костей, выбрав Option Box команды Joint Tool.

Выставляем опции, как на картинке, и закрываем окно (Close).

Если по каким–либо причинам ваш курсор не в виде крестика (обозначающий режим создания костей) - не пугайтесь. Просто активируйте команду Joint Tool из меню команд:

опции создания костей:
- нажатие LMB создаёт новую кость в позиции клика,
- последующее нажатие LMB создаёт следующую кость иерархии в позиции клика.

изменение позиции костей при создании:
- нажмите и удерживайте LMB, перемещая курсор определите позицию новой кости, отпустите LMB для создания кости.
- нажмите и удерживайте MMB, перемещая курсор измените позицию последней кости иерархии.

Переключившись на вид side создадим кости позвоночника шестью последовательными нажатиями LMB: Hip –>Spine –> Chest –> Neck –> Head –> Head end Joint. Если кости получились слишком большие, то изменить их размер можно с помощью установок в окне Joint Display Scale..

Кость головы нужно выравнивать чётко по горизонтали (так надо для последующей настройки IK (инверсной кинематики)) Просто переместите конечную кость скелета с командой snap to vertex по оси Y .

Также, если вас не устраивают положения остальных костей, можно легко их передвинуть:
- выберите нужную кость
- включите режим перемещения (кнопка “w ”)
- активируйте режим редактирования Pivot Point (нажмите “insert ”)
- переместите кость в нужное положение
- выберите другие кости и переместите их
- нажмите “insert ” снова, чтобы выйти из режима редактирования Pivot Point.

Кости можно двигать и без активации режима редактирования Pivot Point, но тогда будет перемещаться вся выше имеющаяся иерархия от перемещаемой кости. (Попробуйте просто подвигать кости, без активации режима Pivot Point)

Не вращайте кости при редактировании их позиции! Значения Rotate X, Y, Z каждой кости должны быть “0”.

Теперь создадим отдельно кости ног (используйте вид сбоку - side ) и рук (вид сверху - top ). Тут есть один нюанс – нужно выдержать между костями бедра и голени достаточный угол для сгиба коленей (то же самое правило для предплечья и плечевой кости). Угол необходим для того, чтобы определить для IK направление сгиба сустава. Придётся также немного повернуть геометрию - параллельно костям.

Переместите кости рук и ног в центр их геометрии.

Теперь нужно их сдублировать, потому как рук и ног у персонажа – по две штуки.
Ноги дублируются предельно просто:
- выберите бедренную кость,
- проверив опции дублирования жмём Duplicate ,
- перемещаем вновь созданную кость простым добавлением знака «–» в её значение Translate X в окне Channel Box.

С руками немного сложнее, будьте внимательны, не делайте лишних «телодвижений»:
- выберите плечевую кость руки,
- создаём её дубликат (горячая клавиша дублирования Ctrl+d),
- группируем дубликат (Ctrl+g),
- изменяем атрибут группы Scale X «1» на Scale X «–1».

Получили зеркальный дубликат руки, по которому мы создадим новые (свежие) кости. Дубликат не годится, потому как имеет отрицательные значения локальных осей Scale и Rotate, что в дальнейшем будет мешать настройке IK и управляющих локаторов.

Используя snap to vertex (нажмите и удерживайте “V”) создаём кости правой руки.

Кликайте не точно во «вспомогательные» кости, а рядом, на некотором расстоянии. Snap сам совместит позиции костей. Иначе новые кости будут создаваться как иерархическое продолжение той кости, в которую вы кликните.

Удалите группу с дубликатом костей - они нам больше не понадобятся.

Теперь нужно присоединить руки/ноги к туловищу. Для этого используем команду Parent (горячая клавиша - "p")
- выбираем обе ноги (бедренные кости) + тазовую кость, жмём “p”,
- выбираем обе руки (плечевые кости) + кость грудной клетки и снова “p”.

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

Скелет готов, пришло время прицепить «мясо» к костям. Используем для этого команду Parent . Прикрепите каждую часть модели к соответствующей кости (сначала выбираем объект Mesh , затем соответствующую кость и жмём «p»). Если вы по ошибке прикрепили Mesh к другой кости – выберите Mesh объект и нажмите SHIFT + «p» (Unparent) - это отсоединит его от кости, затем прикрепите к нужной. Повращав кости (hot-key «e»), проверьте правильность привязки объектов к костям.

На этом работы с Mesh закончены, и чтобы сетка нам не мешала, назначим её в Layer, которому выставим тип отображения Reference. Это сделает Mesh «невидимым» для курсора, что позволит избежать ненужного выделения сетки при дальнейшей работе.
- создайте новый слой (Layer) кликнув по кнопке,
- двойным кликом на появившемся леере открываем окно Edit Layer
- меняем имя слоя
- цвет (помогает быстрее ориентироваться, когда слоёв много)
- тип отображения (Reference)
- нажимаем Save

Выбираем все Mesh объекты модели

Просто «рамочкой» выбрать все объекты не получится, потому как приоритет выделения у костей выше, чем у Mesh объектов. Поэтому последовательно, используя Shift «накликайте» все объекты один за другим. Другой (и более простой) метод решения данной проблемы - отключить на время отображение костей из меню Show –> Joints, и после этого спокойно воспользоваться «рамкой».

Назначаем выбранные Mesh объекты в наш Layer с помощью команды из, либо из меню по нажатию RMB на слое.

Режимы отображения слоя (Template, Reference, Normal) можно поменять в любой момент кликнув в квадратик рядом с цветом. При каждом клике один режим будет сменять другой (R - reference, T - template, blank - normal). Также легко можно включить/выключить видимость (Visibility) слоя (и соответственно всех объектов в нём находящихся) кликнув в квадратик с буквой V.

IK (инверсная кинематика)

Добавим в скелет немного инверсной кинематики для управления ногами и рукам,.но для начала убедимся что:
- режим “IKFK control” выключен, (галочка отсутствует),
- режим отображения точек Pivots включён (галочка присутствует).

Откройте окно опций создания инверсной кинематики, нажмите Reset Tool, Close.

Начнём с IK для ног: курсором-крестиком кликните в бедренную кость левой ноги, затем в кость ступни. Появившаяся зелёная линия с «усами» в области ступни, проходящая через кости ноги, и есть IK handle . Сразу переименуем его в L_Leg_ikHandle .

Розовый цвет сетки означает, что объект находится в непрямой зависимости от выбранного объекта. Так и есть – IK handle влияет на кости, а кости в свою очередь определяют положение Mesh объектов. Получается что между IK и Mesh не прямая зависимость, а через кости .

Самостоятельно создайте IK для остальных конечностей: правой ноги, обеих рук и для головы. Не забудьте правильно переименовать все IK.

Locators (локаторы)

Для управления скелетом (и персонажем в конечном итоге) мы будем использовать локаторы . В принципе, можно использовать и другие объекты (mesh, curves, selection handles и так далее), но после нескольких экспериментов, локаторы были признаны аниматорами как наиболее удобные.
- Создаём локатор командой Create -> Locator,
- уменьшаем его огромные размеры до приемлемых (Scale - «r ») и перемещаем в кость Hip (используйте snap to vertex для точного позиционирования, отключите отображение слоя с геометрией, чтобы не попадать в вершины mesh объектов).

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

Локатор головы расположите немного впереди скелета, но точно напротив кости головы (смотрите рисунок внимательно).

Добавим ещё 4 вспомогательных локатора, которые будут определять направление коленей и локтей (по сути, продольное вращение рук и ног). И ещё один – для макушки головы. Используя snap to vertex поместите их напротив коленей, локтей и точно над костью головы.

Аккуратненько переименовываем локаторы.

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

Constraints (привязка)

Для того, чтобы локаторы приобрели силу управления, соединим их с костями и IK посредством констрейнов :

Point (hot-key Alt + p) - привязка по перемещению (Translate),
Orient (hot-key Alt + o) - привязка вращения (Rotate),
Pole Vector (hot-key Ctrl + p) - направление вектора инверсной кинематики.

Небольшое отступление:

Каждый тип объекта в сцене имеет своё значение приоритета выделения (Selection Priority). Например, IK имеет приоритет 4, а локаторы 3. Поэтому, если два объекта визуально перекрывают друг друга то при клике (или селекции рамкой) будет выбран тот (те), у кого приоритет больше. Будьте внимательны, пользуйтесь окном Outliner. Изменить настройку приоритетов можно в окне Preferences.

Итак, приступим. Точно соблюдайте порядок выделения объектов:

HIP (таз)
выбираем Hip_locator + Hip (joint).
не снимая выделения, последовательно назначаем Point constrain и Orient constrain.

Получили зависимость позиции и вращения тазовой кости от локатора "Hip_locator". Попробуйте подвигать и повращать его, чтобы посмотреть результат: вместе с локатором вращается и перемещается весь скелет. Это нормально, потому как IK рук и ног пока не прикреплены к своим локаторам. Идём дальше, скоро всё будет в ажуре!

SPINE (позвоночник)
Spine_locator + Spine (joint) >> Orient constrain.

Установили зависимость вращения кости спины от локатора Spine_locator. Теперь повращайте Hip_locator - кость спины смещается, а её локатор остаётся на месте, что не совсем удобно. Исправим это, добавив зависимость перемещения локатора спины от положения кости спины:

Spine joint + Spine_locator >> Point Constrain.

Повращайте Hip_locator снова. Теперь всё правильно - Spine_locator движется вместе с костью спины. Также настроим локатор грудной кости:

CHEST (грудная клетка)
Chest_locator + Chest (joint) >> Orient constrain - зависимость вращения грудной кости от её локатора.
Chest (joint) + Chest_locator >> Point constrain - привязка позиции локатора к грудной кости.

Ноги, руки и голова потребуют немного больше внимания, потому как для их управления используется по два локатора.

LEGS (ноги)
L_Leg_locator + L_Leg_ikHnadle >> Point Constraint – привязка позиции IK к локатору ноги.
L_Leg_locator + L_Foot joint >> Orient Constraint – зависимость вращения кости ступни от вращения локатора.
L_Knee_locator + L_Leg_ikHnadle >> Pole Vector Constraint – теперь коленный локатор определяет вращение ноги.

Те же настройки для правой ноги сделайте самостоятельно.

HANDS (руки)
L_Hand_locator + L_Hand_ikHnadle >> Point Constraint - привязка позиции IK к локатору руки.
L_Hand_locator + L_Hand joint >> Orient Constraint - зависимость вращения кости руки от вращения локатора.
L_Elbow_locator + L_Hand_ikHnadle >> Pole Vector Constraint - вращение руки при перемещении локтевого локатора.

То же самое - для правой руки.

HEAD (голова)
Head_locator + Head_ikHnadle >> Point Constraint - направление головы.
Head_Top_locator + Head_ikHnadle >> Pole Vector Constraint - наклон головы в стороны.

Если теперь включить отображение Mesh, то можно наблюдать неестественно свёрнутую на бок голову. Исправить это очень просто: выберите IK головы (Head_ikHandle) и измените значение атрибута Twist с нуля на 90 .

Эту проблему можно было бы совсем избежать, если прикреплять Mesh к костям после всех настроек скелета.

NECK (шея)

Последняя не задействованная кость в скелете – шейная. Для её управления добавим локатору макушки головы два дополнительных атрибута, которые будут наклонять шею вперёд/назад и вправо/лево.

Выберите Head_Top_locator, открываем окно редактора дополнительных атрибутов из меню Modify > Add Attribute...

Добавляем два атрибута Neck RX (наклон шеи вперёд/назад) и Neck RZ (наклон шеи в стороны).

Теперь нужно связать эти атрибуты с вращением шейной кости по соответствующим осям X и Z.

Для этого:
- из меню открываем Connection Editor,

Выбрав Head_Top_locator, загружаем его атрибуты в левую часть окна (кнопка Reload Left),
- выбираем шейную кость Neck (joint) и загружаем в правую часть (кнопка Reload Right),

Находим в левом столбце наши дополнительные атрибуты (в самом низу), а в правом разворачиваем атрибут Rotate нажав на плюсик напротив,
- соединяем соответствующие атрибуты - сначала выбирается атрибут в левом окне, затем атрибут в правом окне.

Не пугайтесь, если вы случайно соединили не те атрибуты. Повторное нажатие на атрибут в правом окне отсоединит атрибуты.
Проверим настройку на деле - выберите локатор макушки головы, левым кликом выберите атрибут Neck RX , и средним кликом подвигайте в окне проекции. Также проверьте работу второго атрибута - Neck RZ .

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

С настройкой покончено, осталась парочка косметических моментов для удобства работы - и всё!

Hide IK handles.

В окне Outliner выбираем все объекты инверсной кинематики (ikHandles), и делаем их невидимыми с помощью команды Hide Selection (hot-key Ctrl + h)

Hide all Joints

Из меню Show снимите галочку напротив объекта joints . Это выключит отображение костей скелета в текущем окне проекции. Скрыть кости командой Hide Selection нельзя, потому как вместе с ними пропадёт отображение Mesh объектов модели.

Таким образом, мы убрали все объекты, мешающие выбору управляющих локаторов.

Lock unused locator’s attributes.

«Залочим» лишние атрибуты локаторов, которые не используются в управлении скелетом. Lock означает запрет на изменение значений атрибута.

Scale - абсолютно бесполезный атрибут для всех локаторов . Выбираем все локаторы в окне Outliner и «лочим» атрибут Scale X, Y, Z. Для этого проведите LMB по атрибутам Scale в Channel box, и в меню команд выберите Lock Selected.

Rotate – этот атрибут не понадобится локаторам . Также «лочим» атрибуты вращения этих локаторов с непринуждённой лёгкостью.

Translate – чтобы случайно не сдвинуть локаторы спины и грудной клетки - «залочим» у них атрибуты перемещения по всем трём осям. Не переживайте - это не повлияет на Point constrain этих локаторов и их костей. Просто «ручками» подвинуть эти локаторы больше нельзя.

Make Unused Attributes Non Keyable.

Теперь уберём все залоченные атрибуты локаторов из отображения в Channel Box, сделав их Non Keyable .
- Выберите все локаторы ,
- откройте окно редактора Channel Control.

Убедитесь, что присутствует галочка в опции “Change all selected objects of the same type” (это позволит изменять атрибуты сразу у всех выбранных локаторов).
- Выбираем атрибуты Scale и Visibility,
- «перекидываем» выбранные атрибуты в раздел Non Keyable нажатием кнопки «Move >>».

Не снимая выбора с локатором, смотрим на Channel Box - атрибуты Scale и Visibility пропали из Channel Box.

Тут может возникнуть вопрос - почему мы не «залочили» атрибут Visibility также как остальные? А потому, что тогда мы не смогли бы выключать/включать отображение локаторов в окне проекции. А убрали из Chanel Box, потому что данный атрибут никак не используется в управлении скелетом.

Выберите только локаторы коленей, локтей, макушки головы, и направления головы , и уберём у них атрибут Rotate .

И последнее, у локаторов Spine и Chest сделайте Non Keyable атрибуты Translate .

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

Если же вы дочитали всё до конца, но сами ничего не делали - загрузите проект Dummy_skeleton.mb .

Архив с проектами для этой части: .

Сразу небольшая оговорка – в статье описывается процесс создания модели NPC для ЧН или ЗП. Однако для ТЧ суть остается та же, меняется лишь скелет. Как вариант, можно сделать все по статье, а потом конвертировать в ТЧ. (как легче всего это сделать, подробно описано в статье). Таким образом вы получите модели под все игры серии с минимальными усилиями.

Для удобства восприятия урок разделен на три части – «Maya», «3DS Max» и «Настройка в SDK».

Maya

Для работы вам потребуется Autodesk Maya 8.5 или Autodesk Maya 2008 с установленными плагинами из пакета X-Ray Asset Tools от bardak"а.

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

Ограничения

1. Модель должна состоять из треугольников (то есть не должно быть ни одного четырех и более угольного полигона). Если вы не уверены в соблюдении этого условия или же уверены в его невыполнении, то проделываем операцию под названием триангуляция (автоматическое разбиение модели на треугольники): выделяем модель, нажимаем кнопку Mesh , затем выбираем пункт Triangulate :

2. В модели должно быть приемлемое количество полигонов. Точного ограничения нет, но делать больше 12000 точно не стоит – лагов не избежать. Для справки, модели от GCS в среднем имеют по 6000 полигонов. Если в вашей модели много больше, чем положено, то оптимизируем ее любым удобным вам способом. Самый легкий – Mesh -> Reduce
3. Размер модели должен соответствовать естественным размерам человека. Легче всего импортировать в сцену модель NPC из игры и подогнать свою инструментом «scale»
4. Модель должна быть с UV координатами, текстурой в формате DDS и X-Ray шейдером.
5. Модель должна находиться в начале координат.
6. Перед началом привязки модели к скелету, выполняем еще одну несложную операцию:

Edit -> Delete all by type -> History

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

Привязка модели

Для начала импортируем в сцену с нашей моделью визуал любого NPC из архивов игры. Удаляем меш. Таким образом, в сцене остается только ваша модель и скелет из игры. Теперь необходимо нацепить меш на скелет. Лучше всего менять именно модель, оставляя скелет неизменным, во избежание проблем с шейпами. Хотя плагин экспорта должен возвращать положения костей в исходные, происходит это почему-то не всегда, так что лучше перестраховаться).

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

1. Выделяем модель и скелет, затем жмем Skin , в открывшемся списке выбираем пункт Bind Skin , нажимаем на кубик, напротив Smooth Bind :

2. В открывшемся окне делаем следующие настройки:

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

Модель требует дополнительной настройки, однако уже на данном этапе можно проверить ее работоспособность, экспортировав в SDK и подставив в игру, как описано ниже.

3. Снова выделяем модель. Развесовка модели правится инструментом Paint Skin Weights tool , а находится он тут:

Обратите внимание, снова нажимаем на кубик, а не на надпись. Если вы все сделали правильно, то ваша модель превратится в черно-белую, а справа появится окно настроек инструмента.
Попробую вкратце объяснить принцип работы с Paint Skin Weights tool :

1. Список костей скелета, работа ведется с выделенной костью, в данном случае это «Bip01_l_clavicle».
2. Образно выражаясь, место, где можно указать радиус кисти инструмента, которой вы мазюкаете по несчастному и ее прозрачность (Opacity), если работали в фотошопе, то поймете, о чем я.
3. Четыре режима работы кисти:
3.1 Replace – заменяет значение влияния кости на вертексы, попадающие под влияние кости на заданное (произведение степени влияния на прозрачность (Opacity x Value)).
3.2 Add - добавляет к имеющемуся значению опять же произведение степени влияния помноженное на прозрачность.
3.3 Smooth – сглаживает значения. (Если простым языком, то у вас есть белое пятно на черном фоне, мазюкаем и получаем белое пятно с серыми границами)
3.4 Scale – штука опасная, не трогаем вообще.
4. Value – степень воздействия кисти (0 – черный, 1 – белый).
5. Наглядное представление влияния кости на модель.

Собственно, все. Выделяем все кости по очереди и мазюкаем кистью до получения удовлетворительных результатов. Для удобства открываем еще одно окно майки, импортируем модель из игры и смотрим, как какая кость влияет на что. Пытаемся повторить с поправкой на то, что модель у нас немного отличается. Крутим суставы, чтобы посмотреть привязку в динамике, но не забываем нажимать «Edit» - «Undo», вручную на место кости никогда не ставим.

После пары дней мучений у нас получится что-то более-менее удовлетворяющее требованиям человекоподобного существа. Выделяем меш (скелет не нужно), нажимаем File –> Export selection , выбираем формат (X-ray skeletal object ) и кнопку Export . Если все сделано правильно и по гороскопу благополучный день, то экспорт пройдет удачно (зависит именно от гороскопа, так как часто случаются рендомные вылеты, и их причина мне неизвестна).

Работа в Maya на этом закончена.

3DS Max

Сразу предупрежу – в Maya можно гораздо проще и быстрее получить удовлетворительный результат, нежели в Max, однако он более распространен и стабилен, так что попытаюсь объяснить, как сделать подобие описанных выше действий в максе.

Итак, приступим.

Вам понадобятся Autodesk 3DS Max 8 и плагин экспорта.object.
Для удобства постараюсь придерживаться структуры первой главы.

Ограничения на модель:

1. Модель должна находиться в центре координат.
2. В модели должно быть приемлемое количество полигонов, точного ограничения нет, но делать больше 12000 точно не стоит – лагов не избежать. Для справки, модели от GCS в среднем имеют по 6000 полигонов. Если в вашей модели много больше, чем положено, то оптимизируем ее любым удобным вам способом. Самый легкий – назначить модификатор «optimize», однако тогда побьются UV координаты.
3. Размер модели должен соответствовать естественным размерам человека.
4. Модель должна быть затекстурирована, на ней должен быть x-ray материал.
5. Модель должна быть представлена в режиме «Editable Mesh», для этого выделяем модель, нажимаем правой кнопкой на рабочей области, в открывшемся списке выбираем пункт Convert To и далее Convert to Editable Mesh :

Пожалуй, всё.

Небольшое лирическое отступление на тему скелетов: Существует как минимум два способа импортирования скелета из игры в 3DS Max – через OGF2SMD и через FBX . Оба способа имеют свои плюсы и минусы. Например, при добыче скелета при помощи OGF2SMD последние кости в ветках получаются очень длинными, а при помощи FBX некоторые кости получаются настолько маленькими, что очень неудобно в них потом тыкать. Я выбрал OGF2SMD.

Вообще, после импорта в 3DS Max скелета, нужно дорисовывать в конце каждой ветки еще по одной кости, но я уже сделал это за вас, так что просто берем файл из архива:

1. Загружаем «Эколог.max»
2. Нажимаем File –> Merge , (ваша модель должна быть формате.max) и импортируем будущего NPC в сцену с экологом

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

6. Нажимаем на модель, затем на кость root_stalker :

В появившемся окне ничего не меняем, только нажимаем Initialize .

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

Уж извините, не буду описывать принцип работы с модификатором Physique, в интерете полно статей на эту тему, например, - эта: (вас интересуют только разделы «Physique» и «Настройка вершин»).

Внимание, есть один очень важный нюанс. 3DS Max не экспортирует кость, если к ней или к последующим в иерархической структуре не привязано ни одного вертекса. То есть, надо ко всем последним костям в ветках приаттачить хотя бы по одному вертексу.

Так или иначе, после пары лет мучений, модель оказывается привязанной более-менее правильно. Так же, как и в Maya, проверяем, правильно ли деформируется оболочка, поворачивая суставы. Опять-таки, на место возвращаем их только операцией Undo (Ctrl+z), вручную никогда. В итоге, у вас должно получиться что-то вроде этого (если делали как я, по вертексам):

Настройка привязки окончена, приступаем к экспорту модели в формат .object :

1. Выделяем нашу модель.
2. Нажимаем на молоточек в правом верхнем углу экрана (1), затем кнопку More... (2), в открывшемся списке выбираем XRay-Export (3), затем, естественно, OK (4).

Откроются настройки экспорта. Там нажимаем Export Skin. В открывшемся окошке вводим имя модели и директорию сохранения.
Все, работа в 3DS Max закончена.

Настройка в SDK

Для работы потребуется X-Ray SDK 0.4 .
(иллюстрации, к сожалению, сняты с переведенной версии SDK - прим. ред.)

Итак, приступим:

1. Открываем АЕ (Actor Editor ), загружаем сделанную ранее модель.
2. Изучаем поле с параметрами модели:

В разделе Object (1) нас интересует лишь последнее поле, User Data (2). В нем можно прописать путь к конфигу вашей модели. Если оставить поле незаполненным, то движок игры поставит значения урона вашей модели по дефолту. Еще, как вариант, чтобы не создавать лишних бумажек, можно прописать путь к конфигу NPC в броне, схожей по характеристикам с вашей. Стандартный вид – "#include "models\capture\нужный_конфиг.ltx ".

В разделе Material необходимо настроить поля Texture . Если путь к текстуре в 3D-пакете был указан неправильно, Shader (ставим models/model, если не хотим особых изысков типа полупрозрачности; если хотим, то ставим то, что считаем нужным для достижения необходимого эффекта) и Game Mtl (тут выставляем default_objec t, опять же, если не хотим изысков).

В разделе Motions дважды щелкаем мышкой на поле напротив Motion reference , в открывшемся окне нажимаем на треугольничек возле Actors (1), затем в открывшемся списке ставим три галочки как на картинке (2). Нажимаем OK .


Перевод: 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. Сделайте это для всех сабтулов брони и мы продолжим детализацию.

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

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

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


Идем во вкладку модификаторов, нажимаем на + рядом с 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 минут.

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

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