Я пытаюсь изменить мой Монокуляр DirectX Engine в Стереоскопии Renderengine для Oculus Rift. То, что отсутствует, - это трансформация стереоскопического проекции для достижения 3D-восприятия.DirectX стереоскопического Преобразование проекции для 3D восприятия
В настоящем время, я использую до сих пор моей стандартной проекции монокуляра Матрицы:
1.50888 0 0 0
0 2.41421 0 0
0 0 1.0001 -0.10001
0 0 1 0
// Setup the projection matrix.
fieldOfView = (float)XM_PI/4.0f;
screenAspect = (float)screenWidth/(float)screenHeight;
// Create the [Monoscope]projection matrix for 3D rendering.
XMMATRIX projectionMatrix_XmMat = XMMatrixPerspectiveFovLH(fieldOfView, screenAspect, screenNear, screenDepth);
XMStoreFloat4x4(&projectionmatrix_, projectionMatrix_XmMat);
Я уже перевода левой камеры -0.032 для создания View Matrix, и моего правого глаза x_translated по 0.032 для создания Матрицы просмотра. Проблема заключается в Стерео-внецентровая проекционная матрица (которая, мне кажется, мне нужна). Поэтому я думаю, что мне нужно сделать это как-то: http://paulbourke.net/exhibition/vpac/theory2.gif пытался много различных вычислений, но я только что получил странные результаты, к сожалению ..
Уже исследовал много, некоторые люди здесь succeding делают этот http://www.gamedev.net/topic/597564-view-and-projection-matrices-for-vr-window-using-head-tracking/:
// Window Size 1200x800, 3:2
// XMFLOAT3 Position = camera_->GetPosition();
// [Method 1] ------------------------------------------------------------
//float left = screenNear_ * (-3.f - position.x)/position.z;
//float right = screenNear_ * (3.f - position.x)/position.z;
//float bottom = screenNear_ * (-2.f - position.y)/position.z;
//float top = screenNear_ * (2.f - position.y)/position.z;
//XMMATRIX stereomatrix = XMMatrixPerspectiveOffCenterLH(left, right, bottom, top, screenNear_, screenDepth_);
//XMStoreFloat4x4(&stereoprojectionmatrix_, stereomatrix);
Но Метод 1 вызывает странные случайные эффекты. Я перемещаю свою камеру обратно на Z-Axis, но визуально она может перейти в -z-axis для значений -3.f, все значения камеры < -3.f не имеют никакого визуального эффекта.
Кроме того, я также читал через эту бумагу: http://www.google.at/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCkQFjAB&url=http%3A%2F%2Fwww.marries.nl%2Fwp-content%2Fuploads%2F2011%2F05%2FApplying-stereoscopic-3D-in-games.pdf&ei=nAydVY6bBcL5UobagJgL&usg=AFQjCNEFhKttlYJYNbWF2-LptmcCi8bTZg&sig2=VOKBq9VE0k8nhHtA3gxN8g
, а также читать через NVIDIA презентации: http://www.google.at/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCIQFjAA&url=http%3A%2F%2Fwww.nvidia.com%2Fcontent%2FGTC-2010%2Fpdfs%2F2010_GTC2010.pdf&ei=xA2dVZe3KYr8UMT6g5gL&usg=AFQjCNGeanxCoryAZvmxC1BDmf2itOgG0w&sig2=Ss2kN5gCYeoLsgJ66-442A&bvm=bv.96952980,d.d24
Но я просто не могу понять, как мне нужно, чтобы изменить свою монокулярную матрицу проекции или как правильно настроить две матрицы внеосевой проекции.
Возможно, кто-то может мне помочь, я был бы очень рад этому!
Большое спасибо!