강의/컴퓨터 그래픽스

Illumination Models & Shading

SniKuz 2024. 4. 4. 11:53

목차

 

Surface Shading

개요

물체의 표면의 색상, 질감, 재질 등을 표현합니다. 즉 물체의 appearance을 결정합니다.

 

 

Lighting vs Shading

Lighting : material들과 light source들의 상호작용으로 물리 법칙이 연관되어 있습니다.

Shading : pixel의 색을 결정하며 컴퓨터 그래픽스의 한 요소입니다.
Shading은 대개 lighting에 의해서 결정되지만, lighting에 의해 다른 방식으로 가시화될 수도 있습니다.
(ex : Non Photorealistic Rendering 비사실적 렌더링 - 셀 셰이딩을 이용한 카툰 렌더링)

NPR-셀 셰이딩

Shading Models : 물체가 어떻게 보이는지, 물리적인 현상을 시뮬레이션 합니다.
이때, 정확한 illumination을 시뮬레이션하는 것은 복잡하고 고비용이기 때문에 물리법칙에 기반한 근사와 휴리스을 사용해도 사람의 시각에는 좋은 가시화 결과를 보입니다.

 

 

Local vs Global Illumination Models

Local Model : 각각의 물체는 빛과 직접적이고 지역적인 상호작용을 보입니다.(광원에 의해서만 상호작용)

Global Model : 다른 물체들 간에도 빛 에너지의 교환과 상호작용 이루어집니다. (반사광 등 상호작용)

 

 

Light Source (광원)

A. Point source : 모든 빛이 한 점에서 출발하여 광선이 평면에 다른 입사각(incidence angle)로 닿습니다.

B. Parallel source : 모든 광선이 평행하여 광선이 평면에 같은 입사각으로 닿습니다. 보통 무한대 거리에 위치한 점 광원(Point source)로 모델링 하여 태양같은 효과를 냅니다. Directional light source

C. Area Source : 빛이 공간상에 특정 유한 영역에서 출발하여 빛을 발광합니다. Distributed source

 

 

Shading Component

Ambient Light (환경광) 

환경 상에서 방향성이 없는 빛으로 가정합니다.
모든 장소에서 같은 빛으로 물체를 비추는 것처럼 보여 마치 실루엣(Silhouette)처럼 보여지게 됩니다.

Illumination equation : I = IαKα
Iα = ambient light intensity
Kα = ambient light가 surface에서 반사되는 비율
실제로는 RGB별로 따로 정의되어 물체의 색을 결정합니다. ( I = Iαr * Kαr, Iαg * Kαg, Iαb * Kαb)

Diffuse Light (분산광) 

모든 방향에서 오는 빛을 같은 방식으로 반사하며 반사량은 다를 수 있습니다.
Diffuse reflection 또는 Lambertian reflection
광원이 정규화된 L방향에서 들어오고, surface의 법선벡터가 N일 때, surface의 빛의 세기는 <N, L>에 내적에 비례하기 때문에 방향과 법선 각도만이 영향을 줍니다.

* Diffuse reflection Illmination equation
I = IαKα  + IpKd<N,L> = IαKα + IpKd cosθ
Ip = point light source의 세기(intensity)
kd = surface의 diffuse reflection coefficient, 반사 비율

 

Specular Reflection (정반사)

빛나는 물체(금속)는 빛을 surface의 법선 벡터 N에 의해서 결정되는 특정 방향 R로 빛을 반사함

Specular Reflection


R = -L + 2<L,N>N
반사율 100% 거울이라면 L방향으로 들어온 빛을 R 방향으로 100% 반사함
대부분의 물체는 완벽한 거울이 아니고, 빛을 R방향의 부근으로 반사
* Phong Model - 빛의 경감(attenuation)을 cosⁿα의 형태로 모델

R 계산

Illumination equation
I = IαKα + Ip( Kd<N,L> + Ks<R,V>ⁿ )
Ks = Specualr reflection coefficient
n = Specular exponent

cosⁿα의 지수 n이 경감 정도(decay factor)를 결정합니다. 물리적 기반은 없지만 괜찮은 결과를 보입니다.

 

Illumination Equation

전체 Illumination Equation은
I = IαKα + Ip( Kd<n,l> + Ks<R,V>ⁿ )

여러개의 광원이 존재할 때는 모든 광원들의 Ip들이 더해집니다. 또한 RGB가 1값을 넘어 Overflow에 대한 처리가 필요할 수 있습니다.
$$  I = I_{a}K_{a} + \sum_{}^{p}I_{p}(K_{d}<N, L> + K_{s}<R,V>^{n}) $$

 

 

Flat Shading

Piecewise linear polygonal model에 적용합니다. 각각의 Area를 평면으로 근사해 채색합니다.
polygon에 적용할 수 있는 단순한 surface lighting으로 Illumination 값은 각각의 polygon의 법선 벡터에 의해 결정됩니다→ 각각의 polygon은 같은 가중치로 칠해져 부드럽게 보이지 않습니다.

 

Gouraud Shading

polygon이 부드러운 곡면의 근사라면 물체의 각 정점에 법선 벡터를 부여해 vertex normal을 이용해서 illumination intensity를 각 vertex에서 계산할 수 있습니다. 이때 휴리스틱한 방법으로 추정해서 사용하기도 합니다.

Polygon의 내부에 있는 pixel의 lighting intensity를 구하기 위해 정점들에서 계산한 lighting intensity(RGB)를 선형보간할 수 있습니다.

Color

 

Phong Shading

위 Gouraud Shading은 Color에 적용하는데, Phong Shading은 normal에 적용하는 차이점이 있습니다.
Illumination intensity들 대신에 법선 벡터들을 선형 보간합니다.
polygon의 내부에 있는 pixel들에 대해서 pixel에 해당하는 보간된 normal을 이용해서 illumination equation을 계산합니다.

Normal

 

Shading

Phong Shading은 Gouraud Shading에 비해 비쌉니다.
아주 작은 영역에서 계산이 많은 경우 Phong은 normal을 구해서 값이 튀는것을 구할 수 있어 specular highlight effect를 잘 구현할 수 있습니다.
Gouraud와 Phong shading은 모두 image plane에서 이루어지며 view dependent입니다.