пятница, 9 ноября 2012 г.

Продолжение создания графики, только теперь с 3D.



Я однажды уже трогал тему создания 3D игры, но рассказал я тогда еще не все возможности Game Maker в этом пространстве. Поскольку графика, тем более 3D, это такое дело - я написал целую статью почти полностью раскрывающую все скрипты в 3D мире...

Войдем в 3D
В общем начнем с уже знакомого входа в 3D мир. Он осуществляется следующим скриптом:

d3d_start() 

Вам этот простенький скрипт уже знаком по трем урокам). Но за кадром я постоянно оставлял не менее важный скрипт выхода из 3D пространства:

d3d_end() 

Так же  не забудем пожалуй и некоторые важные переменные: draw_set_color() и z.

draw_set_color() указывает цвет обрисовки. Например:

draw_set_color(c_white)

z указывает высоту объекта. Например:

z:=10;


Простые объекты

Пластина
Одна из самых распространенных фигур - пластина(floor). Рисуется она как обычный квадрат, только с параметрами z. Вот шаблон:

d3d_draw_floor(<x>,<y>,<z>,<x1>,<y1>,<z1>,<текстура>,1,1);

В пример могу привести прорисовку игрока в 14 уроке:

d3d_draw_floor(x-16,y-16,0,x+16,y+16,0,sprite_get_texture(sprite1,image_index),1,1);




Стены
Стены(wall) используются не так часто относительно пластины конечно, но используются. Создается стена по следующему шаблону:

d3d_draw_wall(<x>,<y>,<z>,<x1>,<y1>,<z1>,<текстура>,1,1);

Как вы можете убедиться - стена это почти тоже что и пластина, только в вертикальном положении.


Блоки
Блоки(block) порой очень нужны в "игродельстве". Строятся блоки по следующему шаблону:

d3d_draw_block(<x>,<y>,<z>,<x1>,<y1>,<z1>,<текстура>,1,1);

В пример могу привести коробочку из 12 урока:

d3d_draw_block(x-16,y-16,-16,x+16,y+16,16,sprite_get_texture(sprite0,0),1,1);



Многополигонные модели
Очень малой популярностью пользуются многополигонные модели, поскольку рисовать их обычно приходится вручную, а загружать неоткуда. Но именно с помощью таких моделей можно создать собственную форму, например человечка. Хотя я не пользуюсь такими моделями, но вкратце расскажу о них.

Начало
Каждый скрипт рисующий многополигонную модель должен располагаться в событииDraw. Так же зачастую такой скрипт выделяют фигурными скобками:

{
...
}

Начинается такой скрипт обычно с выбора ориентировочного примитива(kind). Например pr_pointlist - выделение точек, pr_linestrip - выделение граней, pr_trianglelist - выделение всего объекта. Ну например начнем так:

{
  d3d_primitive_begin(pr_trianglelist);

}

Текстура
Текстура каждому важна, текстура каждому нужна, а загружается текстура для модели следующим кодом:

d3d_primitive_begin_texture(<kind>,<текстура>);

Например возьмем новый фон(backgound) с названием f1 и загрузим в наш код:

{
d3d_primitive_begin(pr_trianglelist);
d3d_primitive_begin_texture(pr_trianglelist,f1);
}

Вершины
Многополигонная текстура рисуется за счет точек - вершин. Вершины добавляются следующим образом:

d3d_vertex(<x>,<y>,<z>);

Именно с помощью таких вершин рисуется модель.

Конец
Не забываем закончить нашу модель! Для этого используется следующая команда:

d3d_primitive_end(); 

Загрузка текстур
Ну и наконец самое важное - загрузка текстур. Такая загрузка осуществляется как при помощи фонов, так и при помощи спрайтов. Например загрузка текстуры в переменную texпри помощи фонов будет выглядеть так:

tex:=background_get_texture(<фон>);

То же самое только со спрайтами будет выглядеть несколько сложней:

tex:=sprite_get_texture(<спрайт>,image_index);


Но вот мы с вами и поговорили о возможностях 3D графики в Game Maker

Комментариев нет:

Отправить комментарий