320 likes | 692 Views
13 장 . 고급 렌더링. 학습목표 그림자를 구현하기 위한 세 가지 방법을 이해한다 . 레이트레이싱의 정의와 구현방법을 이해한다 . 레디오서티의 정의와 구현방법을 이해한다 . 레이트레이싱과 레디오서티의 장단점을 비교하여 이해한다. 그림자. 셰이드 (Shade) 셰도우 (Shadow) 와 구별 상대적으로 단순한 연산으로 매우 사실적인 효과 조명과 별도로 취급 그림자 그림자 없음 : 공중에 떠있는 인상 광원특성 : 방향성 그림자 . 위치성 그림자. 반영과 본영.
E N D
13장. 고급 렌더링 • 학습목표 • 그림자를 구현하기 위한 세 가지 방법을 이해한다. • 레이트레이싱의 정의와 구현방법을 이해한다. • 레디오서티의 정의와 구현방법을 이해한다. • 레이트레이싱과 레디오서티의 장단점을 비교하여 이해한다.
그림자 • 셰이드(Shade) • 셰도우(Shadow)와 구별 • 상대적으로 단순한 연산으로 매우 사실적인 효과 • 조명과 별도로 취급 • 그림자 • 그림자 없음: 공중에 떠있는 인상 • 광원특성: 방향성 그림자. 위치성 그림자
반영과 본영 • 본영(本影, 본 그림자, Umbra, Hard Shadow) • 반영(半影, 반 그림자, Penumbra, Soft Shadow) • 그림자 • 주변광에 의해 보임 • 산란으로 인해 본영과 반영의 경계선이 흐려져 보임
소프트 셰도우 기법 • 면적 광원의 근사화 • 교집합: 본영 • 합집합 – 교집합: 반영(Soft Shadow)
지면 그림자(Ground Shadow) • 지면 그림자(Ground Plane Shadows) • 투상 그림자(Projection Shadows) • 바닥에 투상된 그림자만을 고려. 물체면 간의 그림자는 고려치 않음 • 물체공간 알고리즘
셰도우 맵(Shadow Map) • 화소 단위의 영상공간 알고리즘 • 1. 광원기준 가장 가까운 물체면과의 거리(A)를 셰도우 지-버퍼에 저장 • 2. 은면제거를 위해 시점기준 가장 가까운 물체면 화소를 구함 • 3. 해당 화소 물체면으로부터 광원(B)까지의 거리를 구함. • 4. B가 A보다 크면 해당 화소는 그림자 영역 내부에 존재함.
셰도우 맵(Shadow Map) • if (Zmap + Bias) < Zpixel the Pixel Is in the Shadow; else the Pixel Is Not in the Shadow; • Bias: Zmap과 Zpixel이 정확히 일치하지 않을 때에 대비 • 광원기준 셰도우 맵, 시점 기준 물체 렌더링
그림자 부피(Shadow Volume) • 가시부피와 그림자 부피가 중첩되는 곳이 그림자 영향권
지 패스 알고리즘(Z-Pass Algorithm) • 다수개의 다각형에 의한 그림자 • 그림자 부피 안으로 들어갈 때 + 1, 나갈 때 -1 • 결과적인 카운트 값이 0보다 크면 그림자 색
지-페일 알고리즘(Z-Fail Algorithm) • 전방절단면 앞쪽이 이미 그림자 부피이면 지-패스는 오류 • 지-페일 알고리즘 • 무한대 거리에서 시점을 향해 오면서 카운트 값을 계산 • 그림자가 후방절단면 뒤쪽에 걸칠 때엔 이 역시 오류
지역조명모델과 전역조명모델 • 레이 트레이싱(광선 추적, Ray Tracing) • 대표적인 전역조명모델(Global Illumination Model) • 순방향 레이트레이싱(順方向) • 광원에서 나온 모든 광선을 추적. 너무 많은 계산을 요함. • 역방향 레이트레이싱(逆方向) • 우리 눈에서 광선이 발사된다고 가정하고 추적.
레이 트레이싱 • 광선의 방향 • 화면에 수직 • 평행투상, 원근투상 모두 정규화 가시부피에서는 평행투상 • 광선의 방향은 서로 독립적. 병렬처리(Parallel Processing)에 유리
레이 트레이싱 • 가) 지역 조명모델에 의한 세기 (광원과 물체 사이) • 나) 반사 광선에 의한 세기 (다른 물체 사이) • 다) 굴절 광선에 의한 세기 (다른 물체 사이) • 지역 조명모델에 의한 세기 • 그림자 광선과 다른 물체가 만나면 C = 0
레이 트레이싱 • 반사 광선 • 입사각과 반사각이 동일한 경면 반사만을 추적 • 굴절 광선 • 물체면이 투명한 경우에 추적 • 스넬의 법칙(Snell's Law) • 굴절광선의 진행방향
레이 트레이싱 • 재귀적 광선추적과 레이트리
재귀적 레이 트레이싱 • 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; • } • }
레이 트레이싱 • 다각형 사이의 상호작용 • 이면 제거(Backface Culling)를 허용하지 않음. • 은면 제거(Hidden Surface Removal)를 허용하지 않음. • 그림자 연산이 자동으로 이루어짐. • 2개의 광원에 의한 하이라이트, 하드 셰도우
레이트레이싱 • 레이트레이싱 • 모든 화소에 대해 광선을 추적 • 각각의 광선과 마주치는 모든 면을 발견 • 이 모든 면에 대해 반사광과 굴절광의 세기를 계산 • 연산의 가속 • 빛의 세기가 일정 한도에 다다르면 추적을 끝냄: 임계치 설정 • 다각형과의 교차점 계산에 BV 활용: BV Test
교차점 계산 • 평면과의 교차점: Ax + By + Cz = D로 표현되는 평면 • 원구와의 교차점: 중심 반지름 r인 원구 • 2개의 실근, 중근, 허근
레디오서티(Radiosity) • 레디오서티 • 전역 조명모델:물체면 상호간의 빛의 움직임을 조명모델에 반영 • 확산광만을 추적 cf. 레이트레이싱: 경면광과 굴절광을 추적 • 시점의 위치에 무관 cf. 레이트레이싱: 시점에 따라 달라짐 • 물체면 사이에 교환되는 빛 에너지의 양을 추적 • 빛은 일종의 에너지이며 에너지 보존 법칙이 성립
레디오서티(Radiosity) • Bi = i 번 다각형에서 나오는 빛의 밀도. 레디오서티(Radiosity) • Ai = i 번 다각형의 면적 • Ei = 스스로 발하는 빛의 밀도 • ρi = i 번 다각형의 반사계수
레디오서티(Radiosity) • 형상인수(Form Factor) Fij • j 번 다각형에서 출발한 빛의 몇 %가 i 번 다각형에 도달하는가. • 면들 사이의 기하학적 관계에 따라 결정 • 마주 볼수록, 거리가 가까울수록 높음.
레디오서티(Radiosity) • 형상인수 연산 • dAi, dAj로 분할: 분할면마다 서로 바라보는 각도가 달라짐 • Vji = 가시성 변수(Visibility Variable) • j에서 i를 바라보았을 때 중간에 가리는 물체가 없으면 1, 있으면 0
레디오서티(Radiosity) • 역 정리(逆, Reciprocity Law) • j에서 i를 향한 형상인수에 j의 면적을 곱한 것은 i에서 j를 향한 형상인수에 i의 면적을 곱한 것과 같다 • 두 개의 면 사이에 교환되는 빛의 양이 동일함
레디오서티(Radiosity) • 빛 에너지의 교환: Solve for Bi !
조명 비교 • 지역조명모델과 레디오서티 • 레디소서티: 간접반사로 인해 전반적으로 밝은 모습