Doom3.ru





















    •  Главная

  •  Doom3-форум   •  Прислать новости




  •  Doom3-info



  



  •  Doom3: RoE



  



  •  Статьи



  



  •  Quake4



  



  •  Quake Wars



  




Реклама




Модострой 2

 18.12.2003  14:05  Автор: [ss]3L33T@

"Мудр тот, кто понимает, что он дурак."
[ss]3L33T@


Входит и не выходит, или импорт моделей из Maya.

Почему входит и не выходит? Да потому что в игру вставить можно, а обратно - шишь...
И так приступим. Допустим у вас есть готовая модель чего – ни будь, например - монстра. Берём и копируем её в папку \base\models\monsters\MyMonster\shk.mb, где MyMonster - папка которую вы создаёте самостоятельно, а shk.mb - файл где находится исходная модель монстра. Здесь надо остановится подробнее на расширениях *.ma и *.mb. По сути *.ma - файл с анимацией, *.mb - простой рабочий файл со статичной сценой. Соответственно, если мы берём файл типа *.mb, то это должна быть исходная модель монстра ( обычно - это модель, которая установлена в нулевую точку системы координат(0;0;0), с "расправленными" руками, т.е. руки расположены, как у Христа на распятье, ну вы меня поняли..., а если ты берём файл *.ma, то соответственно - это должен быть файл с какой - то анимацией. Ладно, развёл я тут болтологию, ближе к теме.

Значит так, модель мы поместили, далее - на эту модельку вы конечно же аккуратно, любовно натянули текстурку, причём покруче чем у Кармака и Ко, и конечно же надо чтобы она тоже была видна в игре, тогда ваша задача - сохранить эту текстуру из Майки, как ты это сделать – не мои проблемы (я это просто сейчас не помню, а Майи на компе не стоит), затем вставляем её в папку с моделью (так проще будет). Заметьте расширение TARGA(*.tga).Скажу честно - я не знаю как текстуру накладывать, спросите у Проциона, он вам расскажет.

Теперь идём в папку base\def и создаём файл с произвольным названием, у меня это - shk.def, расширение, как не сложно догадаться должно быть *.def. Открываем этот файл для редактирования и пишем туда следующие строки:

1) export {
2) mesh models/monsters/MyMonsters/shk/shk.mb
3) anim models/monsters/MyMonsters/shk/shk_walk.ma
4) }

(прошу заметить направление слэшей: не \, а /. Это действительно важно.)

Всё просто:
1)начало экспорта
2)файл по такому-то пути является базовым(исходным), для модлеи.
3)файл по такому то пути является фалом анимации.
4)Конец экспорта

Теперь идём в игру, в консоли пишем exportmodel(exportmodels, не помню точно) shk.def. Игра там что-то проделает и напишет, что мол всё - финиш.

Условия для экспорта:

  • Версия Майки должна быть не больше не меньше - 4.0. При других версиях возможна некорректная работа.
  • Модель должна состоять из strip_polygons. Это полигоны, состоящие из треугольников.
  • На модель должна быть повещена кожа типа smooth.
  • Кожа должна быть скреплена минимум с двумя joint'ами скелета. Короче скелет должен быть min - две "кости".
  • Майка должна стоять на компе.

    Если все условия выполняются, то будут созданы два файла - \base\models\monsters\MyMonster\shk.md5mesh и \base\models\monsters\MyMonster\shk.md5anim. Если открыть их в редакторе, то можно увидеть довольно понятный и связанный текст, во всяком случае он таковым является для любого программиста.

    Ну вот и всё. Возникает вопрос: "А в игру то как затолкать?", я отвечу: "Когда дойдём до кодинга, тогда всё и станет понятно.".

    Возможно что-то не будет пахать, я за это ответственности не несу, я описал всё так как это пашет у меня...
    Я не рассказывал о всяких там "_prefix Rhand ...", потому что сам с этим до конца не разобрался. И вообще я программист, а не дизайнер, меня всё это мало касается. Я так, только ради интереса посмотрел. Вот ежели надо чего нибудь покодить (а дальше мы делать только это), тогда пожалуйста, я во все орудия...

    Программирование звука и разгрёб с предметами инвентаря.

    Сейчас читатель ты познаешь, как работает система загрузки и воспроизведения звука в думе, ну и кроме того станет понятным, как описать свой предмет (патроны для ракетницы, например).
    Сначала поговорим о звуке. Идём в папку base\sound\ там есть много папочек с разными названиями и ещё штук 40 файлов с расширением *.sndshd. В этих фалах хранится информация о каждом звуке, который используется в игре, соответственно, когда мы запихиваем свой звук в игру, то должны описать его в файле, который нужно создать. Ну давайте попробуем открыть любой файл и разобраться в том что в нём написано. Возьмём файл под именем monster_demon_pinky.sndshd, открываем его и видим кучу всяких записей, давайте разберёмся:

    monster_demon_pinky_attackmissile {
    }
    monster_demon_pinky_melee_hit {

    minDistance 1
    maxDistance 25
    volume 4

    sound/nin/monsters/pinky4/PinkyRamsPlayer/PinkyRamsplayer2.wav
    sound/nin/monsters/pinky4/PinkyRamsPlayer/PinkyRamsplayer3.wav
    sound/nin/monsters/pinky4/PinkyRamsPlayer/PinkyRamsplayer6.wav
    sound/nin/monsters/pinky4/PinkyRamsPlayer/PinkyRamsplayer7.wav
    }


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

    название
    {

    }


    В данном случае: название - monster_demon_pinky_attackmissile. Кстати этой строки у вас может и не быть. Теперь берём вторую функцию, monster_demon_pinky_melee_hit, из названия ясно, что функция отвечает за воспроизведение звука в момент, когда пинки ударяет игрока. И вообще при создании своих описаний старайтесь давать названия функциям со смысловой нагрузкой, чтобы легче было разобраться вам и тем с кем вы это делаете, конечно если вы с кем то это делаете. и так в этой функции:

    1) minDistance 1
    2) maxDistance 25
    3) volume 4

    4) sound/nin/monsters/pinky4/PinkyRamsPlayer/PinkyRamsplayer2.wav
    5) sound/nin/monsters/pinky4/PinkyRamsPlayer/PinkyRamsplayer3.wav
    6) sound/nin/monsters/pinky4/PinkyRamsPlayer/PinkyRamsplayer6.wav
    7) sound/nin/monsters/pinky4/PinkyRamsPlayer/PinkyRamsplayer7.wav


    1) Минимальная дистанция на которой слышен этот звук.
    2) Максимальная дистанция на которой слышен этот звук.
    3) Громкость звука. Не ставьте слишком громко, будет просто шум. (отрицательное значение так же не означает, что звука нет!)
    4 - 7) Звуки, которые могут проигрываться. Программа выберет один из этих звуков случайным образом.
    Что тут ещё сказать? Как это используется в игре? Всё узнаете, когда будем программить, т.е. в 3 части цикла статей "Модострой".

    Ну теперь пора поговорить о предметах.
    Идём в папку base\def. Ищем файл ammo.def. О том что это за файлы(*.def) я расскажу в следующей статье. Сейчас же вам необходимо знать лишь только то что всё что вы в них описываете влияет и на редактор карт, в общем эти файлы содержат всю игру! Ладно, раз уж начал так надо рассказать. Если зайти в файл ammo.def, то первые строки там такие:

    1) /********************************************
    2)
    3) ammo
    4)
    5) *********************************************/
    6)
    7) entityDef ammo_types {
    8) "ammo_none" "0"
    9) "ammo_slugs" "1"
    10) "ammo_shells" "2"
    11) "ammo_bullets" "3"
    12) "ammo_rockets" "4"
    13) "ammo_cells" "5"
    14) "ammo_grenades" "6"
    15) "ammo_flares" "7"
    16) "ammo_souls" "8"
    17) }
    18)
    19) entityDef ammo_bullets_small {
    20) "editor_color" ".3 .3 1"
    21) "editor_mins" "-16 -16 0"
    22) "editor_maxs" "16 16 32"
    23)
    24) "editor_usage" ""
    25)
    26) "spawnclass" "idItem"
    27) "model" "models/weapons/ammobox1/ammobox1.lwo"
    28) "action" "sound/nin/barrel/barrel_hit_med_05.wav"
    29) "size" "32 32 32"
    30) "inv_message" "Picked up some bullets"
    31) "inv_ammo_bullets" "30"
    32) }

    1)Это начало комментария. Для тех кто не в курсе, комментарий - строка или несколько символов, которые игнорируются компилятором. Комментарии могут быть:
    "//" - комментирует всё что после этого знака на всей строке. Например:
    entityDef ammo_types { //HELLO WORLD!
    В данном случае закомментирована строка Hello World, но не entityDef ammo_types, если бы я поставил знак "//" перед entityDef ammo_types, то была бы закомментирована вся строка.
    Второй тип "/* */". Это тип работает, как операторные скобки, всё что между ними - комментируется, например:

    entityDef ammo_types{ /*

    Hello World

    */


    В данном случае закомментировано всё что между /* и */, т.е. entityDef ammo_types{ не закомментированы.

    Вобщем читайте книги по си и всё будет в порядке

    3, 5) Комментарии.
    2, 4, 6, 18, 23, 25) Пустая строка, что может быть банальней?
    7) Начало описания.
    8 - 16) Описание пары переменных, по которым потом можно будет определять тип патронов, который в данный момент используется.
    17) Конец описания.
    18) Начало описания.
    19 - 22, 24) Строки, которые задают определённые параметры для редактора, в принципе можно везде писать одно и тоже.
    26) Компилятору сообщается, что это (ammo_bullets_small) будет новый класс, соответственно потом, когда зайдёшь в редактор карт и раскроешь ветку ammo (имя ветки берётся из названия файла), то там будет (помимо остальных названий) ammo_bullets_small. Кто не верит, сходите гляньте. Соответственно, если назовать её не ammo_bullets_small, а например ammo_ot_kalasha, то там будет ветка с названием ammo_ot_kalasha.
    27) Ясное дело, куда без визуальной оболочки? Тут указывается модель, которая отображается на месте, где будёт поставлен ammo_bullets_small, короче - модель. Кстати, о моделях - можно сделать модель в 3DS Max'е и экспортировать её в формат *.lwo или *.ase. В *.ase точно можно. Ну и потом - затолкать в игру.
    28) Звук, который будет проигрываться в тот момент, когда берём патроны. А точнее не звук, а действие, которое будет произведено. У меня не пашет.
    29) Размеры. Тут без комментариев. В координатах X Y Z.
    30) Какое сообщение будет выдаваться при поднятии. Тоже не работает (у меня во всяком случае, вообще, если я говорю не пашет - не пашет у меня).
    31) Сколько патронов будет дано игроку. Работает.
    32) Конец описания.

    Ну? Всё максимально просто. Если ты заглянуть в файл items.def, то там увидим такие же описания брони, ключей и т.п.

    Уже начинаете чувствовать, что значит словосочетание "Кармак и его движок"? Но это всё семечки, по сравнению с тем, какую уматную систему он написал для создания спец. эффектов, монстров и ещё чёрт знает чего.

    В след. раз мы будем разбираться со следующими проблемами:

    1. Описание создания монстров -> создание своего монстра -> что такое система частиц от Кармака -> как всё это работает -> как систему частиц прикрепить к какому-то моменту анимации -> как создать эту систему частиц -> как создать визуальные эффекты -> создание огненного пинки, который был удалён из мода, во сохранение фпсов -> крепление звуков к монстру -> и всё, всё, всё, что связанно с созданием монстра.

    2. Описание оружия -> система создания -> создания своей пушки -> прикрепление звуков -> прикрепление спецэффектов.

    3. Подробно разберём работу анимации и работу компилятора с файлами.

    4. Так же разберём ВСЕ *.def файлы, файл за файлом, строка за строкой.

    5. И в конце концов раскроем тайну, что когда была альфа версия, то уже был полностью готов и описан Ревенант, и что рейлган был тогда ещё реальностью, и в конце всего этого сделаем вывод - Кармак и Ко спецом выкинули альфу в инет, а АТИ не причём. Хоть и не люблю я АТИ.

    Но всё это будет в конце новогодних каникул, т.к. - экзамены, друзья мои. Да эта шняга вечно висит над нами.




    Другие материалы рубрики:




    Комментарии

    #1  Процион (-----.diaspro.com)   18:56  18.12.2003
    Колоссальный респект Эллиту!

    #2  Jeha (-----.nikopol.net)   21:21  18.12.2003
    Super
    уууу-аааа-уууу я так давно етого ждал

    #3  Denis (-----.171.2)   21:50  18.12.2003
    Blin a gde pro import animacii ? 8[
    Vse 4to ja hotel znat', togo net, a zhal' 8[
    V ostalnom kone4no zhe respect !

    #4  дядя Вася (-----.net.ua)   14:22  19.12.2003
    что ATI нэ любищь?
    вай-вай-вай!
    слющий, как можно нэ любить, такой хароший карта выпускаит! вах!

    #5  [ss]3L33T@ (-----.irtel.ru)   17:07  19.12.2003
    2 Denis
    Я же писал:
    3) anim models/monsters/MyMonsters/shk/shk_walk.ma
    Это экспорт какой-то анимации!!!
    А то как её закрепить в игре я напишу в след. статье.

    #6  Conceptor_1097 (-----.mtu-net.ru)   04:35  20.12.2003
    MD5 Format
    Кто нибудь знает бинарную структуру формата md5.

    #7  Мишка (-----.spb.ru)   11:59  26.12.2007
    MD5
    Слушай а зачем тебе структура, если можно
    открыть файл *.md5? в простом текстовом редакторе, и там тебе все будет Английским по белому прописано, один вот чувак внимательно прочитал, и для 3d max скрипт придумал, для експорта в MD5 :))
    Так что учи чувак C# и все будет ОК :)

    #8  Опять мишка (-----.spb.ru)   12:02  26.12.2007
    Непонял.. :)
    А где можно взять библиотеку MayaImport.Dll
    Игра не хочит компилировать мадельку без этого файла... как же быть... :(

    #9  john (-----.180.50)   15:54  03.08.2009
    в SDK



    Добавить комментарий
    Имя - заполнять обязательно

    Е-майл

    Заголовок

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

    Введите эти цифры в это поле.






  • Розовый





















    Valuehost.Ru


    Яндекс цитированияRambler's Top100Rambler's Top100
    DOOM3 is a registered trademark of id'Software
    Copyright 2002-2018 © Doom3.ru