Здравствуйте.Разрабатываю 3D движок для игры.Подскажите как сделать поворот вокруг своей оси при движении мыши по X.Всё перепробовал немогу догнать,получается что фигуры 3D вращаются относительно координат X=0,Y=0,Z=0. А в точке координат "камеры" т.е. относительно меня не получается.
Вот схемка http://workru24.narod.ru/3Diz.sha Спасибо.
Этот топик читают: Гость
Ответов: 55
Рейтинг: -2
|
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Workru24, в гугл: OpenGL поворот.
|
|||
карма: 1 |
|
Ответов: 55
Рейтинг: -2
|
|||
Ничё не понятно Лучше бы схемку выложили.
|
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Workru24, сначала делаешь GL_Translate - перенос начала координат в нужную точку. Потом GL_Rotate - поворот системы координат. И потом опять GL_Translate - перенос в обратную сторону
|
|||
карма: 1 |
|
Ответов: 301
Рейтинг: 11
|
|||
уточню: способ 2: Gl_PushMatrix, Gl_Translate, Gl_Rotate, Gl_PopMatrix. не знаю как в хиасме, но в делфи работает быстрее.
|
|||
карма: 0 |
|
Ответов: 55
Рейтинг: -2
|
|||
Да не переносит Gl_Translate систему координат нужель не понятно,а переносит объекты(фигуры) относительно начала координат.
|
|||
карма: 0 |
|
Ответов: 301
Рейтинг: 11
|
|||
Справка delphi писал(а): The glTranslate function moves the coordinate system origin to the point specified by (x,y,z). |
|||
карма: 0 |
|
Ответов: 55
Рейтинг: -2
|
|||
Незнай почему так написано,у меня эта функция перемещает объекты относительно начала координат
|
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Workru24, а инвертировать смещения не судьба?
|
|||
карма: 1 |
|
Ответов: 55
Рейтинг: -2
|
|||
Как это?Объясните...
|
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Workru24, знак "-" написать (или убрать) в вычисленных смещениях.
|
|||
карма: 1 |
|
Ответов: 1304
Рейтинг: 405
|
|||
Смещение задаётся компонентом GL_Perspective z=-8
|
|||
карма: 3 |
|
Ответов: 55
Рейтинг: -2
|
|||
Так и не понял Смещение чего,относительно чего?Объясните толком.Смещение начала координат относительно 3D фигур(объектов),так что ли?Короче поворот на 360 градусов по Y при помощи Gl_Rotate будет только в том случае,если камера т.е. я буду всё время находится на координатах X=0,Y=0,Z=0 т.е. в начале координат.Тогда при движении вперёд,назад,влево,вправо мне придётся смещать объекты относительно начала координат,другого варианта я пока не вижу.
|
|||
карма: 0 |
|
Ответов: 1304
Рейтинг: 405
|
|||
Workru24 писал(а): Смещение чего,относительно чегоСмещения камеры относительно мировых координат задаётся z=-8, что позволяет видеть 3D фигуры помещённые в начало координат. Короче поворот на 360 градусов по Y при помощи Gl_Rotate будет только в том случае,если камера т.е. я буду всё время находится на координатах X=0,Y=0,Z=0
если не перемножать матрицы то да, при этом задав z=8 тем самым сдвигая всю сцену. Сразу возникает вопрос почему именно по Y а не по Z? Тогда при движении вперёд,назад,влево,вправо мне придётся смещать объекты относительно начала координат,другого варианта я пока не вижу.
И зачем я парился GL_FlyHandler |
|||
карма: 3 |
|
Ответов: 55
Рейтинг: -2
|
|||
GL_FlyHandle хорошая весчь конечно,но там нет обзора на 360 градусов.Вот если бы как нибудь соединить воедино Gl_Rotate и GL_FlyHandle,при этом Gl_Rotate работала бы относительно позиций камеры X,Y,Z GL_FlyHandle,это был бы большой гуд.
|
|||
карма: 0 |
|