전역 조명 : 모든 곳에서 빛이 존재한다. 다른 물체에서 반사되어서 나오는 빛을 일일히 계산하기 어려워 만든 빛이다. 아무리 구석으로 들어가도, 문을 닫아도 빛은 존재한다.
지역 조명 : 광원에서 직접적으로 입사되는 빛
광원
광원은 스스로 빛을 발하는 물체이다.
이 광원은 면적 광원과 점 광원으로 존재한다.
면적 광원 : 실제의 광원은 면적으로 존재한다(태양, 전구 등..)
점 광원 : 면적 단위의 광원에서 나오는 빛의 효과를 계산하기는 어렵다. 그래서, 그래픽스에서는 점으로 근사화하여 사용한다.
분산 점 광원 : 면적이 넓은 경우에는 여러 개의 점으로 근사화하여 사용한다.
광원의 종류
위치성 광원 : 광원을 중심으로 모든 방향으로 확산된다.
방향성 광원 : 빛이 물체면을 향하여 일정한 방향으로 진행한다.(원거리 광원)
스포트라이트 : 광원을 중심으로 한 방향으로 향하나, 일정 범위각을 벗어나지 않음(무대 조명 등)
조명관련 벡터
물체의 색 : RGB별로 빛의 세기를 별도 추적하여 계산하고, 최종적으로 합성한다. 망냑에 물체로 들어가는 빛은 백색광(꼭 아니어도 됨) 즉, 모든 색깔을 포함하고 있는 빛이다. 물체는 이 백색광 대부분을 흡수하고 파란색만 내보낸다면 청색광이 반사되고 우리 눈에 들어오게 된다.
벡터 : 광원벡터와 표면법선벡터의 각도(입사각)에 따라 반사광벡터의 방향이 결정된다. 그리고 사람이 실제로 그 물체를 관찰하고 있는 시점 벡터에 따라서, 빛이 매우 눈부실 수도 있고 음영이 보일 수도 있다.
주변광, 경면광, 확산광
Specular Reflection : 경면(거울) 반사(거울처럼 반사되는 빛이다. 이 경면광은 물체가 광을 그대로 흡수해버려서 물체의 색이 반사되지 않고 광의 색깔이 100% 반사되어 버린다.)
Diffuse Reflection : 확산 반사(경면광으로부터 주변광까지 서서히 확산되는 빛)
Ambient Reflection : 주변 반사(주변으로 부터 반사되어 들어오는 빛으로 높으면 높을 수록 빛이 비치지 않은 곳에서도 보이게됨)
물체에 부딪힌 빛이 반사되어 여러 방향으로 진행한다.
시선에 들어오는 반사광에 의해 물체 각 위치의 밝기가 달라진다.
주변반사(Ambient Reflection)
광원에 직접 노출되지 않은 면에 밝기를 부여하는 것
면마다 상수 크기의 밝기를 설정한다(마치, 전역 조명모델 효과와 유사하다)
- 주변광 계수 변화
주변광만 부여한 경우
주변광과 반사광을 함께 사용한 경우
확산 반사(Diffuse Reflection)
난반사의 일종이다.
빛의 확산 방향에 시점이 있는 경우 물체가 더욱 밝게 보여야 한다.
실제는 복잡한 물체 표면의 방향, 재질 등에 따라 확산 방향이 달라진다. 하지만, 이를 다 계산하기에는 무리이다..
따라서, 그래픽 처리시에는 완벽 확산체(모든 방향으로 확산됨)를 가정한다.
하지만, 확산광의 세기는 고려를 해주어야 한다. 세기는 물체면이 서있는 방향에 따라 달라진다.(각도에 따라 달리잔다.)
람베르트의 법칙 : 면의 밝기는 입사각의 코사인에 정비례하다.
- 확산광의 효과
면이 서있는 방향에 따라 차등적 밝기 부여
입체감을 부여한다.
- 광원의 색과 물체의 색
최종적으로 물체가 가지는 색상 = 빛의 색상 + 물체의 원 색상
경면 반사(Specular Reflection)
반질반질한 표면에서 광원의 색을 그대로 반사하는 빛
입사각과 반사각이 동일한 곳이다.
시점이 정확히 반사광과 일치할 때 보인다.(시점을 기준으로 반대방향에서 입사한 빛만 보인다.)
확산계수, 경면계수, 광택계수
거리에 따른 빛의 약화
약한 조명의 경우(촛불), 빛의 세기를 거리에 따라 다르게 조정하면 사실적인 효과가 가능하다(거리 제곱의 반비례 등..)
지역 조명 계산
모든 광원(빨간 빛, 파란빛 등등 여러개의 빛)에서 나오는 빛을 모두 합산한다.
RGB에 대해서 각각 적용한다
광원 특성과 물체특성의 값을 각각 곱하여 합산한다. 이렇게 반사되어 나오는 빛이 우리 눈에 보이게된다.
음영(Shading)
실제로 우리의 얼굴은 하나의 면으로 이루어져 있지만,
그래픽스 세계에서 우리의 얼굴은 여러 다각형(면)이 합쳐져서 만들어진다. 이 음영은 이 다양한 면에 색을 부여하는 것이다.
플랫 Shading(Flat Shading) : 하나의 다각형을 하나의 색으로 칠한다. 빠르고 간단하다(가장 기본적이다)
구로 Shading(Gouraud Shading) : 정점의 색을 보간하여 다각형 내부를 서로 다른 색으로 채운다. 경면광은 고려 안한다.
정점으로 보간하다보니까 아직 경계선들이 더 밝게 보이는 등의 문제가 생김
퐁 Shading(Phong Shading) : 정점의 법선벡터를 보간하여 다각형 내부를 여러 색으로 채움. 경면광을 부여할 수 있음
: 음영을 적절히 줌으로서 3차원 물체 모델의 정밀도가 낮아도 부드러운 렌더링이 가능하다.
미세면 모델링 : 블린, 쿡/토렌스 Shading 등...
거친 면들에 대해 음영을 처리하는 Shading, 거친 면에 따라 확산광을 적절히 조절한다.