База знаний

Последнее изменение: 2025/10/12 22:31 — 127.0.0.1

Дополнительный инструментарий

В этой статье расскажем о дополнительных инструментах для обработки файлов.

Компиляция шейдеров

Шейдеры — это под программы, выполняют вычисления на графическом процессоре (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);
}

Конвертация 3д-моделей в игровой движок

Структура модели

  • Файл <название модели>.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д-моделей

Из своего опыта расскажем, что бывают непонятные проблемы с геометрией экспортированных 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»

Создаем файл mep

Создаем файл описания модели по формату, который ранее был показан в структуре — тут

Обработка 3д-модели

На данный момент существует два способа конвертации файла 3д-модели в формат ME2 игрового движка.

  1. в редакторе карт MERadiant с помощью инструмента (подробнее смотрите тут)
  2. с помощью сценария командной строки
    1. для этого создайте файл 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/<папка которую знает движок>»)

  1. находим например нужный скин у модели в папке «Contents/objects» <название модели.ME2.s0.mtx, открываем с помощью блокнота.
  2. открывается код в синтаксисе JSON, редактируем пути в значениях path (не должно содержать: file: или полный путь с указанием букв диска), пример правильного пути: solids/geom_tunel2.gi
  3. сохраняем CTRL+S, закрываем.

Поздравляем модель добавлена в игровой движок.