3D Game Programming Lab8- 3D Display - PowerPoint PPT Presentation

3d game programming lab8 3d display n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
3D Game Programming Lab8- 3D Display PowerPoint Presentation
Download Presentation
3D Game Programming Lab8- 3D Display

play fullscreen
1 / 19
3D Game Programming Lab8- 3D Display
136 Views
Download Presentation
jemma
Download Presentation

3D Game Programming Lab8- 3D Display

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. 3D Game ProgrammingLab8- 3D Display Ming-Te Chi Department of Computer Science  National Chengchi University

  2. Outline • 3D Viewer Categories • 3DDisplay Device Overview • 3DDisplay Device Setting • Simple 3D Project • RedBlue • GLdirect • Quad Buffer

  3. 3D Viewer Categories

  4. Complementary Color Anaglyphs • Color filtering • Viewed with glasses and two lenses are different (chromatically opposite) colors, i.e: red & cyan.   • left eye-pure red • right eye-pure blue

  5. 3DDisplay Device Overview • 3D Monitor Device • 3D Monitor from iZ3D • SAMSUNG SyncMaster 2233RZ • Acer GD245HQ • 3D Glasses • NVIDIA3D Vision glasses • Polarizing glasses • 3D Camera • Fujifilm FinePix REAL 3D

  6. 3D Camera • FUJIFILM FinePix REAL 3D W1 • High-precision Lens Alignment Technology for High-quality 3D Image Capture 2 Lenses & CCDs 3D LCD Monitor System

  7. iZ3D Monitor with Polarizing glasses • Device Setting(2 lines ): • 1 front (DVI) ; 1 back (DVI) •  Monitor with the addition of a patterned polarizer /retarder layer. • -1 Layer display - 2 Layer display 2D 3D

  8. NVIDIA3D Vision Glasses • Driver: • nVidia Graphics Card • GEFORCE 3D vision glasses • 3D Glasses with Receiver

  9. Shutter Glasses Technology Monitor:120Hz refresh rate Glasses:120Hz synchronized with monitor

  10. System Overview System Requirement • 120Hz Refresh Rate • nVidia Graphics Card • OS:Windows Vista / 7 Input • 3D video camera • OpenGL Programming Output • 3D Vision Photo Viewer • NVIDIAStereoPlayer or OpenGL Programming

  11. Simple 3D Project- RedBlue 嘗試利用CodeBlock編譯此專案 if(i==0) /* left eye - RED */ { Eye = ps.eye; glColorMask(GL_TRUE,GL_FALSE,GL_FALSE,GL_TRUE); } else /* if(i==1) right eye - BLUE */ { Eye = -ps.eye; glColorMask(GL_FALSE,GL_FALSE,GL_TRUE,GL_TRUE); }

  12. void glColorMask (GLbooleanred, GLbooleangreen, GLbooleanblue, GLbooleanalpha); • Enable and disable writing of frame buffer color components red, green, blue, alpha • Specify whether red, green, blue, and alpha can or cannot be written into the frame buffer. • GL_TRUE, indicating that the color components can be written.

  13. Key Function switch(key) { case 's': ps.eye = 0.80; /* stereo */ case 'm': ps.eye = 0.0; /* mono */ } switch(ps.solidmode) { case 1: …// Dodecahedron case 2: …// Icosahedron case 3: …// Teapot case 4: …// Sun & Earth }

  14. RedBlue Programming KeyPoint void DisplayFunc(void) { if(i==0) /* left eye - RED */ { Eye = ps.eye; glColorMask(GL_TRUE,GL_FALSE,GL_FALSE,GL_TRUE); } else /* if(i==1) right eye - BLUE */ { Eye = -ps.eye; glColorMask(GL_FALSE,GL_FALSE,GL_TRUE,GL_TRUE); } glMatrixMode(GL_PROJECTION); … glMatrixMode(GL_MODELVIEW); … glTranslatef(Eye,0.0,0.0); glTranslated(0,0,-ps.zscreen); … } In the MODELVIEW need to adjust the position of Camera(eye) with object

  15. Simple 3D Project-GLdirect OpenGL & DirectX • 目前3DVision必須使用DirectX並以全螢幕啟動,故範例必須以FullScreen 呈現為基礎 Approach • 將d3dx9_35.dll 及 opengl32.dllcopy至程式所在資料夾 • 目的:將OpenGL(base)->DirectX 以呈現3Deffect • 再按下快捷鍵 啟動/取消 3D Vision OpenGL ->DirectX ( GLDirect ) 2D 3D

  16. OpenGL Quad buffer • OpenGL使用立體顯示時,需要硬體支援quad buffer,也就是在傳統double buffer上(前、後)再加上(左、右)

  17. 利用glDrawBuffer(GLenum mode);來指定 glDrawBuffer(GLenum mode); • specify which color buffers are to be drawn into mode Specifies up to four color buffers to be drawn into GL_BACK, GL_LEFT,…etc.

  18. Simple 3D Project-QuadBuffer • In main() glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE | GLUT_STEREO); • 另可透過以下函式查詢是否具備quad buffer GLbooleanbStereo; glGetBooleanv(GL_STEREO, &bStereo);

  19. Simple 3D Project-QuadBuffer Assign particular frame buffer parameter glDrawBuffer(GL_BACK); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glDrawBuffer(GL_BACK_LEFT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(- IOD/2,0.0,0.0,0.0,0.0, screenZ,0.0,1.0,0.0); glPushMatrix(); { glTranslated(0.0,0.0,depthZ); draw(); } glPopMatrix(); glDrawBuffer(GL_BACK_RIGHT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(IOD/2, 0.0, 0.0, 0.0, 0.0, screenZ,0.0, 1.0, 0.0); glPushMatrix(); { glTranslated(0.0,0.0,depthZ); draw(); } glPopMatrix(); rtri+=0.2f; rquad-=0.15f; glutSwapBuffers(); } Adjust the left/right eye position