Перед тем как приступить к импорту модели сделайте следующую процедуру:
![](http://csexe.at.ua/_bl/0/s37981.jpg)
Это нужно для того чтобы единицы измерения макса совпадали с движком half-life.
Далее всё за планом, декомпилим v_ak47.mdl, импортим файл f_ak47_template.smd:
![](http://csexe.at.ua/_bl/0/s91495.jpg)
![](http://csexe.at.ua/_bl/0/s45041.jpg)
1. Парсер настроек SMD файла.
- Skip Mesh - не импортить геометрию(меш);
- Skip Animation - не импортить анимацию, следственно не будет костей и привязки.
В нашем случае нужно оставить пустыми оба чекбокса т.к. нужно всё.
2.Настройки SMD импортёра.
SMD Statistics(информация о файле):
- 42 кости;
- 258 вертекса;
- 454 фейса;
- 1 кадр анимации;
- 8 текстур.
Mesh Options(опции геометрии):
- Import mesh - импортить геометрию;
- Rebuild smoothing normals - сохранить группы сглаживания при импорте;
- Import materials - тут всё ясно.
Bone/Animation Options(настройки костей/анимации):
- Import bones - импортить кости;
- Use dummy for orphan bones - использовать dummy как первичную кость;
- Use dummy for end bones - использовать dummy как конечную кость;
- Skin mesh to bones - привязать геометрию к костям;
- Import first frame (reference) only - импортировать лишь первый кадр, используется для reference моделей, здесь также можно ставить галку;
- Reverse animation - обратная анимация;
Misc. Options(другие опции):
- Convert from left handed coordinate space - ставьте галку если импортите модель с левой руки(понять правильно);
Примечание: dummy - вспомогательный объект в максе, может использоваться в роли кости.
Важно: reference-модель - не содержит абсолютно никакой анимации, в движке half-life используется для передачи в анимацию - геометрии, текстур и привязки костей(в нашем случае это f_ak47_template.smd).
![](http://csexe.at.ua/_bl/0/s15659.jpg)
Зачастую, помимо основной модели для удобства, я импортирую и модели рук, они находятся в файлах lhand.smd(левая) и rhand.smd(правая). Импорт рук происходит по тому же принципу - что и основная модель, на запрос Import Name Conflict введите имя объекта(любое, желательно чтобы описывало его, в моём случае "left_hand" - для левой руки)
![](http://csexe.at.ua/_bl/0/19360.jpg)
Важно: импорт рук не обязательно делать в референсную модель, я делаю это исключительно для удобства, чтоб видить как проходят руки через основную модель, не затрагивает ли её части. Повторюсь это лишь для удобства, делать не обязательно. Перед экспортом основной модели f_ak47_template.smd модели рук(кости не трогать) нужно будет удалить.
А сейчас давайте временно скроем кости которые мешают осмотреть модель:
![](http://csexe.at.ua/_bl/0/s05339.jpg)
Переходим во вкладку Display, и хайдим(скрываем) кости.
Важно: перед экспортом обязательно включите показ костей
Подключаем текстуры в сцену:
![](http://csexe.at.ua/_bl/0/s11199.jpg)
Asset Tracking - служит для отображения абсолютно всех текстур в сцене, а также подключаемых ies-светильников и шейдеров. Если в друг текстуры не отображаются, - нужно нажать кнопку Refresh(обновить) в левом верхнем углу.
Выделяем все текстуры при помощи Shift+LB(левая кнопка мыши), затем RB - выбираем пункт Set Path(выбрать путь) и находим нужную нам папку.
2. На втором скрине я уже выбрал путь к текстурам(у вас может быть другой путь), но ещё не нажал кнопку OK, видно как все текстуры находятся в статусе File Missing, то есть - не найдены.
3. Жмём OK, видим что все текстуры перешли в статус Ok - это именно то, что нам нужно. Закрываем Asset, но текстур как небыло так и нету)), - это излишки макса. Мы могли бы пройтись по каждому материалу отдельно и проставить отображение во-вьюпорте, ну это довольно неприятная процедура, , а я насчитал там аж 8 материалов, поэтому убиваем 2-х зайцев - сохраним файл и отобразим текстуры.
4. File -> Save As... - сохраняем в формате .max(желательно в той же папке).
5. Я назвал файл ak47_remake, сейвим...
6. Сбрасываем сцену File -> Reset.
7. Открываем только что сохранённую, File -> Open... находим, открываем.
Результат:
![](http://csexe.at.ua/_bl/0/s54446.jpg)
Далее делаем то самое дополнение, лепим из бокса:
![](http://csexe.at.ua/_bl/0/s63949.jpg)
Дополнением будет Red Dot так называемая - красная точка, порылся в нете и нашел неплохой скрин:
![](http://csexe.at.ua/_bl/0/36308.jpg)
Совет: перед тем как начать что-либо моделить, текстурить - поищите в сети референсы(примеры)
Так как смысл данного урока - короткий путь к удачному экспорту, мы пропускаем моделинг и текстурирование, о них пойдёт речь в следующих статьях. Итак, смотрим что у меня получилось, не стоит забывать о том движок Half-Life 1 очень слаб в поддержке большого количества полигонов, именно поэтому red dot не промоделен так - как вы видите выше на скриншоте:
![](http://csexe.at.ua/_bl/0/s89818.jpg)
Затекстурил и отмапил следующим образом:
![](http://csexe.at.ua/_bl/0/s84718.jpg)
Вкратце о тонкостях(если вы новичёк в максе - пропускайте шаг).
Начинаем моделить из бокса(бокс хорошо подошел в данном случае, зачастую начинаю с плейна), поскольку материалы экспортируются через Multi/Sub Object(честно признаться я этому очень рад, не каждый движок даже в наше время может позволить себе такую роскошь, многое также зависит и от экспортёра) назначаем Mat ID нашей модели, так как в модели планируется стёклышко делим модель(Red Dot) на 2 разных ID(почему - узнаете позже) - то есть:
- основная часть ID = 9 текстура red_dot.bmp;
- стёклышко ID = 10 текстура red_dot_a.bmp.
Мапим, текстурим. Присоединяем через Attach к основной модели(ак47), далее Skin - Red Dot привязываем к основной кости Bone_AK47.
Осталось дело за малым - экспорт и QC скрипт:
Перезаписываем f_ak47_template.smd, при экспорте обязательно укажите что экспортим для Half-Life 1 SMD:
![](http://csexe.at.ua/_bl/0/14591.jpg)
Пример скрипта под даную модель:
/*
==============================================================================
QC script generated by Half-Life MDL Decompiler 1.2
2003, Kratisto. Based on code from Valve's HL SDK.
v_ak47.mdl
Original internal name:
"v_ak47.mdl"
==============================================================================
*/
$modelname "v_ak47.mdl"
$cd ".\"
$cdtexture ".\"
$scale 1.0
$cliptotextures
$bbox 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
$cbox 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
$eyeposition 0.000000 0.000000 0.000000
//reference mesh(es)
$body "rhand" "rhand"
$body "lhand" "lhand"
$body "weapon" "f_ak47_template"
// 2 attachment(s)
$attachment 0 "Bone 04" 2.750000 -22.500000 2.900000
$attachment 1 "Bone52" 0.000000 -3.000000 0.000000
$texrendermode "red_dot_a.bmp" "additive"
// 4 hit box(es)
$hbox 0 "Bone04" -1.980000 -8.880000 -1.020000 1.730000 0.030000 1.090000
$hbox 0 "Bone_Righthand" -1.340000 -2.980000 -0.410000 1.430000 0.000000 0.630000
$hbox 0 "Bone01" -1.720000 -8.900000 -1.020000 1.990000 0.020000 1.090000
$hbox 0 "Bone_Lefthand" -1.520000 -3.073735 -0.410000 1.250000 0.000000 0.630000
// 6 animation sequence(s)
$sequence "idle1" "idle1" fps 30
$sequence "reload" "reload" fps 37 { event 5004 13 "weapons/ak47_clipout.wav" } { event 5004 57 "weapons/ak47_clipin.wav" }
$sequence "draw" "draw" fps 30 { event 5004 11 "weapons/ak47_boltpull.wav" }
$sequence "shoot1" "shoot1" fps 20 { event 5001 0 "22" }
$sequence "shoot2" "shoot2" fps 20 { event 5001 0 "22" }
$sequence "shoot3" "shoot3" fps 20 { event 5001 0 "22" }
// End of QC script.
==============================================================================
QC script generated by Half-Life MDL Decompiler 1.2
2003, Kratisto. Based on code from Valve's HL SDK.
v_ak47.mdl
Original internal name:
"v_ak47.mdl"
==============================================================================
*/
$modelname "v_ak47.mdl"
$cd ".\"
$cdtexture ".\"
$scale 1.0
$cliptotextures
$bbox 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
$cbox 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
$eyeposition 0.000000 0.000000 0.000000
//reference mesh(es)
$body "rhand" "rhand"
$body "lhand" "lhand"
$body "weapon" "f_ak47_template"
// 2 attachment(s)
$attachment 0 "Bone 04" 2.750000 -22.500000 2.900000
$attachment 1 "Bone52" 0.000000 -3.000000 0.000000
$texrendermode "red_dot_a.bmp" "additive"
// 4 hit box(es)
$hbox 0 "Bone04" -1.980000 -8.880000 -1.020000 1.730000 0.030000 1.090000
$hbox 0 "Bone_Righthand" -1.340000 -2.980000 -0.410000 1.430000 0.000000 0.630000
$hbox 0 "Bone01" -1.720000 -8.900000 -1.020000 1.990000 0.020000 1.090000
$hbox 0 "Bone_Lefthand" -1.520000 -3.073735 -0.410000 1.250000 0.000000 0.630000
// 6 animation sequence(s)
$sequence "idle1" "idle1" fps 30
$sequence "reload" "reload" fps 37 { event 5004 13 "weapons/ak47_clipout.wav" } { event 5004 57 "weapons/ak47_clipin.wav" }
$sequence "draw" "draw" fps 30 { event 5004 11 "weapons/ak47_boltpull.wav" }
$sequence "shoot1" "shoot1" fps 20 { event 5001 0 "22" }
$sequence "shoot2" "shoot2" fps 20 { event 5001 0 "22" }
$sequence "shoot3" "shoot3" fps 20 { event 5001 0 "22" }
// End of QC script.
А теперь, почему мы делили на 2 разных ID наш Red Dot?
Ответ прост: к сожалению через материал, в т.ч. альфа канал, мы не можем добиться эффекта прозрачности, но можно это сделать через скрипт QC, нужная строка выделена жирным - сдесь думаю всё ясно.
Далее всё за планом: компилим, получаем v_ak47.mdl, копируем в папку cstrike/models. Эта модель не претендует на какие либо аварды, это всего лишь рабочий пример, но если она вам понравилась вы можете скачать её из нашего файлового архива.
![](http://csexe.at.ua/_bl/0/s65946.jpg)
Ну вот, очередной урок подходит до логического завершения, с вами был Joker aka автор, одно что могу вам пожелать - это терпения в изучении Autodesk 3ds Max. Жду ваших предложений и пожеланий.
Спасибо за внимание, до встречи.