Всем привет. Сегодня я расскажу вам основы Xtreme3D.dll в GameMaker. Xtreme3D использует OpenGL, что делает его мощным 3D движком для ГМ.
На этом уроке мы реализуем:
3D пространство;
возможность передвижения по нему игроком от первого лица;
добавление примитивов и моделей, а также, загрузку текстур для них.
Итак, приступим: Создаём отдельную папку для будущего проекта. Копируем в папку Xtreme3D.dll. Импортируем скрипты из архива. Создаём новый объект – o_main. Код в Create большой, поэтому, чтобы не было путаницы, буду объяснять код по частям. Первая часть:
Code
X = 1; Y = 2; Z = 4; dll_init(); EngineCreate(window_handle()); view1 = ViewerCreate(0,0,640,480); ViewerEnableVSync(view1,true); ViewerSetLighting(view1,true); ViewerSetBackgroundColor(view1,c_yellow);
объявляем переменные, отвечающие за координаты модели, которую потом будем загружать;
подключаем dll первой функцией, чтобы использовать потом все остальные функции;
создаём 3D движок;
создаём первый вид, в котором будет отображаться пространство в 3D;
включаем вертикальную синхронизацию в пределах вида view1;
включаем освещение в пределах того же вида;
выбираем цвет фона для вида view1.
Переходим ко второй части кода:
Code
scene = DummycubeCreate(0); Light = LightCreate(1,scene); ObjectSetPosition(Light,-10,20,50); matlib=MaterialLibraryCreate(); MaterialLibraryActivate(matlib);
MaterialCreate('texture','Dirt.jpg');
Пояснение:
создаём сцену;
создаём свет на для сцены;
устанавливаем свету позицию (20,20,50);
создаём библиотеку материалов и записываем её индекс в переменную;
активируем созданную библиотеку материалов;
создаём материал (текстуру) из файла Dirt.jpg с именем texture.
создаём основу для камеры и записываем её индекс в переменную;
создаём камеру для основы CamPos и, так же, записываем её индекс в переменную;
помещаем камеру в координаты (-4,2,3);
назначаем обзор в пределах первого вида (view1) камерой TheCam;
Переходим к событию шага:
Code
MouseLook(CamPos,TheCam); if keyboard_check(ord('A')) ObjectStrafe(CamPos,CamSpeed); if keyboard_check(ord('D')) ObjectStrafe(CamPos,-CamSpeed); if keyboard_check(ord('S')) ObjectMove(CamPos,CamSpeed); if keyboard_check(ord('W')) ObjectMove(CamPos,-CamSpeed);
Здесь первая строка отвечает за обзор мышью, а остальные – за управление. Со всеми объектами мы закончили.
Создаём комнату, помещаем в неё созданные объекты, сохраняем проект в папку, которую мы создали в начале урока, запускаем и получаем такой результат: