1. Illumination
- 3D 물체를 2D로 rasterize하는 과정에서 물체의 현실감을 부여하기 위해서는 depth cue, illumination이 반영되어야 한다.
- 광원에서 빛이 얼마나 흡수되고 반사되는지 물체의 성질도 반영이 되어야 한다.
- illumination model : 광원을 고려한 모델의 색을 결정
- surface rendering method : illumination model을 활용하여 픽셀의 색을 결정
- 만약 여러 물체가 있다면 각 물체에서 반사되어 나온 빛, 광원, 이 모든 관계를 고려해서 물체의 최종색을 구해야 한다. 매우 사실적인 illumination이고 이를 global illumination이라고 한다. 하지만 이 방법은 graphics pipleline에서 병렬처리를 사용하지 못하게 하기 때문에 시간이 매우 오래 걸린다.
- shader의 고도로 병렬화된 작업의 장점을 살리기 위해 광원의 direct light만을 고려하는 Local illumination을 사용해서 구현한다.
2. Light model
Point Light
- 광원을 하나의 point라고 가정하는 광원 모델
- 물체 표면에 도달하는 빛의 세기 I(L)은
Directional Light
- 태양처럼 아주 먼 거리에 광원을 나타내는 모델
- 모든 빛이 수평으로 들어온다.
Spot Light
- 일정 각도범위만을 비추는 광원 모델
Area Light
- 형광등처럼 넓은 면적을 가지고 있는 광원 모델
- 무수히 많은 Point light source가 있다고 생각할 수 있다.
3. Intensity
- 첫번째는 attenuation에 따른 빛의 세기 변화이다. 멀수록 거리의 제곱에 비례해서 빛의 강도가 줄어든다.
- 두번째는 비추는 각에 따른 빛의 세기 변화 이다. 비스듬하게 비출 수록 surface에 도달하는 빛의 영역이 넓어지기 때문에 빛의 강도는 줄어든다.
3. Reflection
- reflection구현 중에 가장 많이 사용하는 Phong illumination model을 알아보자.
- phong model은 diffuse, specular, emission, ambient 네가지를 모두 더해서 물체의 색을 결정한다.
- 만약 광원이 여러개라면 emission과 ambient를 제외한 모든 I를 더해주면 된다.
- 아래 하나씩 모든 요소들에 대해 알아보자.
diffuse reflection
- 흡수된 빛이 모든 방향으로 반사되는 표면을 구현한다. Lambertian surface
- KD는 물체의 성질에 대한 값이다.
specular reflection
- 거울, metal
- 빛이 L방향으로 들어온다고 했을때, R로 빛이 반사되어 나올 것이다. 그럼 viewer의 위치에 따라 표면이 달라 보인다.
- n이 크면 거울처럼 반사를 매우 잘 하는 것이다. shining한 물체인 것이다. 반대로 n이 작으면 반사를 덜 하는 물질인 것이다.
- Ks는 물질의 성질을 나타내는 값이다.
emission
- 빛을 방출하는 물체에 해당한다.
ambient term
- 다른 물체들에서 반사된 빛들도 반영을 하기 위한 방법이다.
- 아주 간략화 해서 구현되었다.
* 끝으로 parameter에 대한 얘기를 하면 다음과 같다.
'ComputerScience > Computer Graphics' 카테고리의 다른 글
CG - 7. Texture (0) | 2021.10.13 |
---|---|
CG - 6. Surface Rendering (0) | 2021.10.08 |
CG - 4. Viewing System (0) | 2021.09.24 |
CG - 3. Transformation (0) | 2021.09.24 |
CG - 2. 라이브러리 소개 (0) | 2021.09.15 |