Поиск
На сайте: 763827 статей, 327745 фото.

Формирование стереопары



В данной статье будет описан алгоритм модификации 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



Первоначальная версия этой статьи была взята из русской Википедии на условиях лицензии GNU FDL.