Upload
tirzah
View
126
Download
1
Embed Size (px)
DESCRIPTION
실습 내용 (5 월 11 일 ). 실습 내용 그래픽스 실습 D.6 조명 설정하기 D.7 재질 설정하기 OpenGL 의 조명과 음영 주 우석저 10 장 2 개의 광원 광원 애니메이션 숙제 없음. 조명과 음영을 위한 6 가지 작업. 조명 기능 활성화 (Enabling Lighting) glEnable(GL_LIGHTING), glDisable(GL_LIGHTING) 광원의 정의 (Light source) glLightfv 음영 모드의 정의 (Shading Mode) - PowerPoint PPT Presentation
Citation preview
실습 내용 (5 월 11 일 )
실습 내용 그래픽스 실습
D.6 조명 설정하기 D.7 재질 설정하기
OpenGL 의 조명과 음영 주 우석저 10 장 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
광원의 정의
광원의 활성화– 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)
거리에 따른 빛의 약화 광원의 위치 제어
광원의 정의
거리에 따른 빛의 약화 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, … ) 고정 위치 광원 움직이는 광원 시점을 따라가는 광원
물체면 특성 ( 재질 ) 의 정의
물체의 특성– 물체의 색 : 주변 반사 , 난반사 , 정반사– 매끄러움 : 광택 계수– 특성 정의
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)
조명 모델 정의
전역 주변광– 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);
D.6 조명 설정하기
D4. PerspectiveSolar 프로젝트로 시작한다 . 태양계 애니메이션에 광원을 추가한다 . 전체 조명 ( 주변광 )
– OpenGL 프로그램에 전체 조명을 추가하려면 먼저 조명의 사용을 알려야 한다 .
glEnable(GL_LIGHTING); – 다음으로 해야 할 일은 조명 효과 모델을 설정하는 것이다 .
glLightModelfv(GLenum pname, const GLfloat *params); pname 에는 보통 GL_LIGHT_MODEL_AMBIENT 를 사용한다 . params 에는 주변광의 색과 밝기 값을 저장한 float array 를
대입한다 .
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에서는 조명도 변환 행렬의 영향을 받으므로 하나의 기하학적 객체로 다루는 것이 타당하다.
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_AN
D_DIFFUSE 중에서 선택한다 .
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);
Mode 값의 종류
Material Parameter(Material)
Light Source Parameters(LIGHT)
Lighting Model Parameters(LightModel)
AMBIENT AMBIENT LIGHT_MODEL_AMBIENT
DIFFUSE DIFFUSE LIGHT_MODEL_LOCAL_VIEWER
AMBIENT_AND_DIFFUSE
SPECULAR LIGHT_MODEL_TWO_SIDE
SPECULAR POSITION LIGHT_MODEL_COLOR_CONTROL
EMISSION SPOT_DIRECTION
SHININESS SPOT_EXPONENT
COLOR_INDEXES SPOT_CUTOFF
CONSTANT_ATTENUATION
LINEAR_ATTENUATION
QUADRATIC_ATTENUATION