
- •Воксельные модели введение
- •Программное обеспечение
- •Создание воксельной модели Этап 1. Конвертирование
- •Этап 2. Редактирование
- •Этап 3. Сохранение
- •Добавление модели в игру Этап 1. Добавление спрайта
- •Этап 2. Определение типа и присвоение идентификатора спрайту
- •Этап 3. Добавление *.Kvx файла в ресурсный архив
- •Дополнительно
Воксельные модели введение
Воксел (в разговорной речи воксель, англ. Voxel — образовано из слов: объёмный (англ. volumetric) и пиксел (англ. pixel) — элемент объёмного изображения, содержащий значение элемента растра в трёхмерном пространстве. Вокселы являются аналогами пикселов для трехмёрного пространства.
Вокселы давно используются в компьютерных играх, однако их использование ограниченно из-за серьёзных требований к аппаратной части. Чаще всего в играх вокселы используются для отрисовки моделей. Иногда используются воксельные ландшафты вместо обычного поля высот — это позволяет создавать более сложные пространства с пещерами и мостами. Одной из самых важных возможностей воксельных ландшафтов, интерьеров и объектов является возможность их динамического изменения, и разрушения в реальном времени. В движке Build Engine есть возможность использования воксельных объектов.
© Википедия
Программное обеспечение
Для того чтобы создать и добавить воксельную модель, нам потребуется следующий набор программ:
-
POLY2VOX – Конвертер полигональных моделей в воксельные, написан самим Кеном. Поддерживаемые форматы трехмерных моделей: *.ASC, *.3DS, *.MD3, *.MD2. Имеется исходный код.
-
SLAB6 –Редактор от Кена Сильвермана. Позволяет создавать, редактировать и сохранять воксельные модели в несколько форматов. Лучше скачать самую последнюю версию, поскольку в ней была добавлена важная для нас функция изменения размера моделей. В этой статье не будет рассмотрено рисование в данном редакторе– это очень долго, неудобно, а в итоге получается не реалистично. Гораздо лучше использовать полноценные трехмерные редакторы (3d Studio Max, Blender и т.д.), однако SLAB6 необходим для сохранения в правильный формат и назначения нужной палитры для вокселя.
-
EDITART – Всем известная программа для добавления новых спрайтов в *.ART файлы.
-
ARTEDIT – Понадобится нам, чтобы назначить воксельный идентификатор добавленному спрайту.
-
BARF – Необходим для добавления модели в ресурсный архив игры.
Создание воксельной модели Этап 1. Конвертирование
Для
примера я буду использовать заранее
заготовленную простую полигональную
модель ящика, которую можно скачать в
главе «Дополнительно». Если же вы хотите
использовать другую, но никогда не
работали в трехмерных редакторах, могу
посоветовать ресурсы проекта «Transfusion».
Файлы *.PK3
можно открыть с помощью архиватора
WinRar.
-
Переместите модель и скин в одну папку с конвертером. Важно, чтобы скин был в одной папке с моделью, в противном случае вы получите белый куб.
-
Откройте файл *.3DS с помощью POLY2VOX и дождитесь конца операции.
Если вы все сделали правильно, после окончания в этой же папке появится файл с расширением *.KVX – это и есть воксельная модель, но прежде чем добавить в игру, нам необходимо ее отредактировать.
Этап 2. Редактирование
Запустите SLAB6, выберите меню «File», щелкните пункт «Open» и выберите вашу *.KVX модель. Скорее всего, вы увидите огромный ящик, который закрывает весь вид.
Дело в том, что все полигональные модели по умолчанию конвертируются с максимальной сеткой, поэтому ширина, высота и объем их всегда будет 128x128x256 (макс. размер модели в Build Engine), что нежелательно, если мы рисуем мелкие объекты.
Если уменьшать ее в редакторе карт – неизбежны подвисания игры и исчезновение моделей прямо перед носом у игрока. Еще хуже, когда Blood начнет вылетать с сообщением о нехватке памяти.
Здесь лучше использовать функцию «Halve Dimensions» (вкладка Tools), что позволяет уменьшать ее в 2 раза.
При слишком сильном уменьшении у сложных моделей может пострадать качество, поэтому оптимальной шириной\высотой модели я считаю – 64x64 и 32x32, а затем, если модель кажется вам большой, ее можно уменьшить вручную в редакторе карт – это гарантировано позволит сэкономить память игры и не слишком ухудшит качество.
До уменьшения После уменьшения
Огромные полигональные модели, например, машины при конвертировании также будут уменьшены до 128x128x256, что приведет к большой потере качества. Фактически вместо сглаженной машины, вы будете видеть пикселы и кубы, поскольку воксельная модель не использует текстурирование, а красит каждый пиксел в свой цвет. Поэтому не стоит использовать слишком большие объекты, либо заранее разделить конвертируемую модель на несколько частей в 3D редакторе.
Следующим шагом на данном этапе будет изменение цветов палитры. Об этой функции лучше не забывать, иначе вы будете видеть «серо-буро-малиново-красный» куб в игре без всякого узора, или того хуже – Blood вообще откажется запускаться.
Щелкните
вкладку
«Tools»
и
выберите
пункт
«Replace
palette and convert colors».
Перед
вами появится диалоговое окно, в котором
вам будет предложено выбрать палитру.
Палитрой может служить скриншот или
модель, взятая из Blood.
Так же ею может быть файл PALETTE.DAT,
который все равно понадобится вам, чтобы
работать в EDITART
– его-то я и предлагаю использовать в
качестве палитры для нашего ящика. После
того, как вы изменили палитру, фон станет
серым – это значит, что палитра была
успешно заменена на выбранную вами.
Теперь, для того, чтобы увидеть, как
модель будет отображаться в игре, нужно
щелкнуть вкладку «View»
и убрать галку с пункта «Normal
Shading».
К сожалению, SLAB6
не сохраняет настройки, поэтому убирать
галку придется каждый раз заново, как
только вы перезапустите программу.
Мы
подходим к заключительному шагу
редактирования – создание спрайта для
игры. Для любой модели необходима
картинка, которая будет отображаться
в редакторе карт, или в игре, если
уменьшить уровень детализации. Спрайт
желательно сделать того же размера, что
и сама модель, чтобы в игре ваши объекты
не висели в воздухе, или же наоборот
были вмяты в землю. Снова щелкните
вкладку «Tools»
и нажмите пункт «Adjust
Pivots».
В левом нижнем углу появятся три окна
«Z:?:\??»,
«Y:?\??»
и «X:?\??»,
где «?»
означает точный размер модели в игре.
Нас интересуют последние два значения
– именно они определяют ширину и высоту
нашего спрайта. Для ящика я использовал
значения 64,
но вы ограничены только вашей фантазией
и возможностями редактора. Создайте
спрайт такого же размера (можно сделать
скриншот прямо в редакторе) и сохраните
его в формате *.GIF.
Совсем необязательно обрабатывать его
в фотошопе, ведь вместо спрайта в игре
будет отображаться модель, но если не
хотите чтобы игроки ужаснулись, когда
уменьшат детализацию или будут играть
с 3DFX
патчем, который не поддерживает воксели
– рекомендую прочесть эту статью по
добавлению спрайтов в игру.