Показать сообщение отдельно
Старый 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)
 
Ответить с цитированием