Вверх ↑
Этот топик читают: Гость
Ответов: 55
Рейтинг: -2
#1: 2010-10-23 06:55:35 ЛС | профиль | цитата
Здравствуйте.Разрабатываю 3D движок для игры.Подскажите как сделать поворот вокруг своей оси при движении мыши по X.Всё перепробовал немогу догнать,получается что фигуры 3D вращаются относительно координат X=0,Y=0,Z=0. А в точке координат "камеры" т.е. относительно меня не получается.

Вот схемка http://workru24.narod.ru/3Diz.sha Спасибо.
карма: 0

0
Ответов: 5446
Рейтинг: 323
#2: 2010-10-23 08:46:12 ЛС | профиль | цитата
Workru24, в гугл: OpenGL поворот.
карма: 1

0
Ответов: 55
Рейтинг: -2
#3: 2010-10-23 10:04:29 ЛС | профиль | цитата
Ничё не понятно Лучше бы схемку выложили.
карма: 0

0
Ответов: 5446
Рейтинг: 323
#4: 2010-10-23 19:34:49 ЛС | профиль | цитата
Workru24, сначала делаешь GL_Translate - перенос начала координат в нужную точку. Потом GL_Rotate - поворот системы координат. И потом опять GL_Translate - перенос в обратную сторону
карма: 1

0
Ответов: 301
Рейтинг: 11
#5: 2010-10-23 22:55:44 ЛС | профиль | цитата
уточню: способ 2: Gl_PushMatrix, Gl_Translate, Gl_Rotate, Gl_PopMatrix. не знаю как в хиасме, но в делфи работает быстрее.
карма: 0

0
Ответов: 55
Рейтинг: -2
#6: 2010-10-24 00:06:40 ЛС | профиль | цитата
Да не переносит Gl_Translate систему координат нужель не понятно,а переносит объекты(фигуры) относительно начала координат.
карма: 0

0
Ответов: 301
Рейтинг: 11
#7: 2010-10-24 00:55:18 ЛС | профиль | цитата
Справка delphi писал(а):
The glTranslate function moves the coordinate system origin to the point specified by (x,y,z).

карма: 0

0
Ответов: 55
Рейтинг: -2
#8: 2010-10-24 01:06:40 ЛС | профиль | цитата
Незнай почему так написано,у меня эта функция перемещает объекты относительно начала координат
карма: 0

0
Ответов: 5446
Рейтинг: 323
#9: 2010-10-24 02:03:01 ЛС | профиль | цитата
Workru24, а инвертировать смещения не судьба?
карма: 1

0
Ответов: 55
Рейтинг: -2
#10: 2010-10-24 02:05:03 ЛС | профиль | цитата
Как это?Объясните...
карма: 0

0
Ответов: 5446
Рейтинг: 323
#11: 2010-10-24 02:06:44 ЛС | профиль | цитата
Workru24, знак "-" написать (или убрать) в вычисленных смещениях.
карма: 1

0
Ответов: 1304
Рейтинг: 405
#12: 2010-10-24 02:08:59 ЛС | профиль | цитата
Смещение задаётся компонентом GL_Perspective z=-8
карма: 3

0
Ответов: 55
Рейтинг: -2
#13: 2010-10-24 02:24:03 ЛС | профиль | цитата
Так и не понял Смещение чего,относительно чего?Объясните толком.Смещение начала координат относительно 3D фигур(объектов),так что ли?Короче поворот на 360 градусов по Y при помощи Gl_Rotate будет только в том случае,если камера т.е. я буду всё время находится на координатах X=0,Y=0,Z=0 т.е. в начале координат.Тогда при движении вперёд,назад,влево,вправо мне придётся смещать объекты относительно начала координат,другого варианта я пока не вижу.
карма: 0

0
Ответов: 1304
Рейтинг: 405
#14: 2010-10-24 02:53:22 ЛС | профиль | цитата
Workru24 писал(а):
Смещение чего,относительно чего

Смещения камеры относительно мировых координат задаётся z=-8, что позволяет видеть 3D фигуры помещённые в начало координат.
Короче поворот на 360 градусов по Y при помощи Gl_Rotate будет только в том случае,если камера т.е. я буду всё время находится на координатах X=0,Y=0,Z=0

если не перемножать матрицы то да, при этом задав z=8 тем самым сдвигая всю сцену.
Сразу возникает вопрос почему именно по Y а не по Z?
Тогда при движении вперёд,назад,влево,вправо мне придётся смещать объекты относительно начала координат,другого варианта я пока не вижу.

И зачем я парился GL_FlyHandler

карма: 3

0
Ответов: 55
Рейтинг: -2
#15: 2010-10-24 03:09:15 ЛС | профиль | цитата
GL_FlyHandle хорошая весчь конечно,но там нет обзора на 360 градусов.Вот если бы как нибудь соединить воедино Gl_Rotate и GL_FlyHandle,при этом Gl_Rotate работала бы относительно позиций камеры X,Y,Z GL_FlyHandle,это был бы большой гуд.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)