MODELDEF — заменяем спрайты на 3D модели

Предисловие

Перед использованием MODELDEF, давайте познакомимся с форматами pk3/pk7, они такие же как wad, только лучше.

  • pk3 — это zip архив с переименованным форматом. Поддерживает папки, в отличии от wad, также весит меньше чем wad.
  • pk7 — это 7z архив с переименованным форматом. Поддерживает папки, в отличии от wad, также весит меньше чем pk3.

Работать мы будем именно с pk3.

Подготавливаем рабочее место.

Скачайте архив с 3D моделью по ссылке: ссылка. И разархивируйте его в отдельную папку.

Создайте файл MODELDEF.txt и положите его в ту же папку, что и MD. Должно получится так.

По пути MD/Medkit мы видим 2 файла, файл модели в формате md3 и его текстура.

Как делать модели в формате md3, описывалось в уроке Экспортируем модели в формате md3, с помощью Blender.

Только сейчас заметил, что GZDoom поддерживает формат obj(начиная с 2018 года), а я уже написал целую статью про танцы с бубном про экспорт в формате md3. Чувствую себя идиотом. В любом случае, cписок поддерживаемых 3d форматов оставлю по ссылке.

Ладно, с подготовкой закончили, время писать код.

Разбираемся в коде MODELDEF.

Откройте MODELDEF.txt и напишите там следующие:

Model Medikit
{
   Path "MD/MedKit"
   Model 0 "Medikit.md3"
   Skin 0 "Medikit.png"
   Scale 0.9 0.9 1.1

   FrameIndex MEDI A 0 0
}

Синтаксис у MODELDEF следующий:

Model название_актора
{
   Path "путь_к_ресурсам_модели"
   Model номер_кадра_модели "файл_модели"
   Skin номер_кадра_модели "файл_текстуры"
   Scale размер_x размер_y размер_z

   FrameIndex первые_4_буквы_названия_спрайта название_кадра номер_кадра_модели номер_кадра
}

А теперь по порядку:

  • Название актора — это имя актора(предмета, снаряда, игрока, в общем, всех 2D объектов в думе), актор можно создать в DECORATE или ZSCRIPT. Также есть предустановленные акторы, по ссылке.
  • Путь к ресурсам модели — это путь относительно которого строятся остальные пути.
  • номер кадра модели — тут все и так понятно
  • Файл модели — название файла модели например «Medikit.md3«. И так как мы указали путь, то GZDoom будет искать файл модели по адресу Путь к ресурсам модели/Medikit.md3.
  • Файл текстуры — название файла текстуры например «Medikit.png«. И так как мы указали путь, то GZDoom будет искать файл текстуры по адресу Путь к ресурсам модели/Medikit.png.
  • размер_x размер_y размер_z — масштабирование модели по координатам x,y,z. 1.0 — обычный масштаб, 2.0 — увеличенный в 2 раза масштаб и т.д.

Перед продолжением, хотел бы разъяснить, как устроена анимация монстров в думе, и как это реализовано в Decorate. Потому что синтаксис FrameIndex.

FrameIndex первые_4_буквы_названия_спрайта название_кадра номер_кадра_модели номер_кадра

Крайне похож на синтаксис Decorate.

  • Первые 4 буквы названия спрайта — синтаксис здесь как в Decorate, то-есть первые 4 буквы неизменны, а 5я задает кадр анимации (например POSS).
  • Название кадра — та самая буква, задающая кадр анимации, например A для первого кадра, если хочешь второй кадр анимации то B. Разумеется в директории должны иметься изображения POSSA0 и POSSB0.

По поводу названия файлов

  • Первые 4 буквы — задают название спрайта, они неизменны.
  • 5я буква — задает кадр анимации
  • 6я цифра — задает как будет выглядеть актор, в зависимости от поворота камеры, сейчас я не буду объяснять это подробно, только лишь скажу что цифра 0 обозначает поворот актора на игрока, то-есть с какой бы стороны ты не посмотрел на актор, изображение не изменится. Подобное поведение заметно у аптечек, убитых импов, патронов, оружия и т.д.

Пример: MEDIA0. Это изображение взятое из doom2.wad

Теперь, вновь, взглянем на код.

FrameIndex первые_4_буквы_названия_спрайта название_кадра номер_кадра_модели номер_кадра

Все кроме последнего номер_кадра, я объяснял.

  • Номер кадра — это номер кадра нашей 3D анимации.

С кодом разобрались, теперь осталось запаковать все в pk3 и запустить.

Запаковываем все в pk3

Я буду запаковывать программой 7z, скачать её можно по ссылке. Чтобы запаковать выделите нужные файлы, нажмите ПКМ, в меню выберите «7-Zip -> Добавить к архиву…«

В появившемся окне, добавьте к названию архива расширение pk3.

И нажмите OK. Появится файл pk3, запустите его с помощью GZDoom.

В думе как раз завалялась аптечка на 29 уровне.

Итоговый результат

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!