hwi's laboratory  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
lightmap generation, radiosity




Lightmap Generation
1. 1 texel 당 unit을 정한다. 이 값으로 폴리곤에 대한 라이트맵의 크기를 계산할 수 있다.
2. polygon들 마다 lightmap을 생성하고 조명을 계산한다.
3. lightmap을 큰 텍스쳐에 packing 한다. 큰 면적 순으로 라이트맵을 정렬한 다음에 2D BSP Tree를 이용하면 쉽게 Lightmap을 Packing 할 수 있다.

참고: 


Radiosity
1. 기본 알고리즘
Radiosity 알고리즘은 패치 단위로 계산을 한다. 
특정 패치를 떠나는 에너지 = 패치의 색상

i패치를 떠나가는 에너지 = i에서 방출되는 에너지 + i에서 반사되는 에너지
i에서 반사되는 에너지 = i의 반사율 * SUM_{NOT(j=i)} { [j를 떠나가는 에너지] * [i를 떠나가는 에너지 중 i에 도착하는 에너지 비율] }

A_i : i패치의 영역
e_i : i패치에서 방출되는 에너지
p_i : i패치의 반사율
b_i : i패치의 radisotiy
F_{ji} : j패치에서 i패치에 이르는 형식계수(form factor).
          j패치에서 떠나는 전체 radiosity가 i패치에 직접 닿는 비율

b_i = e_i + p_i SUM_{j=1}^{n} {b_j * F_{j-i} * A_j / A_i}

Form Factor의 특성
A_i * F_{ij} = A_j * F_{ji}

b_i = e_i + p_i SUM_{j=1}^{n} {b_j * F_{ij}}

2. Form Factor
F_{ji} = 1 / A_i INTEGRAL{INTEGRAL{cos(theta_i) * cos(theta_j) / (pi * r^2) * V_{ij} * dA_i * dA_j }}
V_ij : 패치 i와 j의 가시성 판단(1:보임, 0:안보임)
dA_i, d_Aj : 극소 영역
r : i와 j를 잇는 선분의 길이
theta_i, theta_j : i와 j를 잇는 선분과 i와 j의 법선 사이의 각


3. Iterative Radiosity(단계적 Radiosity)
i를 떠나가는 에너지를 계산하려면 j의 떠나가는 에너지를 알아야 하고, 동시에 j를 떠나가는 에너지를 알아내려면 i를 떠나가는 에너지가 필요하기 때문에 계산하기 어려운 점이 있다. 
기본 정석대로라면 매우 큰 n*n 행렬을 만들어서 계산한다.

단계적 radiosity와 행렬 Radiosity와 큰 개념적 차이는 빛을 쏘아보내서 계산을 한다는 것이다. shooting radiosity 라고 한다.

1. 처음에 emissive light 값을 방출한 에너지 값으로 설정한다.(조명에만 설정)
2. 방출해야 할 에너지가 가장 높은 패치를 하나 선택한다. 이것을 src라고 한다. 
3. src의 방출할 에너지 값이 일정값 이하이면 계산을 멈춘다.
4. src의 에너지를 다른 모든 패치에 방출시킨다. 
   src의 에너지를 받는 패치를 dest라고 하면, 
   4.1 dest가 src에서 오는 에너지에 대해 방출시킬 에너지양 = dest의 반사율 * src와 dest의 form factor
   4.2 4.1에서 계산한 값을 dest의 radiosity(최종 에너지양)과 dest의 방출시킬 에너지에 더한다. 
5. src의 에너지를 모두 방출시켰으므로 src의 방출 에너지를 0으로 설정한다.
6. 2번으로 돌아간다. 
   
   
참고:
Advanced 3D Game Programming using DirectX 8.x (Peter Walsh, 영진닷컴)



BLOG main image
 Notice
 Category
분류 전체보기 (27)
life (0)
project (0)
works (24)
misc (0)
study (1)
scrap (1)
review (0)
... (0)
study_cg (0)
 TAGS
CEDEC
 Calendar
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
 Recent Entries
 Recent Comments
 Recent Trackbacks
 Archive
 Link Site
바보가 아닌 Mr
V i n t e r s o r g
 Visitor Statistics
Total :
Today :
Yesterday :
rss