Каков правильный порядок для серии переводов и вращений OpenGL ES для вывода вещей? - PullRequest
1 голос
/ 21 июля 2010

Я знаю, что камера находится в 0,0,0, и мне нужно вращать мир вокруг нее, но я запутываюсь относительно того, в каком порядке делать переводы и вращения.

Если есть теоретическийx, y, z система координат, где камера находится в cx, cy, cz и она ориентирована на cox, coy, coz, и у меня есть куб, который находится в bx, by, bz ориентирован на box, boy, boz, то какая серияglTranslatef и glRotatef необходимы для правильного и правильного поворота коробки вдали от камеры?

Вот основные операции, но я понятия не имею, в каком порядке их размещать, и какие другие операции требуются длясделать так, чтобы он появился, как и ожидалось.

gl.glLoadIdentity();

// rotation and translation for cube
gl.glRotatef(box, 1,0,0);
gl.glRotatef(boy, 0,1,0);
gl.glRotatef(boz, 0,0,1);
gl.glTranslatef(bx,by,bz);

// rotation and translation for camera
gl.glRotatef(cox, 1,0,0);
gl.glRotatef(coy, 0,1,0);
gl.glRotatef(coz, 0,0,1);
gl.glTranslatef(cx,cy,cz);

// draw the cube
cube.draw(gl);

1 Ответ

1 голос
/ 21 июля 2010

Сделайте все наоборот: сначала преобразуйте камеру, затем ваши объекты:

gl.glLoadIdentity();

// rotation and translation for camera
gl.glRotatef(-cox, 1,0,0);
gl.glRotatef(-coy, 0,1,0);
gl.glRotatef(-coz, 0,0,1);
gl.glTranslatef(-cx,-cy,-cz);

// rotation and translation for cube
gl.glRotatef(box, 1,0,0);
gl.glRotatef(boy, 0,1,0);
gl.glRotatef(boz, 0,0,1);
gl.glTranslatef(bx,by,bz);

// draw the cube
cube.draw(gl);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...