В этой статье расскажем о дополнительных инструментах для обработки файлов.
Шейдеры — это под программы, выполняют вычисления на графическом процессоре (GPU) и управляют тем, как объекты и эффекты отображаются на экране
О расположении шейдеров можно узнать тут
- Открываем директорию «Contents/shaders» и создаем две папки
- с названием
fragm— означает исходники для фрагментных шейдеров - с названием
vertex— означает исходники для вершинных шейдеров
- Создаем шейдеры (к примеру, вот такой — смотреть тут)
- Создаем в корневой директории игрового движка файл сценарий командной строки
dev_compilleShaders.cmd
@echo off && cd Bin32\ && ME_Shaders "\fragm\video" && cd ..\Contents\shaders\fragm && ren *.bin *.chf && move *.chf .. && cd ..\..\..\Bin32\ && ME_Shaders "\vertex\video" && @echo off && cd ..\Contents\shaders\vertex && ren *.bin *.chv && move *.chv .. pause
- Запускаем файл
dev_compilleShaders.cmdсценарий для компиляции шейдеров - В папке «Contents/shaders» должны появится новые два файла:
video.chfиvideo.chv
В шейдерных файлах должна быть первая стройка #MotionEngine_Shader_File для того, чтобы игровой движок смог понять, что этот файл для него создан. Также сохраняется обычно в формате *.assets.
пример файлов:
Фрагментный шейдер «video.assets» в папке «/Contents/shaders/fragm»
#MotionEngine_Shader_File
out vec4 FragColor;
in vec3 ourColor;
in vec2 TexCoord;
// texture sampler
uniform sampler2D texture1;
void main()
{
FragColor = texture(texture1, TexCoord);
}
Вершинный шейдер «video.assets» в папке «/Contents/shaders/vertex»
#MotionEngine_Shader_File
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
layout (location = 2) in vec2 aTexCoord;
out vec3 ourColor;
out vec2 TexCoord;
void main()
{
gl_Position = vec4(aPos.xy,0,0.5);
ourColor = aColor;
TexCoord = vec2(aTexCoord.x, -aTexCoord.y);
}
- Файл
<название модели>.mep(meta prop ) Информационный файл (описание модели):
{"model":"<название модели>.ME2","author":"<автор>","published":"<когда создана была модель в формате: ГГГГ.ММ.ДД>"}
- Файл
<название модели>.ME2(Motion Engine версии 2) — Сама 3д-модель экспортированная - Файл или файлы «<название модели>.ME2.s*.mtx» скинов — указываются текстуры для модели, тем самым можно сделать несколько скинов у одной 3д-модели (нумерация первого скина начинается с нуля, к примеру: «TestModel.ME2.s0.mtx», или «TestModel.ME2.s5.mtx»). Выглядит файл скина, например:
{"textures":[{"id":"Map1-image","name":"Map1","path":"solids/bed_01.gi"}]}
Но обращаем внимание, что файл автоматически генерируется при экспорте в формат ME2. Эти все перечисленные файлы они обязательные, иначе игровой движок не сможет запустить модели, либо же другой инструментарий.
Из своего опыта расскажем, что бывают непонятные проблемы с геометрией экспортированных 3д-моделей из программы Blender.
* Открываем Autodesk 3ds max нашу созданную новую 3д-модель
- В главном меню выбираем «Customize» → «Units Setup»:
Проверяем, чтобы заданы параметры были также как на скриншоте:
Нажимаем на кнопку «System Unit Setup» откроется ещё настройка, тоже проверяем. Должно быть также как на скриншоте:
Нажимем ОК в двух окнах.
- Выделяем модель нажимаем ПКМ, преобразуем модель в полигональную сетку:
- Сбрасываем трансформацию объектов (нужно выполнять для правильности отображения модели 1:1 - метров)
- Выбираем экспорт в главном меню: «File» → «Export» → «Export…», указываем формат: «Autodesk Collada (*.dae)», сохраняем в папку «Contents/objects» файл «<название вашей модели>.dae». Нажимаем «Save» в диалоговом окне экспорта.
- Модель готова к экспорту. Проверяем наличие файлов: «<название модели>.ME2», «<название модели>.s0.mtx»
Создаем файл описания модели по формату, который ранее был показан в структуре — тут
На данный момент существует два способа конвертации файла 3д-модели в формат ME2 игрового движка.
- в редакторе карт
MERadiantс помощью инструмента (подробнее смотрите тут) - с помощью сценария командной строки
- для этого создайте файл
make.cmdв корневой папке игрового движка с содержимым и запустите (в этом случае текстуры необходимо из старого формата преобразовать в GI-формат - далее вручную обработаем текстуры):
@echo off && cd Bin32\ && ME_TEXTURE "../Contents/objects/<ваше название модели>.dae" "../Contents/objects/<ваше название модели>.ME2"
Текстуры должны располагаться в папке «Contents/textures» в тематической папке для эффективного поиска текстур.
- Создаем файл «make2.cmd» сценария командной строки в корне игрового движка:
@echo off && cd Bin32\ && ME_TEXTURE GI "../Contents/textures/<пример под папки>/<текстура>.tga" "../Contents/textures/<пример под папки>/<текстура>.gi"
- Выполняем файл «make2.cmd», в итоге получается файл текстуры
В этом разделе, сейчас настроим файл скинов, а именно заменим путь на относительный (игровой движок понимает только относительный путь от папки «Contents/textures/<папка которую знает движок>»)
- находим например нужный скин у модели в папке «Contents/objects»
<название модели.ME2.s0.mtx, открываем с помощью блокнота. - открывается код в синтаксисе JSON, редактируем пути в значениях
path(не должно содержать:file:или полный путь с указанием букв диска), пример правильного пути:solids/geom_tunel2.gi - сохраняем
CTRL+S, закрываем.
Поздравляем модель добавлена в игровой движок.




