2011-02-15 54 views
2

我試圖使用並排側技術來實現在OpenGL立體3D。適應現有的OpenGL立體渲染代碼?

我讀過this article這很詳細解釋瞭如何設置攝像機的左和右視圖。它使用相機模型並使用gluLookAt設置左側和右側視圖。

但是在我的情況下,我想改編現有的代碼,已經設置了投影

請看下面的例子,其中「existingcode」代表的代碼,我不能更改。

//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並以某種方式修改它?

+0

請問您現有的代碼清晰投影矩陣(使用glLoadIdentify)?或者它是否與堆棧頂部組成投影矩陣? – rotoglup 2011-02-15 21:02:27

+0

現有的代碼使用glLoadIdentity重置堆棧,但我可能會阻止它執行此操作。爲什麼,你有想法嗎? – 2011-02-15 21:22:00

回答

3

你已經做的是使用一些鏡頭shiftig。

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

這種投影變換的技術,這正是我所採用的再渲染大象之夢立體3D,雖然,由於攪拌機離線渲染器不使用OpenGL代碼看起來不同的一點http://www.youtube.com/watch?v=L-tmaMR1p3w