Всем здравствуйте. Этот тутор раскажет, как создать свой транспорт в 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 |