조명은 물체의 색을 결정하기 위한 중요한 요소이다. 물체의 색을 결정하기 위해서는 조명(광원) 외에도 물체가 가진 고유의 색이나 재질 등 다양한 요소들이 필요하고, 조명과 이 요소들의 상호작용을 통해 픽셀의 색을 결정할 수 있다. 컴퓨터 그래픽스에서 사용하는 기본적인 조명, 빛의 요소들은 다음과 같다.
1. Ambient Light(주변광, 환경광)
우리 눈이 어떤 물체를 인식한다는 것은, 물체의 표면에 반사된 빛이 우리 눈으로 들어오는 것을 의미한다. 이때 우리 눈으로 들어올 수 있는 빛은 물체가 직접 광원으로부터 빛을 받아 반사되는 빛과 주변의 물체에서 반사되어 나온 빛을 다시 반사하여 들어오는 빛으로 나누어볼 수 있다. Ambient Light는 이름처럼 주변의 물체로부터 반사되어 나오는 빛을 의미한다.
정확한 Ambient Light 계산을 하기 위해서는 물체로 들어오는 모든 빛을 추적해야 하겠지만, 컴퓨터 그래픽스에서는 효과적은 구현을 위해 일반적으로 상수로 취급한다. 그래서 Ambient는 물체가 가진 고유의 색으로 결정하는 경우가 흔하다.
2. Diffuse Light(난반사광)
Ambient Light가 주변 물체에서 반사되어 들어온 빛에 대한 성분이라면, Diffuse Light는 물체로 직접 들어온 빛이 반사되어 나온 성분이라고 할 수 있다. 물체로 빛이 들어오면 반사되는 유형에 따라 정반사, 난반사로 나눌 수 있는데, Diffuse Light는 그 중에서 난반사된 빛을 의미한다.
난반사는 어떤 물체에 입사된 빛이 일정한 방향으로 반사되는 것이 아니라 여러 방향으로 불규칙하게 반사되는 것을 의미한다. 따라서 난반사되는 빛은 물체의 표면 재질이 거칠수록 예측하기 힘들어진다. 현실적으로 이러한 불규칙적인 빛을 모두 추적하는 것은 어렵기 때문에 컴퓨터 그래픽스에서는 근사치 모델을 사용한다. 근사치 모델에서는 난반사되는 모든 빛은 모든 방향으로 균일한 영향(=빛의 세기)을 준다고 가정한다.
이를 바탕으로 Diffuse Light를 계산한다고 하면 우선 난반사된 빛은 모든 방향으로 영향을 주기 때문에 관찰자의 시점을 고려할 필요가 없어진다. 물체는 고유한 재질(matrial)을 가지고 있는데, 재질의 속성 중에서 diffuse 값은 난반사된 빛이 얼만큼의 영향을 주는지 결정하는 상수이다. 이 값을 기반으로 Diffuse Light를 계산할 수 있다.
어떤 물체로 빛이 들어오면 그 물체의 표면과 입사된 빛이 서로 수직인 상황이 빛의 세기가 가장 강한 상태라고 할 수 있다. 근사치 모델 중 하나인 램버트 모델에서는 이를 이용하여 빛이 입사되는 표면의 노멀 벡터 과 표면에서 광원으로 향하는 벡터 사이의 각을 구해 난반사된 빛의 세기를 구한다. 두 벡터가 이루는 각이 0에 가깝다면 난반사된 빛이 색을 결정할 때 더 큰 영향을 줄 것이고, 90에 가깝거나 그 이상이 되면 영향력이 떨어지게 될 것이다.
3. Specular Light(정반사광)
Specular Light는 정반사된 빛을 의미한다. 정반사된 빛은 예측할 수 있으며, 방향이 고정되어 있기 때문에 관찰자의 시점에 따라 영향도가 달라지게 된다. 물체의 재질에는 diffuse와 같은 역할을 하는 specular 속성이 있다. Specular Light 역시 이 값을 기반으로 하여 계산을 할 수 있다.
Specular Light를 계산하는 방법 역시 Diffuse Light를 계산하는 방법과 크게 다르지 않다. 다만, Specular Light는 관찰자의 시점을 고려해야 한다. 물체의 표면에 정반사되어 나온 벡터 과 물체의 표면에서 관찰자의 시점으로 향하는 벡터 사이의 각도를 구해주면 된다. 두 벡터 사이의 각도가 0에 가까울수록 영향력이 강해질 것이다.
'그래픽스' 카테고리의 다른 글
yaw, pitch, roll (0) | 2024.06.09 |
---|---|
림(rim) 효과 (0) | 2024.06.03 |
퐁(Phong) 반사 (0) | 2024.06.01 |
Spinning Cube (0) | 2024.05.17 |
원근 투영 행렬 유도하기 (0) | 2023.10.06 |