Формирование стереопары
Статья не полностью соответствует правилам RuData или рекомендациям по оформлению статей. Желательно: Шаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/СтрочкаШаблон:Rq/Строчка |
В данной статье будет описан алгоритм модификации 3D программы для того чтоб она могла сформировать стереопару.
Обычно для перспективной проекции в программах используется следующая левостороняя матрица
<math> \begin{bmatrix} 2*zNear/w & 0 & 0 & 0 \\ 0 & 2*zNear/h & 0 & 0 \\ 0 & 0 & {zFar \over zFar-zNear} & 1 \\ 0 & 0 & -{zNear*zFar \over zFar-Near} & 0 \end{bmatrix} </math>
для формирования корректной Off-axis стереопары необходимо модифицировать матрицу таким образом
<math> \begin{bmatrix} 2*zNear/w & 0 & 0 & 0 \\ 0 & 2*zNear/h & 0 & 0 \\ \mathbf{eye*sep} & 0 & {zFar \over zFar-zNear} & 1 \\ 0 & 0 & -{zNear*zFar \over zFar-Near} & 0 \end{bmatrix} \times \; \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ \mathbf{-eye*sep*dist} & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} </math>
Здесь переменные означают:
- eye - означает для какого глаза формируется изображение (-1 - левый, +1 - правый)
- sep - разделение экрана, должна быть примерно равна половине расстояния между глазами, значение должно быть в диапазоне от 0 до ZNear/dist
- dist - Z координата плоскости нулевого паралакса (по умолчанию равно ZNear), значение должно быть в диапазоне от -ZNear/sep до ZNear/sep
Ссылки 
- [1] - Calculating Stereo Pairs
- [2] - stereo geometry in OpenGL
- [3] - NVIDIA GPU Programming Guide
- [4] - NVIDIA Stereo API
- [5] - StereoGraphics Developer Tools