Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > 3D-программирование

3D-программирование miniB3D, OpenGL

Ответ
 
Опции темы
Старый 15.11.2007, 15:57   #16
XenuS
Нуждающийся
 
Регистрация: 31.07.2007
Сообщений: 89
Написано одно полезное сообщение
Re: Реализация простой камеры.

ок, буду искать ошибку....спс))
(Offline)
 
Ответить с цитированием
Старый 16.11.2007, 01:02   #17
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Re: Реализация простой камеры.

Ура! Я сделал управление с клавы и мыши! Терь все как положено...

Теперь надо понять текстурирование...
(Offline)
 
Ответить с цитированием
Старый 17.11.2007, 15:03   #18
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Re: Реализация простой камеры.

Гы. оказывается, сделал я неправильно. Я, так сказать, крутил весь с мир, а сама камеры была на месте...

Это оказывается неправильно...

Правильно - это применять gluLookAt() ... но какие параметры и че - хз...
Вот, кстати, нашел инфу об этой функции:
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.


Мож кому-то понадобится...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (26.03.2009)
Старый 17.11.2007, 19:52   #19
jimon
 
Сообщений: n/a
Re: Реализация простой камеры.

Данил
ну там 9 параметров
3 параметра ето x,y,z точки где стоит камера
3 параметра ето x,y,z точки куда смотрит камера
3 параметра ето x,y,z куда смотрит "верх" камеры
ну типа чтобы камеру можно было вращать вокруг своей оси
которая проходит через центр обьектива
 
Ответить с цитированием
Старый 17.11.2007, 20:07   #20
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Re: Реализация простой камеры.

Ну я вроде как разобрался уже...
Разницы не заметил между отдельными функциями, и этим глуком gluLookAt ...

Хех...
Никто не знает, как повернуть объект вокруг себя?
Есил поворасчивать вначале цикла, а потом по глобальным координатам переставлять - параша получается.
Если вначалае переместить по глобальным координатам, а затем вертим, то объект поворачивается не вокруг своей оси, а вокруг 0, то есть по большому радиусу...

Пытался методом тыка - не получилось...

Method Draw()
Local xtrans:Float, ztrans:Float
Local scenerotX:Float, scenerotY:Float

'Вычеляем мировые координаты поворота.
scenerotX = 360.0 - CameraRX
scenerotY = 360.0 - CameraRY
	
'координаты мировые пооложения в простарнстве
xtrans=-CameraX
ztrans=-CameraZ


glLoadIdentity

' Перемещаем по мировым координатам.
glRotatef -scenerotY, 1,0,0
glRotatef scenerotX, 0,1,0	
glTranslatef xtrans, 0, ztrans

'Рисуем...
glBegin GL_QUADS	
	For Local i = 0  To VerteCol
	
	glColor3f  0.9, 0.2, 0.15
	glVertex3f  VertexX[i], VertexY[i],VertexZ[i]           
	Next
glEnd
End Method
End Type


glRotated RotateSpeed, RotateX,RotateY,RotateZ
А вот он мега аццкий код , вертящий объект...
Но вот как его вокруг своей оси - хз...

Вариант 1.

При вызове функции поворота мы поворачиваем объект и как-нибудь записываем текущие координаты

вариант 2.

Вначале перемещаем и крутим объект. Потом закрепляем как-нибудь. И уже сново поворачиваем, но уже вокруг своей оси...



вот... как именно - я хз...
(Offline)
 
Ответить с цитированием
Старый 17.11.2007, 23:31   #21
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Реализация простой камеры.

сначала перемещаем, потом крутим. вот кусок кода:

	glPushMatrix();
				glTranslatef(x,y,z); 

				if(parent!=NULL)
				{
					if(parent->sx!=1.0f||
						parent->sy!=1.0f||
						parent->sz!=1.0f)
					{
						glScalef(1.0f/parent->sx,1.0f/parent->sy,1.0f/parent->sz);
					}
				}

				glRotatef(az,0,0,1);
				glRotatef(ay,0,1,0);
				glRotatef(ax,1,0,0);
/*
				if(parent!=NULL)
				{
					if(parent->sx!=1.0f||
						parent->sy!=1.0f||
						parent->sz!=1.0f)
					{
						glScalef(parent->sx,parent->sy,parent->sz);
					}
				}
*/
				if(sx!=1.0f||sy!=1.0f||sz!=1.0f)
				glScalef(sx,sy,sz);
(Offline)
 
Ответить с цитированием
Старый 18.11.2007, 00:00   #22
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Re: Реализация простой камеры.

Ура! наконец-то я сделал! HolyDel, спасиб те.

// Перемещаем относительно камеры
glRotatef -scenerotY, 1,0,0
glRotatef scenerotX, 0,1,0
glTranslatef xtrans, 0, ztrans

//Перемещаем относительно своих координат!
glTranslatef x, y, z
glRotated RotateSpeed, RotateX,RotateY,RotateZ

Ура! Сейчас текстурами займусь...
(Offline)
 
Ответить с цитированием
Старый 18.11.2007, 02:20   #23
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Реализация простой камеры.

начало координат ВСЕГДА в камере. твой драгоценный gluLookAt ничо другого не делает кроме как перемещает и поворачивает МИР.

// Перемещаем относительно камеры
glRotatef -scenerotY, 1,0,0
glRotatef scenerotX, 0,1,0
glTranslatef xtrans, 0, ztrans

//Перемещаем относительно своих координат!
glTranslatef x, y, z
glRotated RotateSpeed, RotateX,RotateY,RotateZ
вообще то нет. умножение матриц не коммутативно (т.е. AxB != BxA), это должно быть всем известно с институтской скамьи.
Если ты сначала повернеш мир, а потом его переместиш, то он у тебя переместится в другую точку (мир то уже перевернут).
а вот если ты его сначала переместиш а потом перевернеш, то он переместится туда, куда тебе надо.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всего один простой вопрос... ARTMAN 3D-программирование 3 22.04.2009 18:38
Перевод из b3d в bmax. простой вопрос Данил BlitzMax 7 31.03.2009 12:50
OpenGl простой вопрос Russ Delphi 5 07.10.2007 14:47
нужен моделер для простой работы jimon 3D Моделирование 8 04.01.2007 03:56


Часовой пояс GMT +4, время: 15:35.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com