Войти
ПрограммированиеФорумГрафика

Вращение в OpenGL

#0
14:39, 18 мар. 2017

Не могу толковой статьи найти, мне надо куб повернуть - на месте - по оси X и Y, то есть когда я делаю просто поворот:

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(); //тут беру с моего класса камеры данные вставляю
glRotatef(fAppTime * 100.0f, 1.0f ,0.0f, 0.0f);
glRotatef(fAppTime * 100.0f, 0.0f ,1.0f, 0.0f);
My_DrawCube();

То куб вращается но с перемещением, а мне надо на месте. Куб в данном коде вокруг осей совершает поворот. Мне только надо поворот вокруг осей и куб на месте крутится. Ну, думаю ясно, ситуация знакомая. Кто и что может посоветовать?

Причем когда делаю вращение только по оси Y все отлично, когда делаю отдельно по оси X начинает с перемещением вращатся (не на месте).


#1
14:45, 18 мар. 2017

А не легче ли считать матрицы, допустим, с помощью glm и потом просто загружать в OpenGL?
У вас в функции My_DrawCube вызывается glTranslatef? Если да, то кажется надо сначала glTranslatef вызывать, а потом glRotatef.

#2
20:29, 18 мар. 2017

Vlad2001_MFS
А чем легче-то?? Ничем не легче!!

#3
22:51, 18 мар. 2017

А как он перемещается и как он рисуется в My_DrawCube?
С glm действительно легче )

#4
22:58, 18 мар. 2017

SmoothBoy
> когда делаю отдельно по оси X начинает с перемещением вращатся

ну так основание куба в нуле по Y наверняка. Какие локальные (в своей собственной СК, модельной) координаты у куба?

Прошло более 9 месяцев
#5
17:09, 30 дек. 2017

я имею ввиду саму механику, то есть математику - два раза вызывается

glRotatef(fAppTime * 100.0f, 1.0f ,0.0f, 0.0f);
glRotatef(fAppTime * 100.0f, 0.0f ,1.0f, 0.0f);

может там надо как- то брать матрицы после каждого вызова glRotatef() и перемножать их? сама математика проблемы, не средства там glm или брать getfloat передавать в шейдер.

#6
21:52, 30 дек. 2017

матрицы из glm.
И сразу в ответ на следующий вопрос(почему оси колбасит при повороте) - в умножении матриц важен порядок.
За использование glRotatef не следует расстреливать лишь потому, что это было-бы избавлением.

#7
22:47, 30 дек. 2017

AMM1AK
> Ничем не легче!!
Всем легче. Хотя бы по тому что это также как и gl вариант считается на СPU. И в целом одно и тоже, но у glm есть больше возможностей.
SmoothBoy
В любом случае у тебя существует смещение после поворота (может быть даже в вершинах куба), а не в повороте. Нужно его найти.

#8
0:17, 31 дек. 2017

SmoothBoy
FFP говно. Фтопку и учить векторную алгебру.

#9
1:16, 31 дек. 2017

The Player, ну зачем же так плохо о мёртвых? там же есть LoadMatrix, можно подёргаться :)

ПрограммированиеФорумГрафика

Тема в архиве.