prop_vehicle_jeep V1.0
Всем здравствуйте. Этот тутор раскажет, как создать свой транспорт в Hilf Life 2.
Для этого тутора, я использую программу 3DMax седьмой версии и зарание
мною смоделированную модель.Я предпологаю, что у вас есть элементарные
знания относительно 3д мах, а также знания, как импортировать модель в
Half Life 2. Смоделируйте свою модель, или используйте уже
готовую "Car_tut.max" которая прилогается к этому тутору. Запустите
Material Editor, выбирете любую ячейку с материалом и загрузите в цвет
"diffuse" текстуру "kraska.tga", каторая прилогается к этому тутору,
выберите модель и назначте ей толькочто созданный материал, примените к
модели модификатор UVW map, потом модификатор "Editable Mesh".
Дальше вам нужно создать 14 костей и связать их в иерархию.Создайте
первую кость, назовите ее "Rig_Buggy.Frame" и разместите примерно так,
как показанно на рисунке ниже с параметрами rotate 90 0 0:
Дальше создайте вторую кость и назовите ее "Rig_Buggy.view" эту кость
разместие перед рулем, где должен сидеть игрок, на уровне его глаз с
параметроми rotate 0 0 -90
Дальше создайте третью кость и назовите ее "Rig_Buggy.Steer_Wheel" эту
кость разместите по центру руля и с наклоном, как у руля см.рисунок:
Дальше создайте четвертую кость и назовите ее
"Rig_Buggy.Wheel_FL_Turn_parent" разместите ее по центру левого
переднего колеса, как показанно на рисунке ниже с параметроми rotate 0
0 0
дальше создайте пятую кость, назовите ее "Rig_Buggy.Wheel_FL_Rotate" и
разместите ее по центру левого переднего колеса так, чтобы кость
находилась внутри колеса с параметром rotate 0 0 180
Дальше в окне вид сверху выделите кости
"Rig_Buggy.Wheel_FL_Turn_parent" и "Rig_Buggy.Wheel_FL_Rotate" и
отразите их инструментом Mirror по оси X, с копированием костей и
передвинте толькочто клонированные кости, к правому переднему колесу и
переменуйте их так "Rig_Buggy.Wheel_FR_Turn_parent" и
"Rig_Buggy.Wheel_FR_Rotate"
Дальше создайте четыре кости для задних колес также, как создовали
ранее, для передних колес, Rig_Buggy.Axel_RR и Rig_Buggy.Wheel_RR, для
заднего правого колеса, кость с именем Rig_Buggy.Wheel_RR должна
находится внутри колеса с параметром rotate 0 0 0 и Rig_Buggy.Axel_RL,
Rig_Buggy.Wheel_RL, для заднего левого колеса, Rig_Buggy.Wheel_RL
должна находится внутри колеса с параметром rotate 0 0 180
Теперь соединим кости в иерархию.Выделите кость
Rig_Buggy.Wheel_FR_Rotate нажмите кнопку select and link и свяжите ее с
костью Rig_Buggy.Wheel_FR_Turn_parent, потм выделите кость
Rig_Buggy.Wheel_FL_Rotate свяжите ее с костью
Rig_Buggy.Wheel_FL_Turn_parent, дальше выделите кость
Rig_Buggy.Wheel_RR и свяжите ее с костью Rig_Buggy.Axel_RR, дальше
выделите кость Rig_Buggy.Wheel_RL и свяжите ее с костью
Rig_Buggy.Axel_RL, дальше выделите кости
Rig_Buggy.Wheel_FR_Turn_parent, Rig_Buggy.Wheel_FL_Turn_parent,
Rig_Buggy.Axel_RR, Rig_Buggy.Axel_RL, Rig_Buggy.view,
Rig_Buggy.Steer_Wheel и свяжите их с костью Rig_Buggy.Frame все, вы
создали иерархию из костей.Теперь нужно создать еще три независимые
кости.Создайте кость с названием Rig_Buggy.exit1 и разместите ее с
левой стороны машины, на высоту примерно с половину роста игрока с
параметром rotate 0 0 -90
Теперь создайте кость с именем Rig_Buggy.enter1, разместите ее также,
как и Rig_Buggy.exit1, только сдвинув ее немного в сторону и с
параметром rotate 0 0 -180
.Дальше создайте последнию кость Rig_Buggy.Mesh с параметром move 0 0 0
и rotate 90 0 0.Теперь выделите нашу модель и примените, к ней
модификатор Skin, в закладке параметры нажмите кнопку Add вылезит окно
Select Bones нажмите кнопку All и потом Select
Теперь свяжим нашу модель с костями, перетащите ползунок анимации на 50
кадр, нажмите кнопку Auto key, дальше на командной панели, в стеке
модификаторов, нажмите на Editable Mesh, на закладке Selection нажмите
Element, дальше в окне перспективы выделяем правое переднее колесо и
перетаскиваем в сторону и остальные колеса также, руль тоже в сторону
примерно так:
Теперь отожмем кнопку Auto key, мы создали анимацию, для того, чтобы
было удобно присоединять к костям элементы нашей машины.Дальше в стеке
модификаторов, нажмите на модификатор Skin, на закладке параметры, в
группе Select, поставте галочку напротив Vertices, дальше выделите
кость Rig_Buggy.Wheel_FL_Rotate и мышкой в окне перспективы выделите
левое переднее колесо, выделятся все вершины колеса, дальше на закладке
параметры, в групе Weigth Properties, в Abs. Effect поставте 1,0, все
мы связали колесо и кость, далше тоже самое проделайте, для правого
переднего колеса, эта кость Rig_Buggy.Wheel_FR_Rotate, потом для
заднего левого, эта кость Rig_Buggy.Wheel_RL, потом для заднего
правого, эта кость Rig_Buggy.Wheel_RR, все колеса связали, теперь
выделите кость Rig_Buggy.Steer_Wheel, выделите руль и в Abs. Effect
поставте 1,0, дальше выделите кость Rig_Buggy.Wheel_FL_Turn_parent
выделите вершины которые показанны на рисунке ниже и в Abs. Effect
поставте 1,0
тоже самое проделайте для кости Rig_Buggy.Wheel_FR_Turn_parent с правой
стороны переднего правого колеса, теперь выделите Rig_Buggy.Axel_RR у
правого заднего колеса выделите вершины заднего моста с правой стороны
и в Abs. Effect поставте 1,0
тоже самое проделайте с левой стороны для кости Rig_Buggy.Axel_RL,
теперь выделите Rig_Buggy.Frame и выделите вершины всего корпуса
модели, как показанно на рисунке и в Abs. Effect поставте 1,0
Дальше выйдите из редактирования в стеке модификаторв нажмите на Skin,
передвинте ползунок анимации на нулевой кадр, выделите все ключи и
удалите их, выделите кость Rig_Buggy.Frame и подвигайте ее по сторонам,
если модель полностью двигается в месте с костями, значит модель
полностью связана с костями, если часть модели остается на месте
исправте это.Теперь экспортируйте свою модель, как Reference под именем
Car_ref.smd и сохраните ее как Car_tut.max.Теперь создадим три анимации
с названиями Car_turn, Car_suspension, Car_wheelspin.Выделите модель и
удалите ее, выделите кости Rig_Buggy.enter1 и Rig_Buggy.exit1 и удалите
их тоже.Выделите кость Rig_Buggy.Mesh и переменуйте ее в New_Mesh.Mesh
в Time Configuration в группе Animation установите start time 0 а end
time 2.Перейдите в окно Top, выделите кости
Rig_Buggy.Wheel_FR_Turn_parent, Rig_Buggy.Wheel_FL_Turn_parent и
Rig_Buggy.Steer_Wheel передвинте ползунок анимации на кадр 1, на
ползунке щелкните правой кнопкой мыши вылезит окно Create Key, поставте
галочку напротив Rotation и нажмите ok создатся ключ анимации, дальше
передвинте ползунок на 0 кадр, в окне вид сверху выделите кость
Rig_Buggy.Wheel_FR_Turn_parent, нажмите кнопку Auto Key и поверните
кость на -25 градусов по оси Z создатся ключ анимации, дальше
передвинте ползунок анимации на кадр 2, поверните кость на 25 градусов
по оси Z, дальше выделите кость Rig_Buggy.Wheel_FL_Turn_parent,
передвинте ползунок анимации на кадр 0, поверните кость на -25 градусов
по оси Z создатся ключ, потом передвинте ползунок на кадр 2, поверните
кость на 25 градусов по оси Z создатся ключ, перейдите в окно Front,
выделите кость Rig_Buggy.Steer_Wheel, передвинте ползунок анимации на
кадр 0, поверните кость на 25 градусов вверх создатся ключ, передвинте
ползунок на кадр 2 поверните кость на -25 градусов вниз создатся ключ,
отожмите кнопку Auto Key, все мы создали первую анимацию имитирущую
поворот руля и колес, экспортируйте модель как Skeletal Animation с
названием Car_Turn. Дальше передвинте ползунок анимации на
кадр 1, выделите все кости и удалите все ключи анимации.Теперь создадим
анимацию Car_wheelspin.Щелкаем на Time Configuration, ставим в в группе
анимации Start Time 0 и End time 9 жмем ok.В окне перспективы выделите
кости Rig_Buggy.Wheel_FR_Rotate и Rig_Buggy.Wheel_FL_Rotate, перейдите
в окно вид сбоку слева, перетащите ползунок на кадр 1 жмем кнопку Auto
Key и поворачиваем выделенные кости на 40 градусов по часовой стрелки и
проделайте тоже самое в каждом кадре до девятого кадра, отожмите кнопку
Avto Key, выделите ключ кадра 0 и клонируйте его в кадр 9, все для
передних колес анимацию сделали, теперь для задних колес, выделите
кости Rig_Buggy.Wheel_RR и Rig_Buggy.Wheel_RL и проделайте тоже самое,
что для передних колес.Теперь экспортируйте модель, как Skeletal
Animation с названием Car_wheelspin. Дальше передвинте
ползунок анимации на кадр 0, выделите все кости и удалите все ключи
анимации. Щелкаем на Time Configuration, ставим в в группе анимации
Start Time 0 и End time 2 жмем ok.Выделяем все кости, двигаем ползунок
на кадр 1, щелкаем правой кнопкой мыши появится окно Create Key, ставим
везде галочки жмем ok.Теперь выделяем кость
Rig_Buggy.Wheel_FR_Turn_parent, жмем на командной панели закладку
иерархия, жмем на кнопку Link Info и на закладке Inherit в группе Move
снимем галочку с оси Z, тоже самое проделайте для кости
Rig_Buggy.Wheel_FL_Turn_parent.Теперь ползунок анимации передвинте на
кадр 0, выделите кость Rig_Buggy.Frame, жмем кнопку Auto Key и в окне
вид спереди передвигаем кость вниз примерно так:
а в кадре 2 поднимите кость выше, примерно на такоеже растояние, как и
вниз.Затем перей дите в кадр 0, выделите кость Rig_Buggy.Axel_RR и
спомощью Rotate поверните кость вверх так, чтобы центр кости
Rig_Buggy.Wheel_RR был по центру кости Rig_Buggy.Wheel_FR_Rotate:
дальше перейдите в кадр 2 и поверните кость Rig_Buggy.Axel_RR вниз так,
чтобы центр кости Rig_Buggy.Wheel_RR был по центру кости
Rig_Buggy.Wheel_FR_Rotate, тоже самое проделайте для кости
Rig_Buggy.Axel_RL.Эта анимация имитерует амортизаторы
колес.Экспортируйте модель, как Skeletal Animation с названием Car_
suspension.Все необходимые анимации мы сделали.Теперь создадим физбокс
для модели.В меню File выберите Reset, теперь загрузите ранее
сохраненый фаил Car_tut.Выделите все кости кроме Rig_Buggy.Frame и
Rig_Buggy.Mesh и удалите их, в стеке модификаторов нажмите Editable
Mesh > Element выделите все колеса и удалите их, группы сглаживания
на каждый элимент должны быть разные.и незабудьте удалите все ключи
анимации.Дальше в стеке модификаторов нажмите на Skin, выделите кость
Rig_Buggy.Frame, выделите всю модель и в Abs. Effect поставте 1,0. Экспортируйте модель как Reference c именем Car_Phy. Теперь с помощью блокнота создайте файл с именем Car_tut.qc и запишите следущие: $modelname buggy.mdl $cdmaterials models/buggy $origin 0 0 0 90 $scale 1.0 $body "Body" "Car_Ref.smd" $surfaceprop "metal" $noforcedfade $include "Car_shared.qci" Дальше создайте еще один фаил с именем Car_shared.qci и запишите следущие: //----- KeyValues ----- $keyvalues { "vehicle_exit" { // Entries are: Key = exit animation, Value = "upright" or "upsidedown" "exit1" "upright" } } //----- Attachments ----- $attachment wheel_fl "Rig_Buggy.Wheel_FL_Rotate" 0 0 0 $attachment wheel_fr "Rig_Buggy.Wheel_FR_Rotate" 0 0 0 $attachment wheel_rl "Rig_Buggy.Wheel_RL" 0 0 0 $attachment wheel_rr "Rig_Buggy.Wheel_RR" 0 0 0 //Это глаза нашего игрока их положение регулируется в Model Viewer $attachment "vehicle_driver_eyes" "Rig_Buggy.view" 5.00 0.00 -6.00 rotate 0 0 0 $attachment vehicle_feet_passenger0 "Rig_Buggy.view" 0 0 -32 //двигатель модели регулируется положение в Model Viewer $attachment "vehicle_engine" "Rig_Buggy.Frame" 0.00 0.00 -40.00 rigid //Выход из модели положение регулируется в Model Viewer $attachment "exit1" "Rig_Buggy.Frame" 60.00 23.00 28.00 rotate -90 -90 0 rigid //Вход положение регулируется в Model Viewer $attachment "enter1" "Rig_Buggy.Frame" 60.00 23.00 10.00 rotate 0 -180 90 rigid $attachment "beam_damage" "Rig_Buggy.Frame" 17.00 20.00 49.00 rotate 0 0 0rigid //----- Pose Parameters ----- $poseparameter "vehicle_guage" 0 1 $poseparameter "vehicle_steer" -1 1 $poseparameter "vehicle_wheel_fl_height" 0 1 $poseparameter "vehicle_wheel_fr_height" 0 1 $poseparameter "vehicle_wheel_rl_height" 0 1 $poseparameter "vehicle_wheel_rr_height" 0 1 $poseparameter "vehicle_wheel_fl_spin" -180 180 wrap $poseparameter "vehicle_wheel_fr_spin" -180 180 wrap $poseparameter "vehicle_wheel_rl_spin" -180 180 wrap $poseparameter "vehicle_wheel_rr_spin" -180 180 wrap // --------- Animation sequences ------- $sequence "idle" "Car_Ref" fps 30 ACT_IDLE 1 //addlayer aim_all $sequence "turn" "Car_turn" fps 30 $sequence "suspension" "Car_suspension" fps 30 $sequence "spin" "Car_wheelspin" fps 30 $animation neutral "Car_Ref" frames 0 0 // front steering sequence
$weightlist front_wheels { "Rig_Buggy.Wheel_FL_Turn_parent" 1.0
"Rig_Buggy.Wheel_FR_Turn_parent" 1.0 "Rig_Buggy.Steer_Wheel" 1.0 } $animation turn_left "Car_turn" frame 0 0 subtract neutral 0 weightlist front_wheels $animation turn_right "Car_turn" frame 2 2 subtract neutral 0 weightlist front_wheels $sequence turning { turn_left turn_right blend vehicle_steer -1 1 } weightlist front_wheels delta autoplay // front right $weightlist wheel_fr { "Rig_Buggy.Wheel_FR_Turn_parent" 1.0 } $animation wheel_fr_low "Car_suspension" frame 0 0 subtract neutral 0 weightlist wheel_fr $animation wheel_fr_high "Car_suspension" frame 2 2 subtract neutral 0 weightlist wheel_fr
$sequence wheel_fr_suspension { wheel_fr_low wheel_fr_high blend
"vehicle_wheel_fr_height" 0 1.0 } weightlist wheel_fr delta autoplay $weightlist wheel_fr_spin { "Rig_Buggy.Wheel_FR_Rotate" 1.0 } $animation wheel_fr_spin0 "Car_wheelspin" frame 0 0 subtract neutral 0 weightlist wheel_fr_spin $animation wheel_fr_spin120 "Car_wheelspin" frame 3 3 subtract neutral 0 weightlist wheel_fr_spin $animation wheel_fr_spin240 "Car_wheelspin" frame 6 6 subtract neutral 0 weightlist wheel_fr_spin
$sequence wheel_fr_spin { wheel_fr_spin0 wheel_fr_spin120
wheel_fr_spin240 wheel_fr_spin0 blendwidth 4 blend
"vehicle_wheel_fr_spin" -180 180 } weightlist wheel_fr_spin delta
autoplay // front left $weightlist wheel_fl { "Rig_Buggy.Wheel_FL_Turn_parent" 1.0 } $animation wheel_fl_low "Car_suspension" frame 0 0 subtract neutral 0 weightlist wheel_fl $animation wheel_fl_high "Car_suspension" frame 2 2 subtract neutral 0 weightlist wheel_fl
$sequence wheel_fl_suspension { wheel_fl_low wheel_fl_high blend
"vehicle_wheel_fl_height" 0 1.0 } weightlist wheel_fl delta autoplay $weightlist wheel_fl_spin { "Rig_Buggy.Wheel_FL_Rotate" 1.0 } $animation wheel_fl_spin0 "Car_wheelspin" frame 0 0 subtract neutral 0 weightlist wheel_fl_spin $animation wheel_fl_spin120 "Car_wheelspin" frame 3 3 subtract neutral 0 weightlist wheel_fl_spin $animation wheel_fl_spin240 "Car_wheelspin" frame 6 6 subtract neutral 0 weightlist wheel_fl_spin
$sequence wheel_fl_spin { wheel_fl_spin0 wheel_fl_spin120
wheel_fl_spin240 wheel_fl_spin0 blendwidth 4 blend
"vehicle_wheel_fl_spin" -180 180 } weightlist wheel_fl_spin delta
autoplay // rear right $weightlist wheel_rr { "Rig_Buggy.Axel_RR" 1.0 "Rig_Buggy.Wheel_RR" 0.0 } $animation wheel_rr_low "Car_suspension" frame 0 0 subtract neutral 0 weightlist wheel_rr $animation wheel_rr_high "Car_suspension" frame 2 2 subtract neutral 0 weightlist wheel_rr
$sequence wheel_rr_suspension { wheel_rr_low wheel_rr_high blend
"vehicle_wheel_rr_height" 0 1.0 } weightlist wheel_rr delta autoplay $weightlist wheel_rr_spin { "Rig_Buggy.Wheel_RR" 1.0 } $animation wheel_rr_spin0 "Car_wheelspin" frame 0 0 subtract neutral 0 weightlist wheel_rr_spin $animation wheel_rr_spin120 "Car_wheelspin" frame 3 3 subtract neutral 0 weightlist wheel_rr_spin $animation wheel_rr_spin240 "Car_wheelspin" frame 6 6 subtract neutral 0 weightlist wheel_rr_spin
$sequence wheel_rr_spin { wheel_rr_spin0 wheel_rr_spin120
wheel_rr_spin240 wheel_rr_spin0 blendwidth 4 blend
"vehicle_wheel_rr_spin" -180 180 } weightlist wheel_rr_spin delta
autoplay // rear left $weightlist wheel_rl { "Rig_Buggy.Axel_RL" 1.0 "Rig_Buggy.Wheel_RL" 0.0 } $animation wheel_rl_low "Car_suspension" frame 0 0 subtract neutral 0 weightlist wheel_rl $animation wheel_rl_high "Car_suspension" frame 2 2 subtract neutral 0 weightlist wheel_rl
$sequence wheel_rl_suspension { wheel_rl_low wheel_rl_high blend
"vehicle_wheel_rl_height" 0 1.0 } weightlist wheel_rl delta autoplay //$weightlist wheel_rl { "Rig_Buggy.Wheel_RL" 0.0 } //$animation wheel_rl_low "Car_suspension" frame 0 0 subtract neutral 0 weightlist wheel_rl //$animation wheel_rl_high "Car_suspension" frame 2 2 subtract neutral 0 weightlist wheel_rl
//$sequence wheel_rl_suspension { wheel_rl_low wheel_rl_high blend
"vehicle_wheel_rl_height" 0 1.0 } weightlist wheel_rl delta autoplay $weightlist wheel_rl_spin { "Rig_Buggy.Wheel_RL" 1.0 } $animation wheel_rl_spin0 "Car_wheelspin" frame 0 0 subtract neutral 0 weightlist wheel_rl_spin $animation wheel_rl_spin120 "Car_wheelspin" frame 3 3 subtract neutral 0 weightlist wheel_rl_spin $animation wheel_rl_spin240 "Car_wheelspin" frame 6 6 subtract neutral 0 weightlist wheel_rl_spin
$sequence wheel_rl_spin { wheel_rl_spin0 wheel_rl_spin120
wheel_rl_spin240 wheel_rl_spin0 blendwidth 4 blend
"vehicle_wheel_rl_spin" -180 180 } weightlist wheel_rl_spin delta
autoplay //----- Physbox ----- $collisionmodel "Car_phy.smd" { // Mass in kilograms $Mass 800 $concave }
Теперь скомпилируйте модель под именем buggy.mdl и текстуру под именем
kraska.vtf.Текстур положите сюда: [ваш мод]\materials\Models\Buggy а
модель здесь:[ваш мод]\Models.Вобще имя модели может быть и другим.На
вашу карту модель добовляется в Hammer через Object Properties закладка
ClassInfo>Class> prop_vehicle_jeep Готовую модель и остальные вещи к туториалу качать здесь
Источник: http://crankshaft.3dn.ru/load/3-1-0-2 |