Top Banner
3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University
19

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

Dec 19, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

3D Game ProgrammingLab8- 3D Display

Ming-Te ChiDepartment of Computer Science 

National Chengchi University

Page 2: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

Outline

3D Viewer Categories3D Display Device Overview3D Display Device SettingSimple 3D Project – RedBlue– GLdirect– Quad Buffer

Page 3: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

3D Viewer Categories

3D displaytechnology

with glasses

*Polarized glasses

*Shutter glasses

*Anaglyphglasses

HMD

withoutglasses

Wiggle stereoscopy

Parallax barrier

Lenticular lens

Page 4: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

Complementary Color Anaglyphs

Color filteringViewed with glasses and two lenses

are different (chromatically opposite) colors, i.e: red & cyan.  

• left eye-pure red• right eye-pure blue

Page 5: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

3D Display Device Overview

3D Monitor Device– 3D Monitor from iZ3D– SAMSUNG SyncMaster 2233RZ– Acer GD245HQ

3D Glasses– NVIDIA 3D Vision glasses– Polarizing glasses

3D Camera– Fujifilm FinePix REAL 3D

Page 6: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

3D CameraFUJIFILM FinePix REAL 3D W1High-precision Lens Alignment Technology

for High-quality 3D Image Capture

Picture taken from 3D Camera

2 Lenses & CCDs

3D LCD Monitor System

Page 7: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

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

Real Picture taken from Camera

Page 8: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

NVIDIA 3D Vision Glasses

Driver:– nVidia Graphics Card – GEFORCE 3D vision glasses

3D Glasses with Receiver

Page 9: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

Shutter Glasses

Technology Monitor:120Hz refresh rate

Glasses:120Hz synchronized with

monitor

Real Picture taken from Camera

Page 10: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

System OverviewSystem Requirement – 120Hz Refresh Rate– nVidia Graphics Card– OS: Windows Vista / 7

Input– 3D video camera– OpenGL Programming

Output– 3D Vision Photo Viewer– NVIDIAStereoPlayer 

or

OpenGLProgramming

Page 11: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

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); }

Page 12: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

void glColorMask(GLboolean  red, GLboolean  green, GLboolean  blue, GLboolean

 alpha);– 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.

Page 13: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

Key Functionswitch(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

}

Page 14: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

RedBlue Programming KeyPointvoid 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

Page 15: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

Simple 3D Project-GLdirect

OpenGL & DirectX– 目前 3D Vision 必須使用 DirectX 並以全螢幕啟動,故範

例必須以 FullScreen 呈現為基礎

Approach– 將 d3dx9_35.dll 及 opengl32.dll copy 至程式所在資

料夾– 目的 : 將 OpenGL(base)->DirectX 以呈現 3D effect– 再按下快捷鍵 啟動 / 取消 3D Vision

OpenGL ->DirectX ( GLDirect ) 3D 2D

Page 16: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

OpenGL Quad buffer

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

Page 17: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

利用 glDrawBuffer(GLenum mode); 來指定

glDrawBuffer(GLenum mode);– specify which color buffers are to be drawn

intomodeSpecifies up to four color buffers to be drawn

intoGL_BACK, GL_LEFT,…etc.

Page 18: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

Simple 3D Project-Quad Buffer

In main()glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH |

GLUT_DOUBLE | GLUT_STEREO);

另可透過以下函式查詢是否具備 quad bufferGLboolean bStereo;glGetBooleanv(GL_STEREO, &bStereo);

Page 19: 3D Game Programming Lab8- 3D Display Ming-Te Chi Department of Computer Science National Chengchi University.

Simple 3D Project-Quad Buffer

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();}

Assign particular frame buffer parameter

Adjust the left/right eye position