31
1 13 장 . 장장 장장장 장장장장 장장장장 장장장장 장장 장 장장 장장장 장장장장 . 장장장장장장장 장장장 장장장장장 장장장장 . 장장장장장장 장장장 장장장장장 장장장장 . 장장장장장장장 장장장장장장 장장장장 장장장장 장장장장 .

13 장 . 고급 렌더링

  • Upload
    cece

  • View
    122

  • Download
    2

Embed Size (px)

DESCRIPTION

13 장 . 고급 렌더링. 학습목표 그림자를 구현하기 위한 세 가지 방법을 이해한다 . 레이트레이싱의 정의와 구현방법을 이해한다 . 레디오서티의 정의와 구현방법을 이해한다 . 레이트레이싱과 레디오서티의 장단점을 비교하여 이해한다. 그림자. 셰이드 (Shade) 셰도우 (Shadow) 와 구별 상대적으로 단순한 연산으로 매우 사실적인 효과 조명과 별도로 취급 그림자 그림자 없음 : 공중에 떠있는 인상 광원특성 : 방향성 그림자 . 위치성 그림자. 반영과 본영. - PowerPoint PPT Presentation

Citation preview

Page 1: 13 장 .  고급 렌더링

1

13 장 . 고급 렌더링

학습목표

• 그림자를 구현하기 위한 세 가지 방법을 이해한다 . • 레이트레이싱의 정의와 구현방법을 이해한다 . • 레디오서티의 정의와 구현방법을 이해한다 . • 레이트레이싱과 레디오서티의 장단점을 비교하여 이해한다 .

Page 2: 13 장 .  고급 렌더링

2

그림자

셰이드 (Shade)• 셰도우 (Shadow) 와 구별• 상대적으로 단순한 연산으로 매우 사실적인 효과 • 조명과 별도로 취급

그림자• 그림자 없음 : 공중에 떠있는 인상• 광원특성 : 방향성 그림자 . 위치성 그림자

Page 3: 13 장 .  고급 렌더링

3

반영과 본영

본영 ( 本影 , 본 그림자 , Umbra, Hard Shadow)반영 ( 半影 , 반 그림자 , Penumbra, Soft Shadow) 그림자• 주변광에 의해 보임• 산란으로 인해 본영과 반영의 경계선이 흐려져 보임

Page 4: 13 장 .  고급 렌더링

4

소프트 셰도우 기법

면적 광원의 근사화• 교집합 : 본영• 합집합 – 교집합 : 반영 (Soft Shadow)

Page 5: 13 장 .  고급 렌더링

5

지면 그림자 (Ground Shadow)

지면 그림자 (Ground Plane Shadows)• 투상 그림자 (Projection Shadows)• 바닥에 투상된 그림자만을 고려 . 물체면 간의 그림자는 고려치 않음• 물체공간 알고리즘

Page 6: 13 장 .  고급 렌더링

6

지면 그림자

Page 7: 13 장 .  고급 렌더링

7

셰도우 맵 (Shadow Map)

화소 단위의 영상공간 알고리즘1. 광원기준 가장 가까운 물체면과의 거리 (A) 를 셰도우 지 - 버퍼에 저장2. 은면제거를 위해 시점기준 가장 가까운 물체면 화소를 구함3. 해당 화소 물체면으로부터 광원 (B) 까지의 거리를 구함 .4. B 가 A 보다 크면 해당 화소는 그림자 영역 내부에 존재함 .

Page 8: 13 장 .  고급 렌더링

8

셰도우 맵 (Shadow Map)

if (Zmap + Bias) < Zpixel the Pixel Is in the Shadow; else the Pixel Is Not in the Shadow;

• Bias: Zmap 과 Zpixel 이 정확히 일치하지 않을 때에 대비

광원기준 셰도우 맵 , 시점 기준 물체 렌더링

Page 9: 13 장 .  고급 렌더링

9

그림자 부피 (Shadow Volume)

가시부피와 그림자 부피가 중첩되는 곳이 그림자 영향권

Page 10: 13 장 .  고급 렌더링

10

지 패스 알고리즘 (Z-Pass Algorithm)

다수개의 다각형에 의한 그림자• 그림자 부피 안으로 들어갈 때 + 1, 나갈 때 -1• 결과적인 카운트 값이 0 보다 크면 그림자 색

Page 11: 13 장 .  고급 렌더링

11

지 - 페일 알고리즘 (Z-Fail Algorithm)

전방절단면 앞쪽이 이미 그림자 부피이면 지 - 패스는 오류지 - 페일 알고리즘• 무한대 거리에서 시점을 향해 오면서 카운트 값을 계산 • 그림자가 후방절단면 뒤쪽에 걸칠 때엔 이 역시 오류

Page 12: 13 장 .  고급 렌더링

12

지역조명모델과 전역조명모델

레이 트레이싱 ( 광선 추적 , Ray Tracing)• 대표적인 전역조명모델 (Global Illumination Model)• 순방향 레이트레이싱 ( 順方向 )

광원에서 나온 모든 광선을 추적 . 너무 많은 계산을 요함 .• 역방향 레이트레이싱 ( 逆方向 )

우리 눈에서 광선이 발사된다고 가정하고 추적 .

Page 13: 13 장 .  고급 렌더링

13

레이 트레이싱

광선의 방향• 화면에 수직• 평행투상 , 원근투상 모두 정규화 가시부피에서는 평행투상• 광선의 방향은 서로 독립적 . 병렬처리 (Parallel Processing) 에 유리

Page 14: 13 장 .  고급 렌더링

14

레이 트레이싱

가 ) 지역 조명모델에 의한 세기 ( 광원과 물체 사이 ) 나 ) 반사 광선에 의한 세기 ( 다른 물체 사이 )다 ) 굴절 광선에 의한 세기 ( 다른 물체 사이 )

지역 조명모델에 의한 세기

• 그림자 광선과 다른 물체가 만나면 C = 0

Page 15: 13 장 .  고급 렌더링

15

레이 트레이싱

반사 광선• 입사각과 반사각이 동일한 경면 반사만을 추적

굴절 광선• 물체면이 투명한 경우에 추적• 스넬의 법칙 (Snell's Law)

굴절광선의 진행방향

Page 16: 13 장 .  고급 렌더링

16

경면계수와 굴절계수

Page 17: 13 장 .  고급 렌더링

17

레이 트레이싱

재귀적 광선추적과 레이트리

Page 18: 13 장 .  고급 렌더링

18

재귀적 레이 트레이싱

void TraceRay (point start, vector direction, int depth, colors *color);{ int ray_hit( ); vector reflected_direction, transmitted_direction; colors local_color, reflected_color, transmitted_color; object hit_object; point hit_point; if (depth > MAXDEPTH) *color = BLACK; else { if (ray_hit(start, direction, &hit_object, &hit_point)) { shade (hit_object, hit_point, &local_color); calculate_reflection(hit_object, hit_point, reflected_direction); calculate_refraction(hit_object, hit_point, refracted_direction); TraceRay(hit_point, reflected_direction, depth+1, &reflected_color); TraceRay(hit_point, refracted_direction, depth+1, refracted_color); Combine (hit_object, local_color, reflected_color, transmitted_color, color); } else *color = BACKGROUND_COLOR; } }

Page 19: 13 장 .  고급 렌더링

19

레이 트레이싱

다각형 사이의 상호작용• 이면 제거 (Backface Culling) 를 허용하지 않음 .• 은면 제거 (Hidden Surface Removal) 를 허용하지 않음 .• 그림자 연산이 자동으로 이루어짐 .

2 개의 광원에 의한 하이라이트 , 하드 셰도우

Page 20: 13 장 .  고급 렌더링

20

레이트레이싱

레이트레이싱• 모든 화소에 대해 광선을 추적• 각각의 광선과 마주치는 모든 면을 발견• 이 모든 면에 대해 반사광과 굴절광의 세기를 계산

연산의 가속• 빛의 세기가 일정 한도에 다다르면 추적을 끝냄 : 임계치 설정• 다각형과의 교차점 계산에 BV 활용 : BV Test

Page 21: 13 장 .  고급 렌더링

21

교차점 계산

평면과의 교차점 : Ax + By + Cz = D 로 표현되는 평면

원구와의 교차점 : 중심 반지름 r 인 원구

• 2 개의 실근 , 중근 , 허근

Page 22: 13 장 .  고급 렌더링

22

레이 트레이싱 결과

Page 23: 13 장 .  고급 렌더링

23

레디오서티 (Radiosity)

레디오서티 • 전역 조명모델 : 물체면 상호간의 빛의 움직임을 조명모델에 반영• 확산광만을 추적 cf. 레이트레이싱 : 경면광과 굴절광을 추적• 시점의 위치에 무관 cf. 레이트레이싱 : 시점에 따라 달라짐

물체면 사이에 교환되는 빛 에너지의 양을 추적• 빛은 일종의 에너지이며 에너지 보존 법칙이 성립

Page 24: 13 장 .  고급 렌더링

24

레디오서티 (Radiosity)

Bi = i 번 다각형에서 나오는 빛의 밀도 . 레디오서티 (Radiosity) Ai = i 번 다각형의 면적Ei = 스스로 발하는 빛의 밀도ρi = i 번 다각형의 반사계수

Page 25: 13 장 .  고급 렌더링

25

레디오서티 (Radiosity)

형상인수 (Form Factor) Fij• j 번 다각형에서 출발한 빛의 몇 %가 i 번 다각형에 도달하는가 .• 면들 사이의 기하학적 관계에 따라 결정• 마주 볼수록 , 거리가 가까울수록 높음 .

Page 26: 13 장 .  고급 렌더링

26

레디오서티 (Radiosity)

형상인수 연산

dAi, dAj 로 분할 : 분할면마다 서로 바라보는 각도가 달라짐Vji = 가시성 변수 (Visibility Variable)• j 에서 i 를 바라보았을 때 중간에 가리는 물체가 없으면 1, 있으면 0

Page 27: 13 장 .  고급 렌더링

27

레디오서티 (Radiosity)

역 정리 ( 逆 , Reciprocity Law) • j 에서 i 를 향한 형상인수에 j 의 면적을 곱한 것은 i 에서 j 를 향한

형상인수에 i 의 면적을 곱한 것과 같다 • 두 개의 면 사이에 교환되는 빛의 양이 동일함

Page 28: 13 장 .  고급 렌더링

28

레디오서티 (Radiosity)

빛 에너지의 교환 : Solve for Bi !

Page 29: 13 장 .  고급 렌더링

29

조명 비교

지역조명모델과 레디오서티• 레디소서티 : 간접반사로 인해 전반적으로 밝은 모습

Page 30: 13 장 .  고급 렌더링

30

레디오서티

Page 31: 13 장 .  고급 렌더링

31

레이트레이싱과 레디오서티