tsn+=1; if (tsn==999) { tsn=0; d3d_model_primitive_end; d3d_model_primitive_begin(tm,pr_trianglelist); } }
d3d_model_primitive_end; return tm;
Теперь сохраняем и можно считать что уже моделли можно подгружать. Теперь скомпилируем на Максимке любую моделль, или на блендере!(Важно - сохраните моделль в формате obj!) Через программу UVMapperClassic0.30а конвертируем моделль в читабельный гамаку формат obj. Перейдем непосредственно к загрузке самой моделли, да и еще, если вы делаете текстурированную моделль, развертка должна быть умещена строго в среднее окошечко с текстурой!(Это я пользователям Максимки!). Так-с. Загружаем текстуру в Backgrounds или Sprites(Для двух и более текстур на моделль, под тип анимации!) Создаем объект моделли. в Create пишем
Code
****_texture = background_get_texture(название текстуры) //В случае со спрайтом sprite_get_texture(название текстуры,image_index) ****_model = MakeObj('имя моделли.obj',1)
Примечание - вместо звездочек указывается любое английско-буквенное имя. В Draw пишем
Code
d3d_model_draw(****_model,x,y,z,****_texture) //x,y,z - положение моделли.(Ставьте все ноль, если это не оружие для перса!)
Дальше вы пишите если хотите трансформировать моделль; d3d_transform_set_identity() // обязательно в начало d3d_transform_add_rotation_x(angle) //angle - поворот моделли в градусах; d3d_transform_add_rotation_y(angle) d3d_transform_add_rotation_z(angle) d3d_transform_add_translation(x,y,z) // РАСПОЛОЖЕНИЕ НА КАРТЕ! Оставьте x и y что расставлять по разным координатам, а z (Высоту) - правьте на свое усмотрение! d3d_transform_add_scaling(xs,ys,zs) // растяг по осям x,y,z d3d_transform_set_identity()// обязательно в конец На этом думаю можно окончить с добавкой 3д моделлей! Примечание (Текстуру перевернуть сверху - вниз)!
Работа с освещением В Draw постоянного объекта
Code
d3d_set_lighting(enable)
Code
d3d_set_shading(smooth)
- это можно и не писать, это просто эффект плавного затемнения; Дальше в Draw объекта осветителя: Если солнце
Code
d3d_light_define_direction(ind,dx,dy,dz,col)
ind - номер осветителя dx - поворот по x dy - поворот по y dz - поворот по z col - цвет освещения (c_*****);
Если освещение по типу свечи
Code
d3d_light_define_point(ind,x,y,z,range,col)
ind - номер осветителя x - положение по x y - положение по y z - положение по z col - цвет освещения (c_*****) range - дальность освещения;
Есть так же пример со светящимися объектами - якобы отражающими свет Ну тут я просто сделаю copy-past.
d3d_vertex_normal(x,y,z,nx,ny,nz) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz).
d3d_vertex_normal_color(x,y,z,nx,ny,nz,col,alpha) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz) и с некоторым цветом и значением альфа.
d3d_vertex_normal_texture(x,y,z,nx,ny,nz,xtex,ytex) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz) и с позицией (xtex,ytex) в текстуре, смешивающейся с цветом и с альфа значением, установленных прежде.
d3d_vertex_normal_texture_color(x,y,z,nx,ny,nz,xtex,ytex,col,alpha) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz) с позицией (xtex,ytex) в текстуре, смешивающейся с некоторым цветом и альфа значением
Создание skysphere
Для начала создайте объект с имением obj_skysphere Загрузите в background текстуру неба с разверткой под 360 градусов. Назовите ее любым коротким именем. Теперь перейдет к недавно созданному объекту obj_skysphere В Draw объекта впишите код
написания кода идет в таком порядке d3d_draw_ellipsoid(x1 ,y1 , z1, x2, y2, z2, texid, hrepeat, vrepeat, steps); x1, x2, y1, y2 - координаты сферы в пространстве; z1, z2 - высоты сферы; texid - id текстуры; hrepeat - повтор текстуры по горизонтали; vrepeat - повтор текстуры по вертикали; steps - число сторон сферы; Теперь сделаем сферу движимую за игроком, дабы не убежать за пределы В Step
- это можно и не писать, это просто эффект плавного затемнения; Дальше в Draw объекта осветителя: Если солнце
Code
d3d_light_define_direction(ind,dx,dy,dz,col)
ind - номер осветителя dx - поворот по x dy - поворот по y dz - поворот по z col - цвет освещения (c_*****);
Если освещение по типу свечи
Code
d3d_light_define_point(ind,x,y,z,range,col)
ind - номер осветителя x - положение по x y - положение по y z - положение по z col - цвет освещения (c_*****) range - дальность освещения;
Есть так же пример со светящимися объектами - якобы отражающими свет Ну тут я просто сделаю copy-past.
d3d_vertex_normal(x,y,z,nx,ny,nz) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz).
d3d_vertex_normal_color(x,y,z,nx,ny,nz,col,alpha) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz) и с некоторым цветом и значением альфа.
d3d_vertex_normal_texture(x,y,z,nx,ny,nz,xtex,ytex) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz) и с позицией (xtex,ytex) в текстуре, смешивающейся с цветом и с альфа значением, установленных прежде.
d3d_vertex_normal_texture_color(x,y,z,nx,ny,nz,xtex,ytex,col,alpha) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz) с позицией (xtex,ytex) в текстуре, смешивающейся с некоторым цветом и альфа значением
d3d_transform_set_identity() d3d_transform_add_scaling(0.5,0.5,0.5) d3d_transform_add_rotation_z(obj_player.direction+rotz); d3d_transform_add_translation(obj_player.x,obj_player.y,obj_player.z+9.5)// эта строка у меня отмечена что бы пушка была всегда на координатах игрока d3d_model_draw(weap1_model,0,0,0,weap1_texture); d3d_transform_set_identity()
Свободный обзор исправил, теперь по оси x тока (аля old FPS)