Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2012, 19:56   #1
ardor
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 51
По умолчанию Создание большого 3D мира

OpenGl

Код:
int DrawGLScene( )       
    {
	Tspeed+=speed;   //cкорость корабля
	zrotsp+=zrot;       //скорости поворота вокруг осей x, y, z
	xrotsp+=xrot;
	yrotsp+=yrot;
           
           glTranslatef(0,0,-0.2);   
           glRotatef(-70,1,0,0);
	
	DrawShip(400.0f);   //Сам корабль

	glLoadIdentity();     

	glTranslatef(0,0,Tspeed);  //перемещение мира (куба) вглубь экрана
	glRotatef(zrotsp,0,0,1);    //поворот мира
	glRotatef(yrotsp,0,1,0);
	glRotatef(xrotsp,1,0,0);
	
	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, texture[0]);
	glBegin(GL_QUADS);

           glTexCoord2f(1.0f, 1.0f); glVertex3f(  55.0f,   55.0f, -55.0f);
           ... // рисуется куб. все стороны - 110
           glEnd();
Такая проблема, что мир по максимуму получается 110. Если делать больше - то пропадает. Как будто обрезается изображение. В итоге мой корабль слишком быстро пролетает весь куб, и никакого эффекта "космоса" не получается. Пытался уменьшить модельку - ничего не меняется. Уменьшение скорости - тоже не то. Как сделать мир большой? И чтобы его не обрезало по краям?


вылетел за границу, и мир "отсекается"
Изображения
Тип файла: jpg мир.jpg (47.5 Кб, 242 просмотров)
ardor вне форума Ответить с цитированием
Старый 01.03.2012, 20:16   #2
Alex&(R)
Пользователь
 
Аватар для Alex&(R)
 
Регистрация: 15.05.2011
Сообщений: 14
По умолчанию

Обычно космический корабль и куб с текстурой звездного неба (skybox) делают неподвижным (только поворот). Перемещают мелкие объекты (астеройды, кометы, имитации звезд и прочий космический мусор) остносительно корабля игрока.
Alex&(R) вне форума Ответить с цитированием
Старый 01.03.2012, 20:22   #3
ardor
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 51
По умолчанию

В моем случае мелких объектов нет. Только мой корабль, корабль противника, и космос) Как это лучше реализовать? При перемещении своего корабля - мне нужно переместить только корабль противника, для эффекта полета. Но если, допустим, я буду улетать назад слишком далеко - то как быть? Корабль противника вылетит за границу куба.

И основной вопрос остался нераскрытым. Как увеличить куб, чтобы ни одна из его вершин не "уезжала" за границы сцены?
ardor вне форума Ответить с цитированием
Старый 01.03.2012, 21:16   #4
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Попробуйте пересмотреть gluperspective.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 02.03.2012, 00:14   #5
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Космос в смысле фона можно просто нарисовать относительно недалеко на весь экран даже без записи в буфер глубины, центрируя куб (или сферу) в позиции игрока. Размер, повторюсь, при этом может быть очень небольшим, типа немножно больше расстояния до камеры.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание большого количества потоков Crystallon Общие вопросы Delphi 3 03.06.2011 02:42
БД Стран и Городов мира Zefs Свободное общение 6 07.10.2009 21:35
Создание катры мира (от Яндекса) с помощью Дельфи Alex Cones Общие вопросы Delphi 2 27.05.2009 09:16