Уроки: 3ds Max

Привязка персонажей в 3ds Max: Physique, Skin



Грибанов Юрий
– работаю Game Developer’ом около 8 лет. Участвовал в разработке таких проектов как:  Златогорье, С.М.Е.Р.Ш, Спарта (SPARTA), Золотая Орда (Golden Horde, The), Восточный Фронт (UberSoldier), Восточный Фронт. Крах Эненербе (Crimes of War), Трудно быть Богом (Hard To Be a God), Пушечное мясо (Cannon Folder).



Начнем с того, что у нас есть некая модель человека, для которой нам надо сделать скелет и привязать физикой (рис. 1). За основу возьмем простую модель.

Рис. 1

Большинство любопытных, которые пытались сами изучить Интерфейс и панели 3ds Max, читая ту или иную литературу, скорей всего находили стандартный скетелет, очень похожий на человеческий (Biped).  Напомню:

Вкладка Create – Systems – Biped (рис. 2)

Теперь в окне Perspective создаем Biped до размера более-менее схожего с нашей моделью, после чего отпускаем клавишу мышки (рис. 3).

Рис. 3

Скажу сразу, что в Max’e скелет имеет несколько типов: мужской, женский, классический, современный. На самом деле как выглядит скелет, не имеет значения, нас интересует больше всего расположение суставов, где и под каким углом они находятся. Чтобы с оптимизировать работу, я делаю скелет в виде отображения боксов, для простоты его настройки. Для этого необходимо выделить весь скелет и перейти на кладку: Edit – Object - Properties и в открывшемся диалоговом окне поставить галку Display as Box.

Перейдем на вкладку Motion (рис. 4)

Рис. 4

Включаем режим редактирования скелета (Figure Mode), и начинаем двигать, скалировать, вращать Biped так, чтобы суставы конечностей совпадали с моделью человека. Обратите внимание, что если вы не включите данный режим, а начнете сразу скалировать перемещать или вращать скелет, то после нажатия данной кнопки, ваш скелет сбросит параметры на начальные. Также появилась вкладка Structure, в ней находятся параметры созданного нами скелета (Количество пальцев, суставы ног, шейные позвонки и т.п.). Экспериментируйте, и посмотрите, что из этого у вас получится.

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

В итоге, у вас должно получится, что - то подобное (рис 5.).

рис. 5.

В 3ds Max существует несколько модификаторов для привязки модели к костям, оба они находятся на вкладке Modify, и называются Physique и Skin. Разница в них не велика, а именно: модификатор Skin имеет возможность работать не со всей иерархией костей, а только с выбранными вами, так как Physique не имеет такой возможности, конечно можно извратиться и порезать модель на несколько кусков и каждый кусок модели привязывать отдельно, но мне кажется это чересчур. А второе преимущество Skina в том, что у него есть возможность привязывать кисточкой, для особо ленивых, кому не хочется выделять вертексы (Vertex (вершины)), достаточно  выбрать кость и нарисовать степень влияния кости на ту или иную область модели. В данном уроке я разберу привязку модели модификатором Physique.

Перейдем на вкладку Modify, выделяем нашу модель и в раскрывающемся списке находим модификатор Physique (рис. 6).

Рис. 6

Чтобы осуществить привязку, необходимо при выделенной модели нажать на клавишу Attach to Node и дальше выбрать главную кость, в нашем случае - это Bip01. Если вы все сделали правильно, то появятся линии связи, отображающиеся оранжевым цветом, как на рисунке 6. При этом у вас выскочит диалоговое окно с параметрами привязки, на данный момент они нас не интересуют и вполне устраивают настройки по умолчанию, единственное что, можно по экспериментировать и сначала выбрать Deformable (мягкая), а потом Rigid (жесткая) привязку и посмотреть какая разница между ними и что вам больше подходит. При использовании деформируемой привязки,  в местах сгиба у модели будет более ровная и округлая форма.

Рис.7

Рассмотрим модификатор Physique изображенном на рисунке 7, у него есть 5 режимов работы: Envelope, Link, Bulge, Tendons, Vertex. При выборе режима Envelope вокруг выбранной вами кости будет появляться 2 сферы (сфера в сфере), внутренняя будет отображать 100 % влияние кости на область, внешняя сфера, то - что будет влиять с каким- то коэффициентом.  Vertex режим – это когда выбранным вами вертексам вы будете назначать кости и вручную задавать степень влияния кости на вертекс.  Остальные режимы предназначены для работы с костями и создания мускул.

Рассмотрим набор кнопок, операции работы при осуществлении привязки (рис. 8).

Vertex Type (в данном случаем подразумевается выделение вертексов):

Синий цвет – вертексы, которые ни к чему не привязаны и не подвержены влиянию костей.

Зеленый – вертексы, привязанные Rigid режимом.

Красный – Deformable режимом.

Вертексы привязанные к одной кости отображаются более светлым светом, к 2 и более – темным. 

Blending Between Links – ставит ограничение, количество костей на вертекс.

Операции:

Select – режим выбора вертексов.

Select by Link – режим выбора костей (если выбрать кость, то отобразятся вертексы, на которые оказывает влияние данная кость).

Assign to Link – на выбранный вами вертекс добавляет влияние выбранной вами кости.

Remove from Link – обратное действие от Assign to Link.

Lock Assignments – заблокировать выбранные вами вертексы (Это нужно для того чтобы назначит степень влияния кости на вертекс, иначе не будет доступна кнопка Type-In Weights).

Unlock Assignments – разблокировать вертексы.

Type-In Weights – открывает окно для редактирования влияния костей на вертекс.

Hide – Скрыть. UnHide ALL – показать/отобразить скрытые вертексы.

Начнем привязывать модель. Для удобства визуально разобьем модель  на секторы, начиная с простых участков и переходя к более сложным (рис. 9).

Ноги, область таза, руки, голова, живот и плечи.

Рис. 9

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

Выделите вертексы, находящиеся на пересечении стопы и голени, блокируем (Lock Assignments) и назначаем веса для вертексов (Type-In Weights) (рис. 10).

Рис. 10

Места сгибов (область суставов), лучше всего привязывать к 2 и более костям, для получения более ровной и округлой формы модели (рис. 11, 12).

Рис. 11

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

После того как вы завершили привязку ноги, щелкните на кнопке Figure Mode (режим редактирования скелета), чтобы скелет модели снова встал в стандартную позу.

Рис. 12

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

Чтобы проверить, не осталось ли не привязанных вертексов, выбираем в опции Vertex Type  синий цвет и выделяем модель, если вертексы остались они отобразятся на экране.

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

Skin

По сути Skin такой же модификатор, как и Physique, принцип работы у него аналогичен.

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

Начнем с того что перейдем на вкладку Hierarchy (Иерархия) и обнулим параметры трансформации нашей модели (рис. 1). После чего для удобства выставим центр модели (pivot) в  нули по всем координатам.

Рис. 1

Применим Утилиту для сброса трансформации Reset XForm (рис. 2). Вы можете задаться вопросом для чего столько манипуляций, зачем, они одинаковы! На самом деле, работая, не раз сталкивался с вопросом: «Почему?!», функция у них одна и та же по сути, но принцип работы разный.  К примеру при привязке Skin`ом у вас не получается отобразить веса вертексов с одной половинки на другую, и вам придется вторую половинку так же вязать вручную, соответственно и время вы потратите больше.

Рис. 2

Переходим на вкладку Modify, выделяем модель, если вы сделали подготовку, то в стеке модификаторов у вас должен  отображаться XForm, он нам не нужен, щелкаем правой клавишей по нему и выбирать Collapse To.  Открываем список модификаторов и находим в нем Skin (рис. 3).

рис. 3

Если вы хоть раз пробовали привязывать Physique, то легко справитесь и со Skin. Как говорят лингвисты, если знаешь один язык, второй изучить проще.

Если вы сразу читаете Skin, то лучше потратьте пару минут и просмотреть принцип работы модификатора Physique.

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

Вкладка Parameters -  здесь в первую очередь добавляем кости, к которым мы будем привязывать модель, и здесь же выбираем, как будет осуществляться привязка.

Edit Envelopes – настройка влияния костей за счет сфер, принцип такой же как и в Physique, сфера в сфере.

Если поставить галку Vertices – то можно выбирать конкретные вертексы на самой модели и назначать степень влияния индивидуально.  Также имеются варианты выделения вертексов: Shrink, Grow, Ring, Loop – попробуйте каждый вариант и посмотрите что из этого у вас получится, лучше выделять пару вертексов, с одним вертексом не всегда срабатывает.

Cross Sections – это функция позволяет на Envelopes (сферах) добавить дополнительные ребра для удобства привязки.

Ну и самое интересное, назначения весов через таблицу (Weight Table) (рис. 4),  через панель весов (Weight Tool) (рис. 5) и рисуя кисточкой (Paint Weigths) (рис. 6).

Рис. 4

В таблице весов вы можете выбирать: отобразить все вертексы, только выделенные, или те на которые влияет кость. В столбцах вы задаете вес влияния кости на тот или иной вертекс.

Рис. 5

В Панели весов, отображаются кости, которые оказывают влияние на выбранные вами вертексы.

Рис. 6

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

Файлы к уроку: Start_model.rar, create_biped.rar, final_physique.rar.

93601 Автор:
Актуальность: 595
Качество: 547
Суммарный балл: 1142
Выбор Публики
Голосов: 76 оценки

Отзывы посетителей:

2 | След.
аватар
 
Норфос 2 0
Inegvin, можно привязать(Linc) шапку к самой кости головы персонажа! Ведь голова двигается по траектории кости и других деформаций у нее ведь нет (кроме анимации лица)? Тогда шапка будет двигатся с костью, то есть и с самой головой!
аватар
 
Inegvin 5 0
А подскажите пожалуйста, мне к привязанному к костям персонажику надо прицепить шапочку на голову. Можно ее как то "приклеить" к голове, чтоб она всегда оставалась на привязанной точке?
аватар
 
ENCORE 2 0
Отличный урок! Спасибо!
аватар
 
Agaricus campestris 5 0
Gronder,Dobroslav
непонятки по отзеркаливаю весов в skin конечно есть, но неплохо было бы добавить, что и лечится всё это в два щелчка:)
1. при условии что всё симметрично и правильно подготовлено к примению skin, проблем с переносом весов вообще не будет. если не нравится то,
что некорректно работает отзеркаливание на ногах, так можно просто кости на ногах потоньше сделать (как известно, величина влияния оболочки скина находится в прямой зависимости от размера кости), и тогда в момент применения skin енвелопы левой ноги не пересекутся с правыми...и будет вам счастье))) кстати говоря, стандартный максовский тутор советует заполнять меш костью только на 3/4(если я правильно всё помню))) хотя, если ноги близко расположены, и это не поможет))) проще смириться и вручную с каждой ноги исключить "чужие" вершины. после этого можете переносить веса слева-направо(или наоборот)сколько угодно - всё должно работать предсказуемо.
2. про кнопку "exclude verts" давно пора забыть)))!!! действительно, значения вершин, в судьбе которых поучаствовала эта кнопка, mirror воспринимать отказывается))) поэтому, если планируется отзеркаливание, а вершины требуется исключить из влияния енвелопа, можно просто назначить им нулевой вес)))


Урок нормальный, но как-то маловато...
аватар
 
Dobroslav 10 0
Цитирую Gronder:
при движении левой ноги, меш правой ноги тоже двигается, вместе слевой ногой, такое бывает, возможно это глюк, а может еще что то.



Вот примерно это я и назвал
Цитирую Dobroslav:
не совсем очевиден для использования


Дело в том, что зеркало модификатора Skin умеет расставлять веса, но не умеет добавлять кости, во всяком случае точно помню, как промучился целый день с этой проблемой, пока не добавил к каждой кости все точки модели. Также оно не понимает исключенные точки(Exclude Verts) и если ты отцепил их от одной ноги, это не значит что зеркало скопирует изменения на вторую.

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

P.S. Жаль, твой урок не появился года два назад)) не пришлось бы самому тыкаться.
аватар
 
Gronder 6 0
Большая часть моделлеров, при создании моделей, тем более если она симметрична, создают 1 половинку модели, а вторую отображают, и часто возникают глюки с вывернутым бампом, нормалями и т.п.
аватар
 
Gronder 6 0
Цитирую Dobroslav:
Кажется это неправда. В модификаторе skin(кожа) есть режим mirror mode (режим отзеркаливания). Он не совсем очевиден для использования, но исключать возможность отражения весов вершин не правильно


Привет, ты возможно сталкивался с таким: когда ты выбираешь копировать веса вершин с одной половинки на другую и все считай сделал правильно, то при движении левой ноги, меш правой ноги тоже двигается, вместе слевой ногой, такое бывает, возможно это глюк, а может еще что то. Но для чего я предлагал применить - Reset XForm, если ты работаешь в гейм индустрии, бывает такое, что ты скидываешь скейл, выставляешь пивот, проверяешь модель, везде стоит 100%, и ты ничего не подозревая привязываешь модель и экспортишь в движок, а у тебя почему то голова оказывается не 100%, а 200-300 % и ты не понимаешь в чем дело - из за чего так происходит тоже не известно. И чтобы себя подстраховать, обезопасить от глюков, т.е. чтобы не переделывать работу в дальнешем, можно для большей надежности или создать новую модель, к примеру боксик, приаттачить к боксу модель которую ты делаешь, тогда скейл скинется, а бокс удалить потом или просто можешь применить модификатор Reset XForm это равносильно.
аватар
 
Dobroslav 10 0
Цитирую:К примеру при привязке Skin`ом у вас не получается отобразить веса вертексов с одной половинки на другую, и вам придется вторую половинку так же вязать вручную, соответственно и время вы потратите больше.


Кажется это неправда. В модификаторе skin(кожа) есть режим mirror mode (режим отзеркаливания). Он не совсем очевиден для использования, но исключать возможность отражения весов вершин не правильно
аватар
 
Gronder 6 0
Пожалуйста
аватар
 
Provod 77 0
Спасибо за урок. Наконец хоть что-то понятно.
аватар
 
12sunflowers -7 0
2Gronder Спасибо огромное!)
аватар
 
Gronder 6 0
[quote=xeash]
xeash
28.10.2010 02:18
Слово "привязка" раздражает, употребляется слишком часто и подается как какой-то термин. У описываемого алгоритма существует очень много синонимов, так почему же их не использовать?

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

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

Пальцы на ноге привязаны к костям пальцев ноги, ты сам понимаешь, но если их привязать к стопе, то при сгибе будет более красиво смотреться, я не говорил что 100% влияние, пусть это влияние будет 5-10 % это практически незаметно, но смотрится по другому, нет изломов, это как пример.

Либо автор особо не вдумывался в смысл того что пишет либо...хз. Смущает слово "все". Худший совет который можно дать начинающему.

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

Хорошо добавлю, по поводу деформаторов, мне кажется лучше сделать его другим уроком, чтобы рассмотреть их по подробней, в данном уроке я использовал Rigid привязку, а для создания мускул желательно использовать Deformable. А если не терпиться можно сделать дополнительные кости в областях, где ты собираешься делать мускулы.

Речь шла не о гейм деве, о том что человек хотел бы рассмотреть еще деформаторы дополнительно. Читай внимательней, А если привязываешь физикой, то мускулы можно было делать только под Deformable привязкой, так вроде было до 8 версии макса. Это если ты привязываешь или Setup`ишь Skin`ом он по умолчанию Deformable делает.

аватар
 
Gronder 6 0
Цитирую 12sunflowers:
12sunflowers
28.10.2010 03:09
ох прости за дебильные вопросы. Просто ты первый нормальнообъяснил как делать сетап). Не так страшен черт как его малюют. Сложновато, но разберусь обязательно. Блин это ж сколько нужно терпения штоб так по вертексам весы расставлять)


Привязка лоу польки занимает от 30 минут до 2 часов (5-10 тысяч фейсов), хай поли до 2 дней

Будут вопросы спрашивай, что знаю расскажу.
аватар
 
Gronder 6 0
Идеальная привязка считается та, когда все вертексы модели привязаны как минимум к 2 костям, пусть даже не с незначительным коэффициентом. Тогда при изготовлении анимации модель будет казаться более живой и реалистичной.

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

Если мы говорим о геймдеве, то ни доп деформаторы ни "мускулы" и т.п. не экспортятся в движок, если это специально не предусмотрено программистами в движке и/или при экспорте.
Самые ходовые алгоритмы в геймдеве это Linear Skinning(SSD) и Linear Blending/Morphing.

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


-то есть если правильно привязать модельку к скелету (как на первом рисунке), то потом можно как угодно манипулировать скелетом в модели все будет правильно сгибаться или надо все же в процессе сетапа двигать конечностями и под это расставлять весы точек?

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


-а как правильнее настроить веса точек на сгибах конечностей?

Если ты открывал таблицу весов, то видел там максимальное значение: 1 = 100% (больше 1 нет смысла накручивать), т.е. 0,5 = 50%; 0,25 = 25% и т.д. Таким образом ряд вертексов между 2 костей будет 50% на 50% иметь степень влияния, ниже ряд 75% на 25% к примеру и т.д.


-лоуполи модель лучше должна состоять из 4х угольных или 3х угольных полигонов?

Не влияет на сетап, это больше влияет на качество модели, желательно 4х.

-хайполи или медиумполи по этому же принципу сетапятся?

Количеством времени потраченным на сетап .

-на работе используешь макс для сетапа или другую прогу?

Смотря в какой программе приходится работать, по большей части макс и майка

P.s. Если ты действительно начинающий, учи майку ... когда нибудь спасибо скажешь ) Там можно анимировать все.
аватар
 
12sunflowers -7 0
ох прости за дебильные вопросы. Просто ты первый нормальнообъяснил как делать сетап). Не так страшен черт как его малюют. Сложновато, но разберусь обязательно. Блин это ж сколько нужно терпения штоб так по вертексам весы расставлять)
аватар
 
xeash 12 0
Слово "привязка" раздражает, употребляется слишком часто и подается как какой-то термин. У описываемого алгоритма существует очень много синонимов, так почему же их не использовать?
Еще "убило" 2 момента:
1)
Цитирую:
Идеальная привязка считается та, когда все вертексы модели привязаны как минимум к 2 костям, пусть даже не с незначительным коэффициентом. Тогда при изготовлении анимации модель будет казаться более живой и реалистичной.

Либо автор особо не вдумывался в смысл того что пишет либо...хз. Смущает слово "все". Худший совет который можно дать начинающему.
2)
Цитирую:
Хорошо добавлю, по поводу деформаторов, мне кажется лучше сделать его другим уроком, чтобы рассмотреть их по подробней, в данном уроке я использовал Rigid привязку, а для создания мускул желательно использовать Deformable. А если не терпиться можно сделать дополнительные кости в областях, где ты собираешься делать мускулы.

Если мы говорим о геймдеве, то ни доп деформаторы ни "мускулы" и т.п. не экспортятся в движок, если это специально не предусмотрено программистами в движке и/или при экспорте.
Самые ходовые алгоритмы в геймдеве это Linear Skinning(SSD) и Linear Blending/Morphing.
аватар
 
12sunflowers -7 0
-то есть если правильно привязать модельку к скелету (как на первом рисунке), то потом можно как угодно манипулировать скелетом в модели все будет правильно сгибаться или надо все же в процессе сетапа двигать конечностями и под это расставлять весы точек?
-а как правильнее настроить весы точек на сгибах конечностей?
-лоуполи модель лучше должна состоять из 4х угольных или 3х угольных полигонов?
-хайполи или медиумполи по этому же принципу сетапятся?
-на работе используешь макс для сетапа или другую прогу?

Спасибо)
аватар
 
Gronder 6 0
10 000 - это lowpoly модель, не должно быть проблем вроде бы, и ты не персонажа должен поставить в позу , читай внимательней, а скелет подстроить под готового персонажа.
аватар
 
12sunflowers -7 0
Меня интересует как установить персонажа в позу (поликов на 10000)?
аватар
 
12sunflowers -7 0
Оба-на, круто, спасибо, то что мне как раз надо! а продолжение будет?
2 | След.
Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 1788 уникальных посетителей