Лицевая анимация и финальная компиляция

Оглавление:

1. Подготовительный этап, создание концепции и подготовка к моделированию персонажа в 3d max

2. Моделирование головы персонажа

3. Развертка головы для последующего текстурирования

4. Моделирование тела персонажа

5. Моделирование кисти руки

6. Развертка тела персонажа

7. Анимация (скелет и модификатор skin)

8. Компиляция модели

9. Лицевая анимация и финальная компиляция

IX

Суть заключается в том, чтобы создать анимацию для модели примерно из 35 фреймов, каждый из которых будет содержать одно выражение лица, затем файл с анимацией экспортируется в формат vta. Не важно, каким образом будет создана анимация, я вкратце расскажу, как это сделать с помощью модификатора morpher . Для создания фаз анимации воспользуемся шаблоном http://developer.valvesoftware.com/wiki/Character_Facial_Animation_Shapekey_Set. И так, откроем модель в 3DS MAX, удалим модификатор skin, и скелет, оставим только сетку. Выделяем модель, инструментом Select and Move с зажатой клавишей shift клонируем модель как copy, и располагаем копию рядом, даем ей имя 01. Это будет первый фрейм, в нулевом будет референс. Заходим по ссылке данной выше, под номером 01- Upper lid lowerer, то есть опускание верхнего века. Скроем пока референсную модель, оставим только копию под именем 01. Теперь, перемещая вершины, нужно аккуратно опустить верхние веки. Именно перемещая вершины, нельзя создавать новые или соединять, только перемещать. С глазами все довольно просто.

Закончив с копией 01, снова выделяем референсную модель и клонируем под именем 02, располагаем рядом с 01, скрываем все кроме копии 02. Все то же самое, перемещаем вершины в нужное положение, сверяясь с шаблоном. Немного сложнее с фазами анимации рта. Важно помнить о некоторых нюансах: чтобы сделать улыбку естественной, мало просто растянуть губы, пойдите к зеркалу и широко улыбнитесь. Что вы видите? Все мышцы лица приходят в движение. Так что смелее, постарайтесь передать эмоции. И еще один момент, перед тем как начать создавать очередное выражение лица, связанное с губами – выделите элементы челюстей и спрячьте их, будет неприятно, когда вместе с улыбкой или другим движением губ зубы тоже станут деформироваться как резиновые.

И так, все 34 копии приведены в соответствие с шаблоном. Выбираем в контекстном меню Unhide All, выделяем референсную модель и присваиваем ей модификатор Morpher. В настройках модификатора находим свиток Channel List и жмем Load Multiple Targets. В открывшемся окне нажимаем All, а затем Load

Сохраним этот файл под каким-нибудь именем, вдруг придется подправить какие-то из фаз анимации. Теперь выбираем Select Invert (Ctrl+I) и удаляем все копии, оставив только референсную модель с модификатором Morpher. В настройках Time Configuration выставляем Start Time – 0, End Time – 34, создадим ключ в каждом фрейме. Перемещаемся в нулевой фрейм, жмем Auto Key. В нулевом кадре у нас референсная модель, тут ничего менять не будем. Перемещаемся в первый фрейм, в свитке Channel List напротив канала 01 выставляем значение 100

Двигаемся во второй фрейм, напротив 01 выставляем значение 0, напротив 02 – значение 100. Нужно вернуться назад в первый фрейм и изменить значение 02 так же на 0. Затем двигаемся в третий фрейм и повторяем те же операции. В итоге должна получится анимация, каждый из фреймов которой соответствует шаблону. Преимущество создания анимации при помощи Morpher состоит в том, что можно при необходимости смешивать в одном фрейме несколько разных фаз, добиваясь нужного выражения лица. Когда настройка анимации будет закончена, жмем File > Export и сохраняем файл в формате vta под именем имя_модели_expressions в папке hl2/models/имя_модели.

Пора внести изменения в файл qc. Но пред этим сделаем еще кое-что. Откроем сохраненный ранее файл с фазами анимации, нам нужны координаты для ограничения движения глаз. Процедура вычисления этих координат громоздко и путано описана здесь: http://developer.valvesoftware.com/wiki/Eye_Position_Setup на английском языке да еще с ошибкой J А в сущности все довольно просто. Координаты центра глаза у нас уже есть, они записаны в qc, мы их вычислили при помощи сфер. Собственно нам нужна только одна координата –Z(по высоте) Теперь нам нужно записать координату по оси Z вершины в центре верхнего века для нормального положения века, для крайнего верхнего положения и крайнего нижнего(когда глаз закрыт), Затем вычислить разницу между координатой центра глаза по оси Z и каждой из трех координат вершины в центре века.

Для этого выделим референсную модель, а так же копии с номерами 01 и 02, все остальные копии скроем (Hide Unselected) Теперь запишем координату по оси Z для вершины в центре века на каждой из трех копий, и вычислим значения, необходимые для qc:

Для upper_right (правое верхнее веко)

Neutral = Z_neutral – Z_center

Lowerer = Z_lowerer – Z_center

Raiser = Z_raiser – Z_center

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

Для вычисления координат нижнего века скроем все кроме референсной модели и копий под номерами 03 и 04.

Проделаем аналогичные вычисления.

Теперь еще раз отредактируем файл qc:

$cd «d:SDK hl2modelsColonel»

$modelname «ColonelColonel.mdl»

$model «Colonel» «Colonel_reference.smd» {

eyeball righteye ValveBiped.Bip01_Head1 -1.21 -1.904 67.650 eyeball_r 1.000 4.000 grn_pupil_r 0.630

eyeball lefteye ValveBiped.Bip01_Head1 1.21 -1.904 67.650 eyeball_l 1.000 -4.000 grn_pupil_l 0.630

eyelid upper_right «Colonel_expressions.vta» lowerer 1 -0.217 neutral 0 0.098 raiser 2 0.132 split 0.1 eyeball righteye

eyelid lower_right «Colonel_expressions.vta» lowerer 3 -0.139 neutral 0 -0.228 raiser 4 -0.134 split 0.1 eyeball righteye

eyelid upper_left «Colonel_expressions.vta» lowerer 1 -0.217 neutral 0 0.098 raiser 2 0.132 split -0.1 eyeball lefteye

eyelid lower_left «Colonel_expressions.vta» lowerer 3 -0.139 neutral 0 -0.228 raiser 4 -0.134 split -0.1 eyeball lefteye

mouth 0 «mouth» ValveBiped.Bip01_Head1 0.000 1.000 0.000

flexfile «Colonel_expressions» {

$include «standardflex_xsi.qci»

}

$include «facerules_xsi.qci»

$include «bodyrules_xsi.qci»

}

Добавленные строки выделены жирным шрифтом. Кроме координат, вычислением которых мы сейчас занимались, я добавил еще три строки, содержащие ссылки на файлы из папки sourcesdk_contenthl2modelsrchumans_sdk. Эти файлы так же необходимо скопировать в папку hl2/models/имя_модели, они необходимы для правильной работы лицевой анимации.

В окончательном варианте мой qc выглядит так:

$cd «d:SDK hl2modelsColonel»

$modelname «ColonelColonel.mdl»

$model «Colonel» «Colonel_reference.smd» {

eyeball righteye ValveBiped.Bip01_Head1 -1.21 -1.904 67.650 eyeball_r 1.000 4.000 grn_pupil_r 0.630

eyeball lefteye ValveBiped.Bip01_Head1 1.21 -1.904 67.650 eyeball_l 1.000 -4.000 grn_pupil_l 0.630

eyelid upper_right «Colonel_expressions.vta» lowerer 1 -0.217 neutral 0 0.098 raiser 2 0.132 split 0.1 eyeball righteye

eyelid lower_right «Colonel_expressions.vta» lowerer 3 -0.139 neutral 0 -0.228 raiser 4 -0.134 split 0.1 eyeball righteye

eyelid upper_left «Colonel_expressions.vta» lowerer 1 -0.217 neutral 0 0.098 raiser 2 0.132 split -0.1 eyeball lefteye

eyelid lower_left «Colonel_expressions.vta» lowerer 3 -0.139 neutral 0 -0.228 raiser 4 -0.134 split -0.1 eyeball lefteye

mouth 0 «mouth» ValveBiped.Bip01_Head1 0.000 1.000 0.000

flexfile «Colonel_expressions» {

$include «standardflex_xsi.qci»

}

$include «facerules_xsi.qci»

$include «bodyrules_xsi.qci»

}

//end eye/face data

$cdmaterials «modelsColonel»

$hboxset «default»

$hbox 1 «ValveBiped.Bip01_Head1″ -1.250 -6.500 -3.190 8.250 3.500 3.310

$hbox 4 «ValveBiped.Bip01_L_UpperArm» 0.000 -2.750 -2.750 12.510 1.750 2.250

$hbox 4 «ValveBiped.Bip01_L_Forearm» 0.000 -2.190 -2.380 13.000 1.810 1.620

$hbox 4 «ValveBiped.Bip01_L_Hand» 0.060 -2.000 -1.500 4.060 1.000 2.500

$hbox 5 «ValveBiped.Bip01_R_UpperArm» 0.000 -3.000 -2.250 12.390 2.000 2.750

$hbox 5 «ValveBiped.Bip01_R_Forearm» -0.500 -2.200 -1.550 12.500 1.800 2.450

$hbox 5 «ValveBiped.Bip01_R_Hand» 0.060 -2.000 -2.500 4.060 1.000 1.500

$hbox 6 «ValveBiped.Bip01_L_Thigh» 0.000 -3.750 -3.250 17.850 3.750 3.250

$hbox 6 «ValveBiped.Bip01_L_Calf» 0.000 -3.510 -3.280 15.640 3.490 2.720

$hbox 6 «ValveBiped.Bip01_L_Foot» -1.070 -2.000 -2.840 5.040 5.000 2.160

$hbox 6 «ValveBiped.Bip01_L_Toe0″ -0.500 -3.000 -2.190 2.500 0.000 2.460

$hbox 7 «ValveBiped.Bip01_R_Thigh» 0.000 -3.750 -3.250 17.850 3.750 3.250

$hbox 7 «ValveBiped.Bip01_R_Calf» 0.000 -3.510 -2.820 15.640 3.490 3.180

$hbox 7 «ValveBiped.Bip01_R_Foot» -1.060 -2.010 -2.280 5.050 4.990 2.720

$hbox 7 «ValveBiped.Bip01_R_Toe0″ -0.500 -3.000 -2.600 2.500 0.000 2.100

$hbox 3 «ValveBiped.Bip01_Pelvis» -7.500 -5.500 -6.000 7.500 8.500 5.000

$hbox 2 «ValveBiped.Bip01_Spine2″ -2.500 -2.500 -7.000 14.500 7.500 7.000

$attachment «eyes» «ValveBiped.Bip01_Head1″ 3.20 -3.50 0.12 rotate 0.00 -80.10 -90.00

$attachment «mouth» «ValveBiped.Bip01_Head1″ 0.60 -5.50 -0.00 rotate 0.00 -80.00 -90.00

$attachment «chest» «ValveBiped.Bip01_Spine2″ 5.00 4.00 -0.00 rotate -0.00 90.00 90.00

$attachment «forward» «ValveBiped.forward» 0.00 0.00 0.00 rotate 0.00 0.00 -0.00

$attachment «anim_attachment_RH» «ValveBiped.Anim_Attachment_RH» 0.00 0.00 -0.00 rotate -90.00 -90.00 0.00

$attachment «anim_attachment_LH» «ValveBiped.Anim_Attachment_LH» -0.00 0.00 0.00 rotate -90.00 -90.00 0.00

$attachment «anim_attachment_head» «ValveBiped.Bip01_Head1″ -0.00 0.00 0.00 rotate -90.00 -90.00 0.00

$includemodel «humans/male_shared.mdl»

$includemodel «humans/male_ss.mdl»

$includemodel «humans/male_gestures.mdl»

$includemodel «humans/male_postures.mdl»

$includemodel «breen_anims.mdl»

$includemodel «breen_postures.mdl»

$includemodel «breen_gestures.mdl»

$surfaceprop «flesh»

$eyeposition -0.000 0.000 70.000

$illumposition -1.764 0.080 36.127

$sequence ragdoll «ragdoll» ACT_DIERAGDOLL 1 fps 30.00

$ikchain rhand ValveBiped.Bip01_R_Hand knee 0.707 0.707 0.000

$ikchain lhand ValveBiped.Bip01_L_Hand knee 0.707 0.707 0.000

$ikchain rfoot ValveBiped.Bip01_R_Foot knee 0.707 -0.707 0.000

$ikchain lfoot ValveBiped.Bip01_L_Foot knee 0.707 -0.707 0.000

$collisionjoints «phymodel.smd» {

$mass 90.0

$inertia 10.00

$damping 0.01

$rotdamping 1.50

$rootbone «valvebiped.bip01_pelvis»

$jointmerge «ValveBiped.Bip01_Pelvis» «ValveBiped.Bip01_Spine1″

$jointconstrain «valvebiped.bip01_spine2″ x limit -48.00 48.00 0.00

$jointconstrain «valvebiped.bip01_spine2″ y limit -25.00 25.00 0.00

$jointconstrain «valvebiped.bip01_spine2″ z limit -25.00 50.00 0.00

$jointconstrain «valvebiped.bip01_r_upperarm» x limit -39.00 39.00 0.00

$jointconstrain «valvebiped.bip01_r_upperarm» y limit -79.00 95.00 0.00

$jointconstrain «valvebiped.bip01_r_upperarm» z limit -93.00 23.00 0.00

$jointconstrain «valvebiped.bip01_l_upperarm» x limit -30.00 30.00 0.00

$jointconstrain «valvebiped.bip01_l_upperarm» y limit -95.00 84.00 0.00

$jointconstrain «valvebiped.bip01_l_upperarm» z limit -86.00 26.00 0.00

$jointconstrain «valvebiped.bip01_l_forearm» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_forearm» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_forearm» z limit -149.00 4.00 0.00

$jointconstrain «valvebiped.bip01_l_hand» x limit -37.00 37.00 0.00

$jointconstrain «valvebiped.bip01_l_hand» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_hand» z limit -57.00 59.00 0.00

$jointconstrain «valvebiped.bip01_r_forearm» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_forearm» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_forearm» z limit -149.00 4.00 0.00

$jointconstrain «valvebiped.bip01_r_hand» x limit -60.00 60.00 0.00

$jointconstrain «valvebiped.bip01_r_hand» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_hand» z limit -57.00 70.00 0.00

$jointconstrain «valvebiped.bip01_r_thigh» x limit -12.00 12.00 0.00

$jointconstrain «valvebiped.bip01_r_thigh» y limit -8.00 75.00 0.00

$jointconstrain «valvebiped.bip01_r_thigh» z limit -97.00 32.00 0.00

$jointconstrain «valvebiped.bip01_r_calf» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_calf» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_calf» z limit -12.00 126.00 0.00

$jointconstrain «valvebiped.bip01_head1″ x limit -20.00 20.00 0.00

$jointconstrain «valvebiped.bip01_head1″ y limit -25.00 25.00 0.00

$jointconstrain «valvebiped.bip01_head1″ z limit -13.00 30.00 0.00

$jointconstrain «valvebiped.bip01_l_thigh» x limit -12.00 12.00 0.00

$jointconstrain «valvebiped.bip01_l_thigh» y limit -73.00 6.00 0.00

$jointconstrain «valvebiped.bip01_l_thigh» z limit -93.00 30.00 0.00

$jointconstrain «valvebiped.bip01_l_calf» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_calf» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_calf» z limit -8.00 126.00 0.00

$jointconstrain «valvebiped.bip01_l_foot» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_foot» y limit -19.00 19.00 0.00

$jointconstrain «valvebiped.bip01_l_foot» z limit -15.00 35.00 0.00

$jointconstrain «valvebiped.bip01_r_foot» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_foot» y limit -25.00 6.00 0.00

$jointconstrain «valvebiped.bip01_r_foot» z limit -15.00 35.00 0.00

$animatedfriction 1.000 400.000 0.500 0.300 0.000

}

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

И конечно же протестировать модель в игре. Раз уж я прикрутил к модели анимации Брина.

Вот пожалуй и все , больше мне добавить нечего. Удачных компилов!

Компиляция модели человека в 3d Max

Оглавление:

1. Подготовительный этап, создание концепции и подготовка к моделированию персонажа в 3d max

2. Моделирование головы персонажа

3. Развертка головы для последующего текстурирования

4. Моделирование тела персонажа

5. Моделирование кисти руки

6. Развертка тела персонажа

7. Анимация (скелет и модификатор skin)

8. Компиляция модели

9. Лицевая анимация и финальная компиляция

VIII

Теперь у нас есть практически все для компиляции модели в формат понятный игровому движку mdl . Не хватает только лицевой анимации, ею займемся позже. Откроем папку с декомпилированной моделью, части которой мы уже использовали (скелет, зубы и текстуры к ним). Я продолжу мучить male_07. Итак, что в папке? Шесть файлов LOD с названиями lod1_male_07_reference.smd-lod6_male_07_reference.smd , они нам не интересны, так же как и сама модель male_07_reference.smd . Файл ragdoll.smd , он нам тоже не интересен, у нас уже есть свой, а вот phymodel.smd нам пригодится (это физическая модель), скопируем ее в свою папку hl2/models/имя_модели. Еще в папке остался mdldecompiler_expressions.vta, в котором содержится лицевая анимация персонажа, этот файл нам тоже ни к чему (создадим свой), и последний файл — mdldecompiler.qc, копируем его в свою папку. Это скрипт для компиляции модели, сейчас мы займемся его редактированием.

Откроем mdldecompiler.qc с помощью блокнота. Ого, черт ногу сломит J, на самом деле ничего страшного. Первые три строки у меня выглядят так:

$cd «C:Documents and SettingsAdminРабочий столmale_07″

$modelname «HumansGroup03male_07.mdl»

$model «male_07″ «male_07_reference.smd» {

Заменим путь в первой строке на полный путь к нашей папке в директории игры, во второй строке заменим имя модели на свое, в третьей заменим имя модели и имя файла reference.smd на собственное. Вот так это выглядит у меня:

$cd «f:SDKhl2modelsColonel»

$modelname «ColonelColonel.mdl»

$model «Colonel» «Colonel_reference.smd» {

Обратите внимание, modelname содержит путь к файлу mdl относительно папки models в директории hl2, если написать только имя файла, модель скомпилируется в директорию hl2/models

Ниже описывается положение глаз, лицевая анимация и лоды. Удалим все это до строчки

$cdmaterials «modelsHumansMaleGroup03″

Понятно, что здесь содержится путь к папке с текстурами (которые использует модель), внутри директории hl2/materials. Заменим этот путь на свой. У меня вот такой путь:

$cdmaterials «modelsColonel»

Ниже идет описание hitbox. Оставим все как есть. Еще ниже описаны attachment, их пока тоже трогать не будем.

Еще ниже следующее:

$includemodel «humans/male_shared.mdl»

$includemodel «humans/male_ss.mdl»

$includemodel «humans/male_gestures.mdl»

$includemodel «humans/male_postures.mdl»

Это пути к файлам анимации, которые будут доступны модели в игре. Сюда можно добавить пути к другим файлам, стандартным или собственным. Я подумал, и прикрутил своему персонажу анимацию Брина:

$includemodel «humans/male_shared.mdl»

$includemodel «humans/male_ss.mdl»

$includemodel «humans/male_gestures.mdl»

$includemodel «humans/male_postures.mdl»

$includemodel «breen_anims.mdl»

$includemodel «breen_postures.mdl»

$includemodel «breen_gestures.mdl»

Все что идет ниже, оставляем без изменений. Закрываем файл с сохранением изменений и переименовываем в имя_модели.qc. Таким образом содержимое папки hl2/models/имя_модели должно выглядеть так:

имя_модели_reference.smd

phymodel.smd

ragdoll.smd

имя_модели.qc

Займемся установкой глаз. Открываем нашу модель в 3DS MAX. Создаем сферу в области глаза и устанавливаем ее примерно вот так:

Выделяем сферу инструментом Select and Move и записываем куда-нибудь координаты центра правого глаза.

Идем на вкладку Hierarchy и выравниваем pivot point сферы по модели

Отражаем сферу по оси Х чтобы она стала в левый глаз, выравниваем ее pivot point снова по центру и записываем координаты для левого глаза. Собственно, нам нужна только координата по оси Х, по другим осям координаты идентичны, если лицо симметричное. Сохраним модель со сферой в отдельный файл, возможно придется корректировать положение глаз.

Откроем файл имя_модели.qc блокнотом и добавим в него полученные координаты после третьей строки:

eyeball righteye ValveBiped.Bip01_Head1 -1.21 -1.904 67.650 eyeball_r 1.000 4.000 grn_pupil_r 0.630

eyeball lefteye ValveBiped.Bip01_Head1 1.21 -1.904 67.650 eyeball_l 1.000 -4.000 grn_pupil_l 0.630

mouth 0 «mouth» ValveBiped.Bip01_Head1 0.000 1.000 0.000

}

Здесь grn_pupil_r 0.630 – радиус радужной оболочки

Обратите внимание, координаты в qc пишутся через точку, в отличие от координат в максе, там через запятую.

Таким образом, qc принял следующий вид:

$cd «f:SDKhl2modelsColonel»

$modelname «ColonelColonel.mdl»

$model «Colonel» «Colonel_reference.smd» {

eyeball righteye ValveBiped.Bip01_Head1 -1.21 -1.904 67.650 eyeball_r 1.000 4.000 grn_pupil_r 0.630

eyeball lefteye ValveBiped.Bip01_Head1 1.21 -1.904 67.650 eyeball_l 1.000 -4.000 grn_pupil_l 0.630

mouth 0 «mouth» ValveBiped.Bip01_Head1 0.000 1.000 0.000

}

$cdmaterials «modelsColonel»

$hboxset «default»

$hbox 1 «ValveBiped.Bip01_Head1″ -1.250 -6.500 -3.190 8.250 3.500 3.310

$hbox 4 «ValveBiped.Bip01_L_UpperArm» 0.000 -2.750 -2.750 12.510 1.750 2.250

$hbox 4 «ValveBiped.Bip01_L_Forearm» 0.000 -2.190 -2.380 13.000 1.810 1.620

$hbox 4 «ValveBiped.Bip01_L_Hand» 0.060 -2.000 -1.500 4.060 1.000 2.500

$hbox 5 «ValveBiped.Bip01_R_UpperArm» 0.000 -3.000 -2.250 12.390 2.000 2.750

$hbox 5 «ValveBiped.Bip01_R_Forearm» -0.500 -2.200 -1.550 12.500 1.800 2.450

$hbox 5 «ValveBiped.Bip01_R_Hand» 0.060 -2.000 -2.500 4.060 1.000 1.500

$hbox 6 «ValveBiped.Bip01_L_Thigh» 0.000 -3.750 -3.250 17.850 3.750 3.250

$hbox 6 «ValveBiped.Bip01_L_Calf» 0.000 -3.510 -3.280 15.640 3.490 2.720

$hbox 6 «ValveBiped.Bip01_L_Foot» -1.070 -2.000 -2.840 5.040 5.000 2.160

$hbox 6 «ValveBiped.Bip01_L_Toe0″ -0.500 -3.000 -2.190 2.500 0.000 2.460

$hbox 7 «ValveBiped.Bip01_R_Thigh» 0.000 -3.750 -3.250 17.850 3.750 3.250

$hbox 7 «ValveBiped.Bip01_R_Calf» 0.000 -3.510 -2.820 15.640 3.490 3.180

$hbox 7 «ValveBiped.Bip01_R_Foot» -1.060 -2.010 -2.280 5.050 4.990 2.720

$hbox 7 «ValveBiped.Bip01_R_Toe0″ -0.500 -3.000 -2.600 2.500 0.000 2.100

$hbox 3 «ValveBiped.Bip01_Pelvis» -7.500 -5.500 -6.000 7.500 8.500 5.000

$hbox 2 «ValveBiped.Bip01_Spine2″ -2.500 -2.500 -7.000 14.500 7.500 7.000

$attachment «eyes» «ValveBiped.Bip01_Head1″ 3.20 -3.50 0.12 rotate 0.00 -80.10 -90.00

$attachment «mouth» «ValveBiped.Bip01_Head1″ 0.60 -5.50 -0.00 rotate 0.00 -80.00 -90.00

$attachment «chest» «ValveBiped.Bip01_Spine2″ 5.00 4.00 -0.00 rotate -0.00 90.00 90.00

$attachment «forward» «ValveBiped.forward» 0.00 0.00 0.00 rotate 0.00 0.00 -0.00

$attachment «anim_attachment_RH» «ValveBiped.Anim_Attachment_RH» 0.00 0.00 -0.00 rotate -90.00 -90.00 0.00

$attachment «anim_attachment_LH» «ValveBiped.Anim_Attachment_LH» -0.00 0.00 0.00 rotate -90.00 -90.00 0.00

$attachment «anim_attachment_head» «ValveBiped.Bip01_Head1″ -0.00 0.00 0.00 rotate -90.00 -90.00 0.00

$includemodel «humans/male_shared.mdl»

$includemodel «humans/male_ss.mdl»

$includemodel «humans/male_gestures.mdl»

$includemodel «humans/male_postures.mdl»

$includemodel «breen_anims.mdl»

$includemodel «breen_postures.mdl»

$includemodel «breen_gestures.mdl»

$surfaceprop «flesh»

$eyeposition -0.000 0.000 70.000

$illumposition -1.764 0.080 36.127

$sequence ragdoll «ragdoll» ACT_DIERAGDOLL 1 fps 30.00

$ikchain rhand ValveBiped.Bip01_R_Hand knee 0.707 0.707 0.000

$ikchain lhand ValveBiped.Bip01_L_Hand knee 0.707 0.707 0.000

$ikchain rfoot ValveBiped.Bip01_R_Foot knee 0.707 -0.707 0.000

$ikchain lfoot ValveBiped.Bip01_L_Foot knee 0.707 -0.707 0.000

$collisionjoints «phymodel.smd» {

$mass 90.0

$inertia 10.00

$damping 0.01

$rotdamping 1.50

$rootbone «valvebiped.bip01_pelvis»

$jointmerge «ValveBiped.Bip01_Pelvis» «ValveBiped.Bip01_Spine1″

$jointconstrain «valvebiped.bip01_spine2″ x limit -48.00 48.00 0.00

$jointconstrain «valvebiped.bip01_spine2″ y limit -25.00 25.00 0.00

$jointconstrain «valvebiped.bip01_spine2″ z limit -25.00 50.00 0.00

$jointconstrain «valvebiped.bip01_r_upperarm» x limit -39.00 39.00 0.00

$jointconstrain «valvebiped.bip01_r_upperarm» y limit -79.00 95.00 0.00

$jointconstrain «valvebiped.bip01_r_upperarm» z limit -93.00 23.00 0.00

$jointconstrain «valvebiped.bip01_l_upperarm» x limit -30.00 30.00 0.00

$jointconstrain «valvebiped.bip01_l_upperarm» y limit -95.00 84.00 0.00

$jointconstrain «valvebiped.bip01_l_upperarm» z limit -86.00 26.00 0.00

$jointconstrain «valvebiped.bip01_l_forearm» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_forearm» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_forearm» z limit -149.00 4.00 0.00

$jointconstrain «valvebiped.bip01_l_hand» x limit -37.00 37.00 0.00

$jointconstrain «valvebiped.bip01_l_hand» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_hand» z limit -57.00 59.00 0.00

$jointconstrain «valvebiped.bip01_r_forearm» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_forearm» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_forearm» z limit -149.00 4.00 0.00

$jointconstrain «valvebiped.bip01_r_hand» x limit -60.00 60.00 0.00

$jointconstrain «valvebiped.bip01_r_hand» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_hand» z limit -57.00 70.00 0.00

$jointconstrain «valvebiped.bip01_r_thigh» x limit -12.00 12.00 0.00

$jointconstrain «valvebiped.bip01_r_thigh» y limit -8.00 75.00 0.00

$jointconstrain «valvebiped.bip01_r_thigh» z limit -97.00 32.00 0.00

$jointconstrain «valvebiped.bip01_r_calf» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_calf» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_calf» z limit -12.00 126.00 0.00

$jointconstrain «valvebiped.bip01_head1″ x limit -20.00 20.00 0.00

$jointconstrain «valvebiped.bip01_head1″ y limit -25.00 25.00 0.00

$jointconstrain «valvebiped.bip01_head1″ z limit -13.00 30.00 0.00

$jointconstrain «valvebiped.bip01_l_thigh» x limit -12.00 12.00 0.00

$jointconstrain «valvebiped.bip01_l_thigh» y limit -73.00 6.00 0.00

$jointconstrain «valvebiped.bip01_l_thigh» z limit -93.00 30.00 0.00

$jointconstrain «valvebiped.bip01_l_calf» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_calf» y limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_calf» z limit -8.00 126.00 0.00

$jointconstrain «valvebiped.bip01_l_foot» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_l_foot» y limit -19.00 19.00 0.00

$jointconstrain «valvebiped.bip01_l_foot» z limit -15.00 35.00 0.00

$jointconstrain «valvebiped.bip01_r_foot» x limit 0.00 0.00 0.00

$jointconstrain «valvebiped.bip01_r_foot» y limit -25.00 6.00 0.00

$jointconstrain «valvebiped.bip01_r_foot» z limit -15.00 35.00 0.00

$animatedfriction 1.000 400.000 0.500 0.300 0.000

}

Играют фанфары, приступаем к компиляции модели.

Запускаем программу GUI StudioMDL. Жмем File>Load QC file, показываем программе имя_модели.qc, нажимаем Compile. Если ошибок в qc нет, примерно через минуту компиляция закончится. Если компилятор выдает ошибку, открываем qc и внимательно все проверяем. Чаще всего причиной ошибки бывают неверно указанные пути к файлам или имена файлов, а так же десятичные запятые вместо точек. Где-то может потеряться фигурная скобка.

Итак, модель успешно скомпилировалась. Запускаем Model Viewer, загружаем модель, критически осматриваем, плюёмся и посыпаем голову пеплом J)))))) Конечно она еще слишком далека от совершенства, почти наверняка придется дорабатывать текстуры, устранять косоглазие и с анимацией вряд ли будет все гладко, но, как ни крути, а вставить в игру ее уже можно, правда разговаривать она пока не будет и глаза будут работать не корректно. Здесь же в Model Viewer уточняем положение аттачментов и вносим необходимые поправки в qc. Если текстуры модели отображаются в видет сиренево-черных шашечек, проверяем правильность путей в vmt файлах. Если не появились радужки глаз – еще раз проверяем правильность координат в qc. Проверяем так же правильность наложения текстур глазных яблок, текстура с именем eyeball_r должна быть именно на правом глаз, визуально это может и не заметно, но если их перепутать- глаза работать не будут. Еще одна типичная ошибка- неправильный поворот осей pivot point у модели. Когда я настраивал глаза своему первому персонажу, то убил кучу времени на поиск ошибки, в итоге придумал вот такой тупой, но рабочий метод: сферы, по которым настраивал глаза текстурировал соответствующими текстурами глазных яблок и приаттачил к модели, а полигоны головы удалил начисто. Получилась модель без головы, но с глазными яблоками парящими в воздухе (жаль скриншота не сохранилJ). После компиляции выяснилось, что глаза проецируются не прямо, а почему-то сбоку, по этому у модели их и не было видно. Разбор полетов показал, что оси pivot point модели не совпадали с пивотом скелета.

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

Далее: Лицевая анимация и финальная компиляция.

Анимация в 3d Max: Скелет и модификатор Skin

Оглавление:

1. Подготовительный этап, создание концепции и подготовка к моделированию персонажа в 3d max

2. Моделирование головы персонажа

3. Развертка головы для последующего текстурирования

4. Моделирование тела персонажа

5. Моделирование кисти руки

6. Развертка тела персонажа

7. Анимация (скелет и модификатор skin)

8. Компиляция модели

9. Лицевая анимация и финальная компиляция

VII

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

Работу со скелетом необходимо закончить до применения модификатора skin. И еще один важный момент, который стоит проверить до применение модификатора skin – положение опорной точки модели (pivot point) Она должна располагаться в основании модели, не в центре и не где-то еще.

Теперь применим модификатор Skin. В параметрах модификатора жмем Bones: Add и All > Select в открывшемся диалоге.

Все выбранные кости появятся в списке модификатора. Теперь наша задача состоит в том, чтобы назначить вершинам модели вес (степень влияния костей на вершины) Значение веса варьирует о 0 до 1, на одну вершину могут воздействовать несколько костей, чем больше значение, тем выше степень влияния. Переходим на вкладку Envelopes и ставим галку напротив Vertices , чтобы можно было выделять вершины.

Для редактирования веса будем использовать Weight Tool Если не выбрано ни одной вершины, окно инструмента пустое. Как только вы выбираете вершину, в окне инструмента отображается информация о её весе, относительно костей, к которым она привязана.

Итак, приступим. Выделим кость ValveBiped.forward, красным выделены вершины, на которые влияет эта кость , то есть, движение кости повлечет за собой и перемещение вершин. Но эта кость не должна влиять вообще ни на какие вершины, все вершины головы нужно привязать к ValveBiped.Bip01_Head1. Выделим эту кость, затем выделим все вершины головы. Жмем 1 в панели Weight Tool

Вес выделенных вершин относительно ValveBiped.forward при этом стал равен нулю. С головой разобрались, займемся крупными суставами. Начнем с плеча. Для удобства анимируем плечевой сустав: выходим из редактирования Envelopes , жмем Auto Key, перемещаем ползунок в панели анимации фреймов на 50 вперед и, поворачивая кости, поднимаем руку. Ничего удивительного в том что меш деформируется как попало.

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

Теперь у нас есть анимация руки. Возвращаемся на вкладку Envelopes. Теперь наша задача поставить вершины в нужное положение, но не путем их перемещения, а путем изменения веса относительно разных костей. Выбираем вершину, которая расположена не правильно и в панели Weight Tool изменяем значения веса до тех пор, пока вершина не станет в нужное положение. В процессе настройки можно подвигать ползунок в панели анимации и посмотреть на поведение редактируемой вершины в динамике.

Так гораздо лучше

Все, эта анимация нам больше не нужна, можно ее удалить. Выходим из редактирования Envelopes, нажимаем Ctrl+A, возвращаем ползунок в панели анимации на нулевой фрейм, и на вкладке Animation выбираем Delete Selected Animation

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

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

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

Красным цветом отмечены вершины, не имеющие зеркальной копии, в моем случае это портупея и кобура, эти вершины придется настраивать вручную. Половину туловища с вершинами окрашенными синим я уже настроил, теперь нужно присвоить те же значения весов вершинам окрашенным зеленым. Жмем пиктограмму Paste Blue to Green Bones Все, грубую настройку можно считать законченной. Для более точной настройки нам понадобятся анимации, которые модель будет использовать в игре. Некоторые из них можно найти в папке sourcesdk_contenthl2modelsrchumans_sdk , если этого недостаточно, можно самостоятельно декомпилировать файлы анимации нужного персонажа.

Перед тем как импортировать анимацию, сделаем следующее: создадим в директории hl2/models папку с именем модели. Заходим на вкладку Time Configuration и выставим Start Time 0 End Time 1

Теперь экспортируем файл в формат smd как Skeletal Animation в только что созданную папку под именем ragdoll. Теперь загружаем какую-нибудь стандартную анимацию File > Import > имя файла анимации в формате smd.

Используя описанные выше приемы, добиваемся правильной деформации сетки. По завершении работы с анимацией ее так же удаляем, а для того чтобы вернуть модель в исходную позу, импортируем сохраненный ранее ragdoll.smd В результате этих операций в сцене могут появиться лишние кости, оставшиеся после импорта анимаций, их можно безболезненно удалить. Еще хочу отметить, что к костям с именами ValveBiped.Anim_Attachment_LH и ValveBiped.Anim_Attachment_RH , так же как и к ValveBiped.forward не привязывается ни одна вершина модели. По завершении настройки экспортируем модель в формат smd в папку hl2/models/имя_модели , в которую до этого импортировали ragdoll.smd, а исходник сохраняем в формате .max

Далее: Компиляция модели.

Развертка тела персонажа в 3d Max

Оглавление:

1. Подготовительный этап, создание концепции и подготовка к моделированию персонажа в 3d max

2. Моделирование головы персонажа

3. Развертка головы для последующего текстурирования

4. Моделирование тела персонажа

5. Моделирование кисти руки

6. Развертка тела персонажа

7. Анимация (скелет и модификатор skin)

8. Компиляция модели

9. Лицевая анимация и финальная компиляция

VI

Вот такой вот балван получился в итоге

Теперь поступим как с головой: Разморозим зеркальную копию, конвертируем в Editable Poly и приаттачим половинки друг к другу, после чего выделив все вершины, склеим обе половинки при помощи Weld. Все, пора приделать голову. Выделяем туловище, жмем Attach и щелкаем по голове. Теперь переходим на уровень редактирования вершин и используя Target Weld вручную присоединяем вершины шеи к вершинам основания черепа.

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

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

Как будто все, можно приступать к развертке туловища.

Назначим всем полигонам туловища собственный ID и применим к модели модификатор Unwrap UVW, жмем Edit и в выпадающем списке выбираем этот ID, выделяем все Face, правый клик, Detach Edge Verts. Затем Mapping -> Flatten Mapping получаем вот такую картину

Да уж, впечатляет. Не один час может уйти на то, чтобы привести это в порядок, но что поделать, делай что должен, и будь что будет J Вот что у меня получилось в итоге

Теперь все готово для текстурирования. Заходим на вкладку Tools>Render UVW Template Выставляем размер будущей текстуры и жмем Render после чего сохраняем этот шаблон, по нему и будем рисовать текстуру.

То же самое проделаем с разверткой головы. Для глаз и зубов будем использовать текстуры все того же male_07

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

Конвертируем готовые текстуры в формат vtf. Создаем папку с именем модели в директории hl2/materials/Models и складываем текстуры туда вместе с текстурами для глаз и зубов. Для каждой текстуры создадим vmt файл, примеры vmt смотрим у оригинальных моделей.Затем накладываем эти текстуры на модель в максе (понадобится плагин 3DSMax_VTF_Import)

Важно! Нельзя путать текстуры для глаз, eyeball_r накладывается на правый глаз, eyeball_l соответственно на левый.

Все, модель готова, пора заставить ее двигаться.

Далее: Анимация (скелет и модификатор skin).

Моделирование кисти руки в 3d Max

Оглавление:

1. Подготовительный этап, создание концепции и подготовка к моделированию персонажа в 3d max

2. Моделирование головы персонажа

3. Развертка головы для последующего текстурирования

4. Моделирование тела персонажа

5. Моделирование кисти руки

6. Развертка тела персонажа

7. Анимация (скелет и модификатор skin)

8. Компиляция модели

9. Лицевая анимация и финальная компиляция

V

Кисть руки лучше делать в отдельном файле. Я обошелся одной референсной фотографией, благо референс всегда под рукой J

Создаем box 8Х4Х2, затем конвертируем в Editable Poly и переходим на уровень редактирования вершин.

Подровняем немного вершины по референсу.

Инструментом cut создадим промежутки между пальцами, примерно вот так, пока особая точность не нужна

Отделяем таким образом пальцы друг от друга.

Теперь выделяем полигоны в основании пальцев.

Нажимаем Extrede, и выдавливаем полигоны почти до конца фаланги, немного не доходя до сустава.

Теперь перейдем на уровень редактирования вершин, и округлим обрубки паьцев.

Проделаем это для всех четырех пальцев.

Теперь займемся суставом. Перейдем назад на уровень полигонов и снова выдавим полигоны в торцевой части пальцев, примерно до середины сустава, жмем Apply, потом ОК

Вернемся к вершинам и подкорректируем их положение по рефересу.

Затем снова выдавим полигоны до следующего сустава.

Пора немного согнуть пальцы. Для этого немного опустим полигоны и повернем.

Теперь снова подкорректируем положение вершин.

Дальше сформируем следующие суставы способом описанным выше.

И уточним их положение.

Снова выдавим полигоны для ногтевой фаланги.

Симпатичные такие грабли получаются J Теперь подвигаем вершины и сформируем кончики пальцев.

Закруглим так все четыре.

Пора заняться большим пальцем. Выделим полигоны в его основании.

Выдавим и повернем, вперед и вниз.

Сформируем сустав.

И ногтевую фалангу.

Так же закруглим кончик пальца.

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

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

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

Вот такую клешню вполне можно смастерить за пол часа.

Сохраняем файл, затем при помощи Merge добавляем к модели, приаттачиваем и соединяем вершины.

Далее: Развертка тела персонажа.

Моделирование тела персонажа

Оглавление:

1. Подготовительный этап, создание концепции и подготовка к моделированию персонажа в 3d max

2. Моделирование головы персонажа

3. Развертка головы для последующего текстурирования

4. Моделирование тела персонажа

5. Моделирование кисти руки

6. Развертка тела персонажа

7. Анимация (скелет и модификатор skin)

8. Компиляция модели

9. Лицевая анимация и финальная компиляция

IV

Схема примерно та же, что и с моделированием головы. Первым делом подготавливаем эскизы будущей модели и помещаем их в соответствующие вьюпорты. Теперь самое время позаботиться о скелете. Не мудрствуя лукаво, поступим как и с зубами – позаимствуем этот самый скелет у какой-либо стандартной модели HL2. Я декомпилировал male_07. Итак, открываем наш файл с головой, затем File >Import и импортируем male_07_referenc.smd

Инструментом Select and Uniform Scale подгоним размер головы под импортированную модель, развернем и приладим туда где она должна быть

Теперь самое время обобрать несчастного male_07 J, перейдем на уровень редактирования Element, выделим зубы, Сtrl+I (инверсия выделения) и Del. Кстати, модификатор Skin из стека модификаторов тоже нужно удалить.

Теперь у нас имеется голова с зубами и скелет.

Подправим положение зубов, поместим на background вьюпортов эскизы модели и приступим наконец к моделированию туловища.

Моделирование тела я обычно начинаю с ног, в данном случае – с ботинка.

Создадим box в области ботинка и конвертируем в Editable Poly

Дальше, создавая дополнительные разрезы инструментом Cut и перемещая вершины, придадим ему нужную форму.

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

Копируем ребра, перемещаем вершины в нужное положение, ничего сложного.

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

Тщательно проработаем плечо

Грудь и спину

Теперь обозначим воротник кителя

Далее: Моделирование кисти руки.

Развертка головы для последующего текстурирования

Оглавление:

1. Подготовительный этап, создание концепции и подготовка к моделированию персонажа в 3d max

2. Моделирование головы персонажа

3. Развертка головы для последующего текстурирования

4. Моделирование тела персонажа

5. Моделирование кисти руки

6. Развертка тела персонажа

7. Анимация (скелет и модификатор skin)

8. Компиляция модели

9. Лицевая анимация и финальная компиляция

III

Для создания развертки выделим голову и применим к ней модификатор Unwrap UVW. В параметрах модификатора жмем Edit,

в открывшемся окне редактора UVW координат нажимаем иконку Face Sub-object Mode затем во вкладке Mapping -> Flatten Mapping выставляем параметр Face Angel Threshold равным 60, Spacing – 0 жмем ОК. Получаем примерно такую картину:

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

Выберем соответствующий ID чтобы скрыть элементы относящиеся к другим текстурам, выделим все Face, правый клик, Detach Edge Verts, этим действием мы отсоединим текстурные координаты головы от других частей с которыми они могут оказаться связаны ( глаза, ротовая полость) Жмем Vertex Sub-object Mode и выделяем все вертексы фронтальной части головы и оттаскиваем эту часть в сторонку, освобождая место для маневров.

Теперь наша задача состоит в том, чтобы избавиться от нежелательных швов (отмечены зелеными линиями) и свести к минимуму неизбежные искажения. Синим цветом подсвечиваются вершины, которые «дружат» с выделенными. Совмещаем куски развертки и соединяем вершины в местах разрезов (правый клик Target Weld)

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

Используя Target Weld, постепенно соединяем вершины и выравниваем сетку

То же самое проделываем и с другой половиной головы

Уши я развернул отдельно и скомпоновал всю развертку

Контроль искажений удобно осуществлять при помощи наложения на модель Checker Pattern

Подправляем развертку в проблемных областях, передвигая вершины

Далее развернем отдельно каждый глаз

И ротовую полость вместе с зубами

Все, моделирование головы можно считать законченным. Пора приступать к туловищу: Моделирование тела персонажа.

Моделирование головы человека в 3d max

Оглавление:

1. Подготовительный этап, создание концепции и подготовка к моделированию персонажа в 3d max

2. Моделирование головы персонажа

3. Развертка головы для последующего текстурирования

4. Моделирование тела персонажа

5. Моделирование кисти руки

6. Развертка тела персонажа

7. Анимация (скелет и модификатор skin)

8. Компиляция модели

9. Лицевая анимация и финальная компиляция

II

Голову можно создавать по-разному, некоторые используют для этого стандартные примитивы, постепенно добавляя разрезы и перетаскивая вершины, я опишу способ создания головы из одного полигона. Для этого жмем Create-> Shapes-> Line и в боковом виде обводим эскиз по периметру. Замыкаем сплайн, переходим на уровень редактирования вершин и корректируем, если нужно, положение отдельных вертексов.

Вершины желательно располагать на примерно одинаковом расстоянии друг от друга. На макушке и затылке расстояния между вершинами можно увеличить, там большая детализация ни к чему. Когда эта работа закончена, жмем правую клавишу мыши и выбираем в контекстном меню Convert to Editable Poly

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

затем этот полигон удаляем, он нам больше не понадобится.

Моделировать мы будем только одну половину головы, вторую получим зеркально отразив первую. Для этого выделяем нашу конструкцию, жмем иконку Mirror и в открывшемся диалоге выбираем Instans и ось по которой следует отразить, у меня это Х.

Теперь все изменения, которые будут проделаны с первой половиной, автоматически присвоятся и ее зеркальной копии. Зайдем в свойства только что созданной зеркальной копии, поставим галку напротив Freeze, чтобы зеркальная копия не путалась под руками, и снимем галку Show Frozen in Gray.

Так, тут я немного расширю полигоны в верхней части головы.

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

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

Таким же образом копируем ребро вниз по контуру головы.

Аналогичным образом создадим линию лба.

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

Затем затылок таким же образом. Получается такой вот шлем

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

Дальше брови и глаза.

Воспользовавшись инструментом Cut добавим несколько разрезов, чтобы обозначить верхнее веко.

Продолжаем с боковой частью головы.

Что-то уж больно синяя рожа получается, поменяю на более привычный серый

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

Затем нижнюю губу и подбородок.

Вот собственно и все лицо.

Заделываем дыру на затылке. Все, шею будем делать потом.

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

Затем удалим внутренние полигоны и из крайних ребер начнем формировать ухо.

Вот такое ухо у меня получилось.

Оставим в покое ухо, займемся ртом. Создадим этакое подобие ротовой полости. Для удобства я скрыл все полигоны головы кроме полигонов верхней и нижней губы (Poligon > Hide Uncelected)

Копируя крайние ребра разреза рта, создаём замкнутую коробку, в которую в последствии поместим зубы. Сами зубы можно позаимствовать у декомпилированной модели какого-либо стандартного персонажа HL2, если только вы не собираетесь сделать вампирские клыки или что-нибудь еще в таком духе. Для этого нужно открыть smd модель в максе, удалить все элементы кроме зубов, сохранить в отдельный файл. Потом добавить их к собственной модели File>Merge>Имя_файла_с_зубами. Почти наверняка зубы не подойдут по размеру, это от того, что масштаб создаваемой модели не совпадает с масштабом стандартных моделей. Так что модель придется масштабировать, но пока это не критично.

Все, голова с ушами и ртом есть, пора склеивать обе половинки. Разморозим зеркальную половину (Unfreeze All), выделим ее и конвертируем в Editable Poly, открываем контекстное меню, жмем Attach и щелкаем по второй половинке, чтобы соединить их в один объект. Переходим на уровень редактирования вершин, выделяем все (Ctrl+A) и жмем Weld, чтобы соединить обе половины головы

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

Проделаем то же самое с левым глазом, назначив ему другой ID, потом полость рта (тот же ID что и зубам)

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

Все, можно переходить к следующему этапу – развертке: Развертка головы для последующего текстурирования