buntalk.com
재질 및 음영의 형식 본문
재질의 구성요소
Drawing 개체는 저마다의 재질을 가져야 비로소 실제모양이 갖춰진다.
개체중에는
자체색상만 가지는 개체 (Diffuse)
빛이 정방향으로 비치면 반사하는 개체 (Specular)
빛이 비추지 않는 곳에도 어느정도의 색상을 가지는 개체 (Ambient)
자체적으로 발광하는 개체 (Emission)
로 구성된다.
이 중 Diffuse는 빛의 방향, 빛의 세기에 연관되는 성분,
Specular는 보는 방향, 빛의 방향, 빛의 세기에 연관되는 성분,
Ambient, Emission은 보는 방향, 빛의 방향, 빛의 세기에 연관되지 않는다.
Diffuse, Specular 그리고 음영 형식
Diffuse, Specular는 음영(Shading)방식에 따라 달라지는 성분이다.
음영형식은 물리적으로 Diffuse, Specular에 영향을 주는 정도를 나타내는 형식이나,
물리 모델을 완벽하게 나타내는 식은 상당히 복잡하므로 Graphics에서는 대표적인 4가지 형식으로 구별한다.
이들에는 Lambert, Blinn, Phong 형식이 있으며 추가적으로 Emission성분에 영향을 주는 Constant가 있다.
Lambert는 Specular를 무시하는 형식으로 오직 Diffuse에만 연관된다.
특히 Diffuse성분은 Constant를 제외하고 모든 음영 형식에 동일하다.
Diffuse = max(0,0,dot(-L, N))*DiffuseColor
Blinn, Phong형식은 Diffuse와 함께 Specular에 연관된다.
유리와 같이 빛을 비추는 방향에 따라 본연의 색상보다 밝은 빛을 갖는 물체는 보는 방향에 따라 강도가 강해진다.
사진을 보는 방향이 빛의 방향과 동일하게 보는 상황을 생각해보자.
사진에 비춰지는 빛의 강도는 더욱 강해져 거의 흰색으로 보일 것이다.
Specular가 바로 그런 성분이다.
Blinn, Phong의 차이는
소비되는 연산량의 차이로서 각각의 식은 다음과 같다.
Blinn Specular=pow(dot(reflect(-L,N),V), shininess)
Phong Specular=pow(dot(normalize(N+V),-L), shininess)
reflect는 N방향에 대한 L방향의 반사로서 연산식은
reflect(L,N)=2*dot(L,N)*N-L
으로서 결과적으로 Phong은 Blinn보다 오버헤드가 크다.
또한, 다중 빛이 있을 때 각 빛의 형식에 따라 연산되며 각 결과 Diffuse, Specular는 계속 합산된다.
Ambient성분
음영형식에 독립적인 Ambient는 빛의 방향에 관계없이 재질자체에서 나타나는 색상이며 Diffuse각 성분과 곱해져 연산된다.
Ambient=AmbientColor*DiffuseColor
특히, 물리적으로 Ambient색상은 빛이 산란되면서 그 물체에 비춰지는 모든 색상을 연산해야 하는 성분이다.
그러나 물리법칙에 대한 모든 빛을 연산하는 것은 불가능에 가까우므로 이렇게 연산한다.
Emission성분
Emission은 모든 성분에 관계없이 자체적으로 발광되는 색상이므로 특별한 수식이 없고, 상수 값이다.
최종결과
최종적으로, Ambient와 Diffuse는 본연의 색상인 DiffuseColor색상초과하는 경우가 있으므로 이에 대한 처리를 포함해야 하면된다.
Result=min(Ambient+Diffuse, DiffuseColor)+Specular+Emission
'3D Graphics' 카테고리의 다른 글
조명의 형식 (0) | 2023.03.19 |
---|---|
빛의 연산 (0) | 2023.03.19 |
Uniform 오버헤드 (0) | 2023.03.19 |
Camera Transformation - Lookat (0) | 2023.03.19 |