1 / 11

실습 내용 (5 월 11 일 )

실습 내용 (5 월 11 일 ). 실습 내용 그래픽스 실습 D.6 조명 설정하기 D.7 재질 설정하기 OpenGL 의 조명과 음영 주 우석저 10 장 2 개의 광원 광원 애니메이션 숙제 없음. 조명과 음영을 위한 6 가지 작업. 조명 기능 활성화 (Enabling Lighting) glEnable(GL_LIGHTING), glDisable(GL_LIGHTING) 광원의 정의 (Light source) glLightfv 음영 모드의 정의 (Shading Mode)

tirzah
Download Presentation

실습 내용 (5 월 11 일 )

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. 실습 내용 (5월 11일) • 실습 내용 • 그래픽스 실습 • D.6 조명 설정하기 • D.7 재질 설정하기 • OpenGL 의 조명과 음영 • 주 우석저 10장 • 2개의 광원 • 광원 애니메이션 • 숙제 • 없음.

  2. 조명과 음영을 위한 6가지 작업 • 조명 기능 활성화 (Enabling Lighting) • glEnable(GL_LIGHTING), glDisable(GL_LIGHTING) • 광원의 정의 (Light source) • glLightfv • 음영 모드의 정의 (Shading Mode) • glShadeModel(Gl_FLAT), glShadeModel(GL_SMOOTH) • 법선벡터 정의(Surface Normal) • glNormal3f(0.0, 1.0, 0.0), glEnable(GL_NORMALIZE) • 물체면 특성(재질)의 정의(Surface material) • glMaterialv • 조명 모델의 정의(Lighting Model) • glLightModelfv

  3. 광원의 정의 • 광원의 활성화 • glEnable(GL_LIGHT0), • GL_LIGHT0 에서 GL_LIGHT7 까지 총 8개 • 광원의 종류 • 위치성 광원 (w 값이 0 이 아닌 경우) • glLightfv(GL_LIGHT0, GL_POSITION, MyLightPosition) • 방향성 광원 (Spotlight) • glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, MyDirection) • glLightfv(GL_LIGHT0, GL_SPOT_CUTOFF, MySpotAngle) • glLightfv(GL_LIGHT0, GL_SPOT_EXPONENT, 2.0) • 광원의 색 • glLightv(GL_LIGHT0, GL_AMBIENT, MyLightAmbient) • glLightv(GL_LIGHT0, GL_DIFFUSE, MyLightDiffuse) • glLightv(GL_LIGHT0, GL_SPECULAR, MyLightSpecular) • 거리에 따른 빛의 약화 • 광원의 위치 제어

  4. 광원의 정의 • 거리에 따른 빛의 약화 • glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.0) • glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 2.0) • glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 3.0) • 광원의 위치 제어 • glLightfv ( … , GL_POSITION, … ) • 고정 위치 광원 • 움직이는 광원 • 시점을 따라가는 광원

  5. 물체면 특성(재질)의 정의 • 물체의 특성 • 물체의 색 : 주변 반사, 난반사, 정반사 • 매끄러움 : 광택 계수 • 특성 정의 • glMaterialv(GL_FRONT, GL_AMBIENT, MyMaterialAmbient); • glMaterialv(GL_FRONT, GL_DIFFUSE, MyMaterialDiffuse); • glMaterialv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, MyMaterialDiffuse); • glMaterialv(GL_FRONT, GL_SPECULAR, MyMaterialSpecular); • glMaterialv(GL_FRONT, GL_SHINENESS, MyShineness); • 발광체 • 스스로 빛을 내지만 광원으로는 작용하지 않음. • glMaterialv(GL_FRONT, GL_EMISSION, Emission)

  6. 조명 모델 정의 • 전역 주변광 • glLightModelfv(GL_LIGHT_MODEL_AMBIENT, MyGlobalAmbient); • 시점 위치 • glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); // 시점의 위치가 물체에 가까운 경우 • glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE); // 시점의 위치가 물체에 먼 경우 • 양면 조명 • glLightModelfv(GL_LIGHT_MODEL_TWO_SIDED, GL_TRUE); // 양면 모두에 광원이 적용된다. • glLightModelfv(GL_LIGHT_MODEL_TWO_SIDED, GL_FALSE);

  7. D.6 조명 설정하기 • D4. PerspectiveSolar 프로젝트로 시작한다. • 태양계 애니메이션에 광원을 추가한다. • 전체 조명(주변광) • OpenGL 프로그램에 전체 조명을 추가하려면 먼저 조명의 사용을 알려야 한다. • glEnable(GL_LIGHTING); • 다음으로 해야 할 일은 조명 효과 모델을 설정하는 것이다. • glLightModelfv(GLenum pname, const GLfloat *params); • pname에는 보통 GL_LIGHT_MODEL_AMBIENT를 사용한다. • params에는 주변광의 색과 밝기 값을 저장한 float array를 대입한다.

  8. D.6 조명 설정하기 • 특정 광원을 설정하기 위해서는 다음과 같은 과정을 거친다. • 광원의 주변광과 난반사광 값을 정하고, 이 값을 광원에 설정한다. • SetupRC()에서 설정하면 된다. • GLfloat ambientLight[] = {0.3f, 0.3f, 0.3f, 1.0f};GLfloat diffuseLight[] = {0.7f, 0.7f, 0.7f, 1.0f};glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight); • 광원을 활성화한다. 역시 SetupRC()에서 설정한다. • glEnable(GL_LIGHT0); • OnSize()에서 광원의 위치를 설정한다. • GLfloat lightPos[] = { -50.0f, 50.0f, 100.0f, 1.0f };glLightfv(GL_LIGHT0, GL_POSITION, lightPos); • OpenGL에서는 조명도 변환 행렬의 영향을 받으므로 하나의 기하학적 객체로 다루는 것이 타당하다.

  9. D.7 재질 설정하기 • 객체의 재질 • 재질의 정의에 따라 빛이 객체에 반사될 때 객체 표면에 어떤 효과가 나타나는 지가 달라진다. 먼저 설정하는 명령을 내린다. • glEnable(GL_COLOR_MATERIAL); • OpenGL에서는 5가지의 재질 성분을 가지고 물체의 재질을 표현. 현재 색상에 하나 이상의 재질 속성을 지정하는 것이 가능하다. • DIFFUSE Reflection ,  AMBIENT Reflection ,  SPECULAR Reflection ,  SHINENESS ,  EMISSION • 어떤 모드를 설정할 것인지는 다음의 함수를 사용하여 선택할 수 있다. 사용자가 색상 값만 입력하면 알아서 해당 조명에 대한 재질의 속성을 계산해준다. • glColorMaterial(enum face, enum mode); • face는 현재 색이 영향을 주는 면으로 FRONT, BACK 또는 FRONT_AND_BACK를 지정할 수 있다. • mode는 AMBIENT, DIFFUSE, SPECULAR, SHINENESS, EMISSION, AMBIENT_AND_DIFFUSE중에서 선택한다.

  10. D.7 재질 설정하기 • OpenGL에서 조명 및 재질을 정의함수. • glMaterial{ifv}(enum face, enum mode, T param); • glLight{ifv}(enum face, enum mode, T param); • glLightModel{ifv}(enum face, enum mode, T param);

  11. Mode 값의 종류

More Related