Адаптировать существующий код для OpenGL стереоскопического рендеринга? - PullRequest
2 голосов
/ 15 февраля 2011

Я пытаюсь реализовать стереоскопическое 3D в OpenGL, используя параллельную технику.

Я прочитал эту статью , которая очень подробно объясняет, как настроитькамера для левого и правого обзора.Он использует модель камеры и настраивает вид слева и справа с помощью gluLookAt.

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

См. Следующий пример, где "существующий код" представляет код, который я не могу сделатьизменяется на.

//Render left view

// setUpCamera set the gl projection and model matrix
existingcode.setUpCamera()

..
here I want to somehow modify the current gl projection matrix for the left view
..

existingcode.renderScene()

//.. then render right view

Можно ли это сделать, возможно, вызвав glGetMatrix и как-то изменить его?

1 Ответ

3 голосов
/ 15 февраля 2011

Что вам нужно сделать, так это использовать сдвиг объектива.

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
stereo_offset = eye * near * parallax_factor / convergence_distance;
glFrustum(stereo_offset + left, stereo_offset + right, bottom, top, near, far);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(eye * parallax_factor * convergence_distance, 0, 0);

/* now use gluLookAt here as this were a normal 2D rendering */

parallax_factor должно быть не больше, чем отношение half_eye_distance / screen_width, поэтому чем больше экран, тем меньше значение parallax_factor,Хорошее значение для parallax_factor для использования на экране компьютера составляет 0,05, для больших экранов (например, в кино) это что-то вроде 0,01

. Эта техника смещения проекции - именно то, что я использовал для повторного рендеринга Elephants Dream в стереоскопическом 3D, однако, поскольку автономный рендер Blenders не использует OpenGL, код выглядит немного иначе http://www.youtube.com/watch?v=L-tmaMR1p3w

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...