-
illumination 조명그래픽스 2021. 11. 17. 12:46
Ray Casting (광선 던지기)
1) 광선을 쏜다
2) 물체와 광선이 만난다
3) 물체와 광선이 만나서, 조명계산을 한다.
Direct illumination, Global illuimination 이 두개가 있다.
Direct가 가장 많이 사용한다.
Modeling Light Sources 발산
에너지를 양을 알 수 있다.광원에서 시작한다.광원이 부딧치는 위치 (x, y, z),관원까지의 거리(θ,Φ)파장 λ(색깔을 알 수 있다.)한계
빛을 모든 방향으로 발산하는 것은 어렵다.
왜냐하면,
용량이 너무많이 들고
표현하기가 어렵다.
OpenGL Light Source Models
한계로 근사치를 이용한다.
- Point light : 모든 방향으로 빛이 발산하는 것
- Directional light : 태양광과 비슷하게 똑같은 방향으로 발산한다.
- Spot light : 스탠드 처럼 일정 지역에만 빛이 떨어진다.
Point light
- Io는 원래 밝기
- 광원의 위치는 (Px, Py, Pz)
- (Ca,Ia,qa)는 거리에 반비례해서 빛의 세기를 감쇠시키는 역할을 한다.
Directional light
태양광이라고 생각하면 쉽다.
- Io는 원래 밝기
- 광원의 방향은 (dx,dy,dz)
- 거리에 따르는 감쇠가 없다.
Spot Light
- Io는 원래 밝기
- 광원의 위치 (Px, Py, Pz)
- 광원의 방향 (dx,dy,dz)
- (Ca,Ia,qa)는 거리에 반비례해서 빛의 세기를 감쇠시키는 역할을 한다.
-
falloff (sd), cutoff (sc)
- falloff(sd) : 빛이 갈 수 있는 거리의 한계
- cutoff(sc) : 빛이 벌어질 수 있는 각도의 한계
빛과 표면
빛과 표면 사이의 거리에 따른 관계
거리가 가까우면 표면에 반사되는 빛도 강하다.
멀면, 반대이다.
빛과 표면 사이의 각도에 따른 관계
각도가 직각에 가까울 수록 빛이 강해진다.
클수록 반대이다.
Scattering at surface
BRDF (θi, φi, θo, φo, λ)
- 양방향 반사 분포함수이다.
- θi, φi -> 시작에서 출발하는 방향이다.
- θo, φo -> 표변에서 시작하는 방향이다.
- 람다 -> 파장이다.
근사치를 사용해서 구한다. 왜냐하면 실제 포면은 울퉁불퉁해서 계산하기가 어렵기 때문이다.
모든 각도에서 DRDF를 계산하면 용량이 많이 들고, 표현이 어렵다.
Parametric Models
- Phong [75]
- Blinn-Phong [77]
- Cook-Torrance [81]
- He et al. [91]
- Ward [92]
- Lafortune et al. [97]
- Ashikhmin et al. [00]
- etc.
Phong
간단하게 표현하면,
Diffuse reflection(난반사) +Specular reflection(정반사) + Emission(발산광) +“Ambient”(주변광)
Diffuse reflection(난반사)
전 방향으로 반사가 일어난다.
종이나 나무재질에서 반사가 일어나면 반구 방향으로 반사가 일어난다.
반사의 정도
입사광에 따라서, 빛이 반사되는 정도가 다르다.
Lambertian model을 따른다. cos인 법칙을 따른다.
Specular Reflection(정반사)
거울이나, 금속에서 일어나는 반사이다.
입사광의 각도, 뷰어에 대한 각도에 의해서 보인다.
Phong Model
cos (a)^n -> (V º R)^n : 물리적으로 참조된 hack이다.
n은 자연스러운 표현을 하기위해서 나온 인위적인 값이다.
Ambient Term(주변광)
현살적으로 모든 주변광을 표현하는 것은 어렵다.
그래서 모든 합계를 계산합니다.
대략적인 값을 얻을 수 있다.
Emission (발산광)
polygon에서 발산하는 빛이다.
diffuse, specular, emission, and ambient 합계에 대한 표현
하나의 빛이 있을 때의 계산식
식 해석
여러개의 빛이 있을 때의 계산식
전역적인 빛
- Shadows
- Refractions
- Inter-object reflections
Shadows
- 광원이 차단되었는지 아닌지 알려준다.
- 각 광원 Li쪽으로 광선을 투사한다.
- 광선이 차단되면 Si = 0, 그렇지 않으면 Si = 1
- Si가 0이면, 물체의 난반사와 정반사가 0이 되어서, 그 물체가 갖는 발산광과 주변광만이 남는다.
- Si가 1이면, 난반사와 정반사가 살아남게 된다.
Recursive Ray Tracing(광선추적)
표면에 맞은 n차 광선을 추적하는 기술이다. -> 빛이 사라질 때까지, 빛을 추적하는 것이다.
거울 반사 및 투명도에서 전역 조명
Mirror reflections
거울 방향으로 2차 광선 추적
2차 광선을 따라 빛을 평가하고 조명 모델에 포함한다.Transparency(투명도)
It
굴절 방향으로 2차 광선 추적
2차 광선을 따라 빛을 평가하고 조명 모델에 포함한다.Kt
투명도 계수는 투과율입니다.
- Kt = 1, 완전투명 물체
- Kt = 0, 불투명한 물체
- 0 < Kt < 1, 반투명 물체의 경우
굴절 투명도
고체인 경우는, Snell의 법칙을 따른다.
Recursive Ray Tracing
Ray Tree는 조명 계산을 나타낸다.GetColor는 제귀적으로 호출된다.'그래픽스' 카테고리의 다른 글
Texture (0) 2021.12.01 Shading (0) 2021.11.29 Rendering Pipeline (0) 2021.11.15 3D Object - Curve & Surface (0) 2021.11.08 3D Object (0) 2021.11.01