Быстрый старт с Xtreme3D
Первая сцена в Xtreme3D занимает около двадцати строк кода: подключить библиотеку, создать окно просмотра, свет, плоскость и камеру, а затем в каждом шаге игры рисовать кадр.
Пример рассчитан на классический Game Maker с подключением DLL и версией 3.x; в 4.x для GameMaker Studio 2 библиотека подключается как расширение, но имена функций остаются теми же.
Шаг 1. Подключите движок
В событии создания (Create) загрузите библиотеку и инициализируйте движок:
Dll_init('xtreme3d.dll');
EngineCreate();
Шаг 2. Создайте окно просмотра
Viewer — это область окна, куда движок выводит изображение. Включите освещение:
view = ViewerCreate(window_handle(), 0, 0, 640, 480);
ViewerSetLighting(view, 1);
Шаг 3. Добавьте источник света
light = LightCreate(lsOmni, 0);
ObjectSetPosition(light, 0, 18, 0);
Всенаправленный источник (lsOmni) освещает сцену во все стороны. Последний параметр функции — родительский объект; ноль означает, что родителя нет.
Шаг 4. Постройте иерархию сцены
Обычно в корне создают несколько «пустых» объектов-контейнеров (DummyCube), к которым затем привязывают всё остальное:
global.back = DummycubeCreate(0);
global.scene = DummycubeCreate(0);
global.front = DummycubeCreate(0);
Порядок контейнеров влияет на порядок отрисовки: «задний» план, основная сцена и «передний» план.
Шаг 5. Создайте плоскость
plane = PlaneCreate(0, 64, 64, 8, 8, global.scene);
ObjectPitch(plane, 90);
Плоскость размером 64 на 64 разбита на сетку 8 на 8. Поворот на 90 градусов по тангажу кладёт её горизонтально — получается пол.
Шаг 6. Настройте камеру
camPos = DummycubeCreate(global.scene);
ObjectSetPosition(camPos, 0, 10, 0);
camera = CameraCreate(camPos);
ViewerSetCamera(view, camera);
Set_automatic_draw(0);
Камеру удобно привязывать к отдельному контейнеру: двигая и поворачивая его, вы управляете «взглядом» в сцене. Отключение автоматической отрисовки Game Maker передаёт вывод кадра движку.
Шаг 7. Рисуйте кадр
В событии шага (Step) обновите состояние движка и отрисуйте сцену:
Update(1.0/room_speed);
ViewerRender(view);
Дальше можно добавлять управление камерой с клавиатуры, загружать модели, назначать материалы и шейдеры.
Что изучать дальше
- загрузка 3D-модели из файла и работа с анимацией;
- камеры от первого и третьего лица;
- столкновения и физика;
- скайдомы, ландшафты, вода, частицы;
- GLSL-шейдеры и тени.
Справочник функций входит в состав SDK, а подготовить инструменты помогут утилиты для 3D-разработки. Если что-то не получается, загляните в FAQ.