|
ВОКСЕЛЬНЫЕ МОДЕЛИ
ВВЕДЕНИЕ
Воксел (в разговорной речи воксель, англ. Voxel — образовано из слов: объёмный (англ. volumetric) и пиксел (англ. pixel) — элемент объёмного изображения, содержащий значение элемента растра в трёхмерном пространстве. Вокселы являются аналогами пикселов для трехмёрного пространства.
Вокселы давно используются в компьютерных играх, однако их использование ограниченно из-за серьёзных требований к аппаратной части. Чаще всего в играх вокселы используются для отрисовки моделей. Иногда используются воксельные ландшафты вместо обычного поля высот — это позволяет создавать более сложные пространства с пещерами и мостами. Одной из самых важных возможностей воксельных ландшафтов, интерьеров и объектов является возможность их динамического изменения, и разрушения в реальном времени. В движке Build Engine есть возможность использования воксельных объектов.
http://ru.wikipedia.org/wiki/Воксел
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Для того чтобы создать и добавить воксельную модель, нам потребуется следующий набор программ:
- POLY2VOX – Конвертер полигональных моделей в воксельные, написан самим Кеном. Поддерживаемые форматы трехмерных моделей: *.ASC, *.3DS, *.MD3, *.MD2. Имеется исходный код.
- SLAB6 –Редактор от Кена Сильвермана. Позволяет создавать, редактировать и сохранять воксельные модели в несколько форматов. Лучше скачать самую последнюю версию, поскольку в ней была добавлена важная для нас функция изменения размера моделей. В этой статье не будет рассмотрено рисование в данном редакторе– это очень долго, неудобно, а в итоге получается не реалистично. Гораздо лучше использовать полноценные трехмерные редакторы (3d Studio Max, Blender и т.д.), однако SLAB6 необходим для сохранения в правильный формат и назначения нужной палитры для вокселя.
- EDITART – Всем известная программа для добавления новых спрайтов в *.ART файлы.
- ARTEDIT – Понадобится нам, чтобы назначить воксельный идентификатор добавленному спрайту.
- BARF – Необходим для добавления модели в ресурсный архив игры.
СОЗДАНИЕ ВОКСЕЛЬНОЙ МОДЕЛИ
Этап 1. Конвертирование
Для примера я буду использовать заранее заготовленную простую полигональную модель ящика, которую можно скачать в главе «Дополнительно». Если же вы хотите использовать другую, но никогда не работали в трехмерных редакторах, могу посоветовать ресурсы проекта «Transfusion». Файлы *.PK3 можно открыть с помощью архиватора WinRar.
- Переместите модель и скин в одну папку с конвертером. Важно, чтобы скин был в одной папке с моделью, в противном случае вы получите белый куб.
- Откройте файл *.3DS с помощью POLY2VOX и дождитесь конца операции.
Если вы все сделали правильно, после окончания в этой же папке появится файл с расширением *.KVX – это и есть воксельная модель, но прежде чем добавить в игру, нам необходимо ее отредактировать.
Этап 2. Редактирование
Запустите SLAB6, выберите меню «», щелкните пункт «» и выберите вашу *.KVX модель. Скорее всего, вы увидите огромный ящик, который закрывает весь вид.
Дело в том, что все полигональные модели по умолчанию конвертируются с максимальной сеткой, поэтому ширина, высота и объем их всегда будет 128x128x256 (макс. размер модели в Build Engine), что нежелательно, если мы рисуем мелкие объекты.
Если уменьшать ее в редакторе карт – неизбежны подвисания игры и исчезновение моделей прямо перед носом у игрока. Еще хуже, когда Blood начнет вылетать с сообщением о нехватке памяти.
Здесь лучше использовать функцию «» (вкладка ), что позволяет уменьшать ее в 2 раза.
При слишком сильном уменьшении у сложных моделей может пострадать качество, поэтому оптимальной шириной\высотой модели я считаю – 64x64 и 32x32, а затем, если модель кажется вам большой, ее можно уменьшить вручную в редакторе карт – это гарантировано позволит сэкономить память игры и не слишком ухудшит качество.
До уменьшения |
После уменьшения |
Огромные полигональные модели, например, машины при конвертировании также будут уменьшены до 128x128x256, что приведет к большой потере качества. Фактически вместо сглаженной машины, вы будете видеть пикселы и кубы, поскольку воксельная модель не использует текстурирование, а красит каждый пиксел в свой цвет. Поэтому не стоит использовать слишком большие объекты, либо заранее разделить конвертируемую модель на несколько частей в 3D редакторе.
Следующим шагом на данном этапе будет изменение цветов палитры. Об этой функции лучше не забывать, иначе вы будете видеть «серо-буро-малиново-красный» куб в игре без всякого узора, или того хуже – Blood вообще откажется запускаться.
Щелкните вкладку «» и выберите пункт «». Перед вами появится диалоговое окно, в котором вам будет предложено выбрать палитру. Палитрой может служить скриншот или модель, взятая из Blood. Так же ею может быть файл PALETTE.DAT, который все равно понадобится вам, чтобы работать в EDITART – его-то я и предлагаю использовать в качестве палитры для нашего ящика. После того, как вы изменили палитру, фон станет серым – это значит, что палитра была успешно заменена на выбранную вами. Теперь, для того, чтобы увидеть, как модель будет отображаться в игре, нужно щелкнуть вкладку «» и убрать галку с пункта «». К сожалению, SLAB6 не сохраняет настройки, поэтому убирать галку придется каждый раз заново, как только вы перезапустите программу.
Мы подходим к заключительному шагу редактирования – создание спрайта для игры. Для любой модели необходима картинка, которая будет отображаться в редакторе карт, или в игре, если уменьшить уровень детализации. Спрайт желательно сделать того же размера, что и сама модель, чтобы в игре ваши объекты не висели в воздухе, или же наоборот были вмяты в землю. Снова щелкните вкладку «» и нажмите пункт «». В левом нижнем углу появятся три окна «», «» и «», где «» означает точный размер модели в игре. Нас интересуют последние два значения – именно они определяют ширину и высоту нашего спрайта. Для ящика я использовал значения 64, но вы ограничены только вашей фантазией и возможностями редактора. Создайте спрайт такого же размера (можно сделать скриншот прямо в редакторе) и сохраните его в формате *.GIF. Совсем необязательно обрабатывать его в фотошопе, ведь вместо спрайта в игре будет отображаться модель, но если не хотите чтобы игроки ужаснулись, когда уменьшат детализацию или будут играть с 3DFX патчем, который не поддерживает воксели – рекомендую прочесть эту статью по добавлению спрайтов в игру.
Этап 3. Сохранение
Щелкните меню «» и выберите «», выберите формат *.KVX и введите имя, например «box01.kvx». Появится следующее окно, в котором необходимо выбрать «» - это увеличит размер файла, но сделает модель пригодной для использования в Blood.
На этом создание модели завершено, самое сложное позади и можно откинуться на спинку сидения, а лучше переместить модель и спрайт в папку с Blood.
ДОБАВЛЕНИЕ МОДЕЛИ В ИГРУ
Этап 1. Добавление спрайта
Запустите EDITART, передвиньтесь в любую свободную плитку и нажмите «Enter». Теперь нажмите «U» и передвиньте указатель к вашему *.GIF файлу, после чего нажмите клавишу «O». Спрайт должен добавиться и быть размером 64x64, если же нет – вы легко можете изменить его размер, нажав клавишу «S» и введя значения. Как я уже сказал – совсем необязательно, чтобы спрайт выглядел идеально, но лучше, чтобы он соответствовал размеру модели (так легче будет ориентироваться в редакторе карт). Сохраните изменения и выходите.
Этап 2. Определение типа и присвоение идентификатора спрайту
Запустите ARTEDIT, передвиньтесь к добавленному спрайту и нажмите «Enter». Чтобы выбрать тип спрайта, жмите клавишу «W». Кстати, есть два типа вокселей: VOXEL – статичная модель, которая используется для объектов и SPINVOXEL - вращающаяся модель, используемая для оружия и броней. Выберите тип VOXEL, а затем присвойте идентификатор с помощью клавиши «V». Если хотите добавить новую модель в игру, используйте значения с 65, если же желаете заменить стандартную модель – нужно знать ее номер. Полную таблицу идентификаторов можно найти в главе «Дополнительно», а пока присвойте значение 65. Сохраните изменения и выходите.
!ВАЖНО: Все присвоенные номера моделей хранятся в файле VOXEL.DAT. Не забывайте поставлять его вместе с вашим дополнением!
Этап 3. Добавление *.KVX файла в ресурсный архив
Для добавления *.KVX файлов нам понадобится программа BARF, которую можно найти на диске с игрой, либо в разделе "Файлы" на сайте Российского Кровавого Сообщества. Если просто так добавить файл в архив – в игре ничего не изменится, поэтому нам нужно написать специальный скрипт.
На этом процесс добавления модели в игру завершен, вам осталось только зайти в редактор, создать карту и вставить в нее заветный спрайт, который в игре превратится в красивый ящик, нисколько не отличающийся от того как, если бы его рисовали сектором. В итоге мы получили возможность изменять его размеры или сделать его разрушаемым с выбросом полезных предметов для игрока. К тому же это хорошая экономия секторов.
Иногда, если модель слишком объемная, игрок может проскакивать сквозь нее, пока его не заблокирует спрайт, принадлежащий ей. Здесь можно посоветовать только одно – обложить невидимыми блокирующими спрайтами модель и сделать их Gib-объектами.
Как видите, все оказалось гораздо проще, чем казалось на первый взгляд. POLY2VOX качественно конвертирует модели и делает их внутренности пустыми, за счет чего экономит ресурсы игры. Можно использовать 3D-рипперы, позволяющие выдернуть модель из любой трехмерной игры, например, 3DRIpperDx и таким образом обеспечить себе безбедное существование. В SLAB6 есть набор других средств, которыми вы можете отредактировать вашу модель: удалить ненужные пикселы, осветлить\затемнить, увеличить\уменьшить размеры или копировать ее части. Все вопросы и пожелания пишем здесь и не забываем сказать спасибо Nil’у за его статью о моделях.
PS: Кен Сильверман заинтересован в пополнении своей коллекции воксельных моделей…
ДОПОЛНИТЕЛЬНО
Полная таблица ID для *.KVX файлов
Артефакты (не добавленные файлы в игру)
Полигональная модель ящика
Статья о вокселях от Nil’a
POLY2VOX (копия)
SLAB6 (копия)
Обсудить на форуме
|
|