Участник:Аджил/Блог/3D-модели в игровом движке — различия между версиями

Материал из ПокеВики
Перейти к: навигация, поиск
м (Выбор движка и адаптация моделей: стилевые правки)
м (Выбор движка и адаптация моделей)
Строка 18: Строка 18:
 
Первое значение и есть сдвиг модели по оси X в данном кадре. Итак, для каждого кадра нужно поменять его на значение, которое записано в базовом кадре (см. baseframe; как правило, оно равно 0.000000, но может варьироваться).
 
Первое значение и есть сдвиг модели по оси X в данном кадре. Итак, для каждого кадра нужно поменять его на значение, которое записано в базовом кадре (см. baseframe; как правило, оно равно 0.000000, но может варьироваться).
  
Далее движку необходимы параметры модели (такие как масштаб, соответствие и скорость анимаций, блики/свечение и прочее). Подробно они описаны [http://sauerbraten.org/docs/models.html#md5_format здесь на английском языке]. Я подготовил рабочий пакет моделей ивилюций и выложил [http://www.mediafire.com/?a40k7mbh1mwudk9 сюда] (также сделаны некоторые дополнительные, более сложные вещи, такие как ручную подгонку bounding box, разбивку текстур глаза и рта по эмоциям и т. п.). По просьбе желающих могу собрать и отправить рабочие модели других покемонов в формате MD5, готовые для использования в движке.
+
Далее движку необходимы параметры модели (такие как масштаб, соответствие и скорость анимаций, блики/свечение и прочее). Подробно они описаны [http://sauerbraten.org/docs/models.html#md5_format здесь на английском языке]. Я подготовил рабочий пакет моделей ивилюций и выложил [http://www.mediafire.com/?a40k7mbh1mwudk9 сюда] (в некоторых примитивных текстовых редакторах, таких как Notepad, он же Блокнот, переносы строк в моих файлах не отображаются, поскольку они сохранены в стиле UNIX «\n», а не DOS «\r\n»; также сделаны некоторые дополнительные, более сложные вещи, такие как ручная подгонка bounding box, разбивка текстур глаза и рта по эмоциям и т. п.). По просьбе желающих могу собрать и отправить рабочие модели других покемонов в формате MD5, готовые для использования в движке.
  
 
== Загрузка моделей в игру ==
 
== Загрузка моделей в игру ==
 
(будет дописано позже)
 
(будет дописано позже)

Версия 21:30, 29 августа 2011

Я как, наверное, многие из вас, в какой-то мере являюсь любителем так называемых трёхмерных видеоигр. Конечно, существует великое множество готовых игрушек, среди них встречаются и про покемонов. Из официальной серии можно отметить Pokémon Stadium 1/2, Snap, Colosseum, XD, PBR, PokéPark Wii: Pikachu’s Adventure. Эти игры выпущены исключительно под игровые консоли фирмы Nintendo (хотя при наличии ПК достаточной мощности некоторые успешно запускаются на эмуляторах). Данная статья содержит сведения о примере использования 3D-моделей в собственных игровых модах или проектах. Итак, начнём.

Получение моделей

Чтобы иметь в конечном счёте рабочие трёхмерные модели покемонов, очевидно, можно пойти двумя путями — создать с нуля, либо взять с готового источника и адаптировать под выбранный игровой движок. Первый вариант, естественно требует куда больших затрат, и затрагивать его здесь мы не будем.

Выбор источника

Прежде всего нужно выбрать подходящий источник. Последними выпущенными играми (к моменту поиска таковых автором) были PBR и PokéPark. В пиринговых сетях присутствуют образы носителей для целевой платформы (Nintendo Wii). Производитель не документировал структуру их содержимого, поскольку это не предусматривается эксплуатацией, однако сообщества успешно прочитали файловую систему с помощью техники, именуемой «reverse engineering». Как выяснилось, в Pokémon Battle Revolution модели покемонов (и прочие ресурсы) присутствуют в виде файлов .FSYS, о формате которых в то время было практически ничего не известно (кроме того что это данные, сжатые алгоритмом LZSS). В PokéPark же формат файлов иной — .BRRES, который используется в прочих видеоиграх для Wii, начиная с Super Smash Bros. Brawl (отсюда и название — BRawl RESource), и его структура сообществу была уже известна. Некто Kentilan выпустил(а) программу-просмотрщик файлов .BRRES, содержащих модели с текстурами и анимациями, для платформы Microsoft Windows на x86 (между прочим, у меня она запускалась и работала из-под Wine 1.1 в Linux). Эта программа также позволяет экспортировать текстуры в файлы формата Targa (.TGA) или PNG, модели и анимации же — формата DooM 3 MD5 (.md5mesh/.md5anim) или Unreal (.PSK/.PSA).

Исходные файлы моделей ивилюций вместе со смотрелкой я загрузил на сервис файлового хостинга, вот ссылка. Модели прочих покемонов, которые есть в PokéPark, могу выслать желающим отдельно по требованию.

Выбор движка и адаптация моделей

Автор выбрал проект Platinum Arts Sandbox на движке Cube 2 из следующих соображений: бесплатность, кроссплатформенность, открытость исходных кодов, свободность лицензии (zlib), расширяемость, приемлемое качество графики, сравнительно невысокая требовательность к ресурсам (запускаю его прямо в ноутбуке Asus X50M; на средних настройках с не очень большим уровнем летает практически без тормозов). Также стоит отметить удобную возможность редактирования мира на лету (в том числе даже сообща по мультиплееру).

Cube 2 умеет читать несколько форматов моделей, включая MD5. Посему я сделал экспорт в этот формат, правда, не обошлось и без нюансов. Например, эта версия программы некорректно записывает количество вершин и треугольников в меше, что влечёт за собой падение движка с ошибкой Segmentation Fault, если это не исправить вручную. Файлы .md5mesh — это обычные текстовые файлы, и исправить значения numverts и numtris для каждого участка с подсчётом особого труда не составит. Необходимо обратить внимание и на то, что сгенерированные файлы ссылаются на текстуры (значения shader) с расширением .tga, а для Cube 2 нужны .jpeg или .png, поэтому текстуры следует проэкспортировать отдельно в PNG и соответственно исправить. Ещё настоятельно рекомендуется проименовать каждый меш, вписав перед строкой shader строку вида:

// meshes: body

Соответственно, этот меш будет иметь логическое название «body». Имена мешей в одной модели не должны повторяться! Следует учесть, что данный метод именования мешей применим специфически к Cube 2, и в других движках может проводиться по-другому либо не проводиться вообще. Что касается анимаций, некоторые из них (а конкретно Walk и Run) также требуют хирургического вмешательства. Дело в том, что они содержат данные по смещению модели в процессе движения, и для нашего движка их нужно устранить (иначе модель будет дёргаться вперёд-назад). Делается это просто — в (таком же текстовом) файле .md5anim находятся блоки, соответствующие кадрам. Вторая строка внутри каждого блока показывает смещение модели относительно логического положения в координатах и имеет вид:

0.200000 0.000000 0.000000 0.000000 0.000000 0.000000

Первое значение и есть сдвиг модели по оси X в данном кадре. Итак, для каждого кадра нужно поменять его на значение, которое записано в базовом кадре (см. baseframe; как правило, оно равно 0.000000, но может варьироваться).

Далее движку необходимы параметры модели (такие как масштаб, соответствие и скорость анимаций, блики/свечение и прочее). Подробно они описаны здесь на английском языке. Я подготовил рабочий пакет моделей ивилюций и выложил сюда (в некоторых примитивных текстовых редакторах, таких как Notepad, он же Блокнот, переносы строк в моих файлах не отображаются, поскольку они сохранены в стиле UNIX «\n», а не DOS «\r\n»; также сделаны некоторые дополнительные, более сложные вещи, такие как ручная подгонка bounding box, разбивка текстур глаза и рта по эмоциям и т. п.). По просьбе желающих могу собрать и отправить рабочие модели других покемонов в формате MD5, готовые для использования в движке.

Загрузка моделей в игру

(будет дописано позже)