OpenGL 세미나 10장. 조명과 음영
IVIS 이영록
조명과 음영
• 렌더링 - 모델링된 물체 영상을 그려내는 것
• 와이어 프레임 렌더링
• 하드웨어적으로 처리속도가 빠르고 물체의 겉모습을 개략적 으로 파악하는 데는 별문제 없슴
• 솔리드 렌더링
• 조명이나 시점 등 물체를 둘러싼 복잡한 환경을 어떻게 모델 링할것인가가 관건
• 조명과 음영을 합쳐서 렌더링이라 부름
조명과 음영
• 모델링된 원구를 조명이 없는 상태에서 뿌리면 (a)와 같다.
• 3차원의 원구의 모습을 보이려면 (b)처럼 조명에 의해 물체 자체의 색을 드러내고 아울러 입체감을 주어야 한다.
조명모델
• 전역 조명 모델
• 물체면의 색은 다른 물체에서 반사되어 입사되는 빛까지 고려하여 결정
• 사실적으로 표현 가능
• 여러 물체에서 여러 번에 걸쳐 물체면에 반사된 빛까지 추적하는데는 수많 은 계산이 필요
• 컴퓨터 그래픽스로 표현하기 어려움
조명모델
• 지역 조명 모델
• 물체면의 색은 광원으로 부터 물체에 직접 부딪쳐 우리 눈에 들 어오는 빛만 고려
• 전역 조명 모델만큼 사실적 묘사를 하기는 어려움
• 상대적으로 처리속도 빠름
• OpenGL은 지역 조명 모델을 사용
광원과 물체 색
• 면적광원
• 표면위의 모든 점을 광원으로 보고 조명 계산
• 계산량면에서 불가능
• 점광원
• 빛이 한점에서 나온다고 간주
• 광원의 크기나 면적이 없고, 단지 위치만 정의
• (a)처럼 광원의 크기가 상대적으로 매우 크다면 (b)처럼 여러개의 점광원으로 근사화
광원과 물체 색
• 위치성 광원 (옴니라이트)
• 광원으로부터 나가는 빛이 모든 방향으로 방사형으로 퍼져가는 광원
• 광원의 위치가 중요
• 주로물체로 부터 가까운 곳에 위치한 광원을 근사화시키는데 사 용
광원과 물체 색
• 방향성 광원(지향성 광원)
• 광원으로부터 나가는 빛이 일정한 방향으로 진행하는 광원
• 광원의 방향이 중요
• 상대적으로 먼 거리에 있는 광원을 근사화시키기 위해 사용
광원과 물체 색
• 스포트라이트
• 빛이 한 방향으로 비침
• 유한 거리에 존재
• 빛이 방사형으로 진행하나 일정한 각 범위내로만 제한
지역 조명 모델
물체의 색
• 물체의 색은 광원에서 나온 빛이 물체면과 상호 작용한 결과가 반사 되어 우리 눈에 와 닿는 세기 또는 밝기에 의해 결정
• 물체면의 색은 성분별로 반사된 R.G.B 각각의 세기를 모두 더하여 결정
조명관련 벡터
• 광원 벡터 L과 법선벡터 N이 단위벡터라면 입사각 θ의 코사인을 두 벡터의 내적으로 표현할 수있다.
조명모델
• 조명모델
• 광원, 물체면, 시점 등을 기준으로 어떤 빛의 성분들이 어느 정도 세기로 우리 눈에 도달할 것인지에 대한 방법론
• 조명 모델을 달리함으로써 최종적인 물체의 모습이 달라짐
• 일반적으로 주변광, 확산광, 경면광에 의한 모델링이 많이 사용 됨
주변반사(Ambient Reflection)
• 광원에 직접 노출되지 않는 면에 밝기를 부여하기 위함
• B면은 광원에 노출되지 않으므로 표면에서 반사되는 빛이 없음
• 실제로는 반사광이 물체면에 입사함
• 주변의 반사광을 모두 추적하는 것은 매우 어려움
• 모든 물체면에 대해 상수크기로 밝기를 증가시킴(상수크기는 광원의 밝기에 정비례)
주변반사(Ambient Reflection)
• 빛의 세기는 D의 제곱에 반비례한다.
• Ia는 물체면에 입사되는 입사광의 세기:광원의 세기에 비례
• Ka는 주변광계수라 부리는 비례상수:이값을 변화시켜 주변 광의 세기를 조정
주변반사(Ambient Reflection)
• (a)는 주변광만 적용한 모습
• 주변광 계수를 증가시키면 모든 물체면의 밝기가 증가(입체감이 없슴)
• (b)다른 반사광과 함께 주변광을 적용한 모습
• 다른 반사광으로 원구의 물체면이 서로 다른 밝기를 지닌상태 에서 주변광계수 만큼 동일한 크기만큼 증가
(a)주변광 계수 증가 (b)여타 반사광 + 주변광 계수 증가
확산반사(Diffuse Reflection)
• 완벽확산체(난반사)
• 반사되는 빛이 거의 모든 방향을 향함
• 방향성 확산체
• 거의 일정한 방향을 향함
• 대부분의 물체면은 두가지 극단적인 경우 사이에 존재
완벽 확산체 방향성 확산체
확산반사(Diffuse Reflection)
• 면의 밝기는 광원 벡터와 법선 벡터가 이루는 각이 θ일때 cosθ에 비례
• Id 물체면에 입사되는 입사광의 세기:광원의 세기에 비례
• Kd는 확산계수라 불리는 비례상수(상수값을 변화시켜 확상광 조절 가능)
확산반사(Diffuse Reflection)
우상단 우측중앙 정중앙
• 광원과 면이 이루는 입사각에 따라 밝기가 다름
경면반사(Specular Reflection)
• 반질반질한 표면에 반사되는 빛을 경면광(거울면)
• 경면광에 의한 물체면의 색은 물체 자체의 색이 아님
• 경면광은 물체면이 반질반질하기 때문에 상호 작용 없이 광원에서 나오 는 빛의 색이 바로 반사
확산 확산+경면
경면반사(Specular Reflection)
경면반사 경면광의 분포
• 경면반사는 정반사(입사각과 반사각이 일치)
• 경면광의 세기(로우브)는 반사광 R을 중심으로 분포
• 경면광의 크기는 R 벡터와 V 벡터가 이루는 각의 크기에 반비례
경면반사(Specular Reflection)
• 퐁 반사 모델
• 로우브를 코사인 함수로 모델링
• 경면반사의 양을 cosθ로 간주(θ가 0일때 최대값 1, θ가 90일때 0)
• cosθ의 승수를 광택계수라고 함(cosθ의 값은 0~1이라 누승할 수록 0에 근접)
• 매끄러운 물체일수록 광택 계수를 크게 함으로써 물체 하이라이트가 아주 좁게 관찰되게 함
코사인 법칙 광택 계수 증가에 따른 효과
경면반사(Specular Reflection)
• Ks는 경면계수
• Is는 광원의 경면광 세기
약화함수
• 빛의 세기는 거리의 제곱에 반비례
• 프로그램에서 실제 적용시 급격히 약해짐
• OpenGL에서는 위의 약화함수를 이용해서 빛의 세기를 조정
a=0, b=0, c= 1
a=.25, b=.25, c= .5 a=0, b=1, c= 0
물체면의 밝기
• 물체면의 밝기는 주변반사, 확산반사, 경면반사에 의한 반사광을 더해 결정됨
OpenGL에서의 밝기
• 지역 조명 모델을 적용하기 위해서 광원 특성에 관한 계수와 물체특성에 관한 계수로 나 뉘어짐
• Ia, Id, Is등 광원 특성에 대한 계수는 주변광, 확산광, 경면광별로 광원의 세기를 나타냄
• R, G, B별로 세분화되어 IaR, IaG, IaB로 표시
• Ka, Kd, Ks등 물체 특성에 대한 계수는 주변광, 확산광, 경면광별로 반사계수를 나타냄
• R, G, B별로 세분화되어 KaR, KaG, KaB로 표시
지역조명모델 알고리즘
For Each Object of the Scene { 모든 물체에 대해 For Each Polygon Mesh of the Object { 모든 다각형에 대해 Calculate N, L, V, R, D; 벡터 및 거리 계산 For Each Light Source { 모든 광원에 대해 For Ambient Reflection 주변반사에 대해 Calculate R, G, B Reflection Separately; 색별로 계산 For Diffuse Reflection 확산반사에 대해 Calculate R, G, B Reflection Separately; 색별로 계산 For Specular Reflection 경면반사에 대해 Calculate R, G, B Reflection Separately; 색별로 계산 Add R, G, B Colors Separately; 주변광, 확산광, 경면광을 합산 }
Add R, G, B Colors Separately; 모든 광원의 영향을 합산 }
}
음영
• 계산된 정점의 색상으로 부터 다각형 내부의 색을 칠하는 작업
플랫 셰이딩
• 주어진 하나의 다각형 전체를 동일한 색으로 칠함
• 빠르고 간단한 방법
• 경계선이 필요이상으로 뚜렷하게 보임(마하 밴드 효과, 일종의 착시)
구로 셰이딩
• 다각형 내부를 서로 다른 색으로 채움
• 정점의 법선 벡터는 인접면의 법선벡터의 평균을 구함
• 정점의 법선백터를 기준으로 조명모델에 의해 정점의 색을 구함(경면광은 제외)
• 구로 셰이딩은 하나의 다각형 내에서도 음영을 달리함(선형보간, 레스터 변환 시 이루어짐)
플랫 셰이딩 구로 셰이딩
구로 셰이딩
구로 셰이딩의 오류
• 정점의 둘러싼 양면에서 법선 벡터가 서로대칭
• 6개의 정점 벡터가 모두 동일
• 여전히 마하 밴드 현상이 나타남
퐁 셰이딩
• 정점의 색대신 법선 벡터를 보간
• 곡면을 복원(C`의 법선벡터가 C의 법선벡터와 동일)
법선벡터 보간 곡면의 복원
셰이딩 비교
플랫 셰이딩 구로 셰이딩 퐁 셰이딩
구로 셰이딩 퐁 셰이딩