1 / 31

OpenGL 세미나 redbook 4, 5 장

OpenGL 세미나 redbook 4, 5 장 . 김우림. 4 장 Color. Color Perception Computer Color RGBA vs Color-Index Shading Model. Blue. Red. M. Green. Y. C. Color Perception. 실제 눈에는 3 종류의 cone RGB 각각에 민감한 cone Cone 혼합해서 색 인식 컴퓨터 사람 눈 흉내 RGB 조합으로 색 저장 , 표현. Computer Color (1/2).

hestia
Download Presentation

OpenGL 세미나 redbook 4, 5 장

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenGL 세미나redbook 4, 5장 김우림 kucg.korea.ac.kr

  2. 4장 Color • Color Perception • Computer Color • RGBA vs Color-Index • Shading Model kucg.korea.ac.kr

  3. Blue Red M Green Y C Color Perception • 실제 • 눈에는 3 종류의 cone • RGB 각각에 민감한 cone • Cone 혼합해서 색 인식 • 컴퓨터 • 사람 눈 흉내 • RGB 조합으로 색 저장, 표현 kucg.korea.ac.kr

  4. Computer Color (1/2) • Pixel 마다 color data 저장 • System 마다 다르다 • Pixel 당 8bit -> 256 색 • Pixel 당 24bit -> 2^24 색 • Color Buffer에 저장 • Bitplane : 특정 색에 할당한 bit 수 • glGetIntegerv(GL_RED_BITS) kucg.korea.ac.kr

  5. Computer Color (2/2) • RGB 모드 • rgb 각각 0.0~1.0 • {0.0, 0.0, 0.0} -> 검정색 • pixel은 r,g,b 각각의 값 가짐 • RGBA 모드 • RGB 모드 + alpha • Alpha : 투명도 • pixel은 r,g,b,a 각각의 값 가짐 • Color-index 모드 • Color table 사용 • pixel은 index를 가짐 kucg.korea.ac.kr

  6. RGBA vs Color-Index (1/5) • RGBA Display Mode • R,G,B,A 마다 다른 bitplane • float 형태 • Alpha 값은 색깔에 직접 영향 X kucg.korea.ac.kr

  7. RGBA vs Color-Index (3/5) • OpenGL 색 지정 함수 • Byte, short, int, float, double glColor3{b s i f d ub us ui} (GLfloatr, GLfloatg, GLfloatb); glColor4f (GLfloatr, GLfloatg, GLfloatb, GLfloata); glColor3fv (Glfloat* array); glColor4fv (Glfloat* array); kucg.korea.ac.kr

  8. RGBA vs Color-Index (2/5) • Color-Index mode • Color map • 미리 table 생성 • Pixel은 color map의 index 가짐 • 같은 index를 가진 pixel -> 같은 색 kucg.korea.ac.kr

  9. RGBA vs Color-Index (4/5) • OpenGL 색 지정 함수 • glIndex3f (GLfloat color); • Color index 설정 • glClearIndex (Glfloat cindex); • Clear 색 지정. RBG : glClearColor (r,g,b,a); • glClear () 시 사용 kucg.korea.ac.kr

  10. RGBA vs Color-Index (5/5) • RGBA mode 쓰자!! • OpenGL 기능들 충분히 이용 위해 • Shading, lighting, texture mapping, fog • 특별한 목적 시 color-index kucg.korea.ac.kr

  11. Shading Model • OpenGL 기본 shading • Flat shading – 단일 vertex • Smooth shading – vertex들의 평균 • Shading 지정 함수 • glShadeModel (GLenum mode); • mode = GL_SMOOTH, GL_FLAT v0 (1,0,0) v2 (0,0,0) v1 (0,1,0) kucg.korea.ac.kr

  12. 5장 Light • 실제 vs OpenGL • Lighting 종류 • Light source • Light 위치, 방향 • Lighting Model • Material • Mathematics of Lighting kucg.korea.ac.kr

  13. 실제 vs OpenGL • 실제 • 매우 복잡. 표면의 반사, 흡수. • 표면이 광원 역할. 다양한 재질. • OpenGL • Light source : RGB 로 구성 • Light source 여러 개. On/off 가능 • Suface의 Material과의 상호작용 • OpenGL 기본 lighting model • 속도 중시. 단순하다. • 사실적 표현 -> 직접 구현 필요. kucg.korea.ac.kr

  14. Lighting 종류 Ambient • 한 방향서 오는 light • 주변광. 모든 pixel에 동일하게 영향 • Diffuse • 한 방향서 오는 light • 모든 방향으로 반사 • 표면 접선 영향 • l x n • Specular • 반짝임. 관측자 eye 영향 • s x n • Emissive • Material이 스스로 빛을 낼 경우 kucg.korea.ac.kr

  15. Light source (1/6) • glEnable (GL_LIGHTING) • glDisable (GL_LIGHTING) • glEnable (GL_LIGHT0) • glLight{if} (light, pname, param); • Light : GL_LIGHT0, GL_LIGHT1 … GL_LIGHT7 kucg.korea.ac.kr

  16. Light source (2/6) • pname kucg.korea.ac.kr

  17. Light source (3/6) • param • 지정할 값. 일반적으로 Glfloat 배열. • GLLight() 예제 GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); glLightfv(GL_LIGHT0, GL_POSITION, light_position); kucg.korea.ac.kr

  18. Light source (4/6) • Directional Light • 광원이 무한한 곳에 위치. (태양) • 방향만 고려. 위치 고려 X. GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; glLightfv(GL_LIGHT0, GL_POSITION, light_position); kucg.korea.ac.kr

  19. Light source (5/6) • Positional Light • 점 광원. (전구) • 광원 중심으로 모든 방향에 영향. GLfloat light_position[] = { 0.0, 0.0, 1.0, 1.0 }; glLightfv(GL_LIGHT0, GL_POSITION, light_position); kucg.korea.ac.kr

  20. Light source (6/6) • Spot Light • 원뿔 모양의 빛. • 특정 방향으로 영향. GLfloat direction[] = { -1.0, -1.0, 0.0 }; glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, direction); glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 45.0); kucg.korea.ac.kr

  21. Light 위치, 방향 (1/3) • OpenGL Light : 물체로 취급 • Modelview 행렬에 영향 받음 • 고정된 Light • Viewport, projection 행렬 설정 • Modelview 행렬 초기화 • light 위치 지정 kucg.korea.ac.kr

  22. Light 위치, 방향 (2/3) • Object에 상대적 Light • Object의 변환 행렬 후 Light 위치 지정 • glPushMatrix();         • glTranslatef(0.0, 0.0, -5.0);          •    glRotated((GLdouble) spin, 1.0, 0.0, 0.0);             • glLightfv(GL_LIGHT0, GL_POSITION, light_position); • glutSolidCube(1.0);        • glPopMatrix(); kucg.korea.ac.kr

  23. Light 위치, 방향 (3/3) • Viewport 따라다니는 Light • Viewport 변환 시에 Light 위치 지정 • Glfloat posiion[] = { 0.0, 0.0, 0.0, 1.0 }; • glMatrixMode(GL_MODELVIEW); • glLoadIdenty(); • gluLookAt (); • glLightfv (GL_LIGHT0, GL_POSITION, posiion); kucg.korea.ac.kr

  24. Lighting Model • Global ambient light intensity • 기본값 : (0.2, 0.2, 0.2, 1.0) • Viewposition 위치 • Specular 관련. • 0.0, GL_FALSE • Light 연산 적용 범위 (front, back) • 0.0, GL_FALSE • 연산 with Texture • 원래는 A, D, S 연산 후 texture • texture 연산 후에 Specular 적용 • GL_SEPARATE_SPECULAR_COLOR, GL_SINGLE_COLOR kucg.korea.ac.kr

  25. Material (1/3) • 4가지 설정. (light과 동일) • ambient, diffuse, specular, emissive • 설정 -> RGB • glEnable (GL_MATERIAL); kucg.korea.ac.kr

  26. Material (2/3) • glMaterial{if} (face, pname, param); • face :GL_FRONT, GL_BACK, GL_FRONT_AND_BACK • pname kucg.korea.ac.kr

  27. Material (3/3) • 예제 • 재질의 ambient, diffuse -> Red • 물체의 앞, 뒷면 모두에 영향 • GLfloat color[] = { 1.0, 0.0, 0.0, 1.0 }; • glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); kucg.korea.ac.kr

  28. Mathematics of Lighting (1/4) • Vertex color = material emission + global ambient light * material’s ambient + total light source • light source 영향 attenuation factor * spotlight effect * (ambient term + diffuse term + specular term) kucg.korea.ac.kr

  29. Mathematics of Lighting (2/4) • Attenuation factor • Spotlight Effect • 0 : Spotlight 아닐 경우 • 1 : Spotlight 이고, cone 바깥에 vertex • (max{v·d,0}) ^ GL_SPOT_EXPONENT • v : spotlight -> vertex • d : spotlight 방향 kucg.korea.ac.kr

  30. Mathematics of Lighting (3/4) • Ambient term • Light’s A * Material’s A • Diffuse Term • (max{L·n, 0}) * Light’s D * Material’s D • Specular Term • (max{s·n, 0}) * Light’s S * Material’s S kucg.korea.ac.kr

  31. Mathematics of Lighting (4/4) • 다 합하면, Vertex color = emission material + ambientlight model * MA + [ LA *MA + (max { 1 x n , 0 } ) * LD * MD + (max {s x n ,0} )shininess * LS * MS ] kucg.korea.ac.kr

More Related