04_장면 관리 개요1. °ÔÀÓ¿¡¼-Ç Àå¸é °ü¸®
ÇÁ·Î±×¡¹Ö °³¿ä
ÚÀ¥Çß¹ : ÍÀº¼è± (noerror@itel.net)
h
ÏÀ¥Çß¹ : 2004.10.10
1
2. I. INTRODUCTION
é¸åÀ ®¸ü° (Scene Managing) °³¿ä
+ °ÔÀÓ¿¡¼- ó¸®ÇÏ´Â °³Ã¼ ö ¡ ¸¹¾ÆÁö + °³Ã¼ ¼ö = ¾À¿¡ 1000°³ÀÇ ¿ÀºêÁ§Æ®°¡
°Å³ª, Ç¥ ö ¿µ ªÀÌ ³Ð¾îÁú °æ¿ì, ·»´õ¸µ, Àִµ¥, ½ÇÁ¦·Î Æò±ÕÀû ¸·Î È-¸é¿¡ ·»
Ãæµ¹ üũ µîÀÇ Áö¿ªÀûΠ󸮿¡ Á» ´õ ´õ¸µ µÇ´Â °ÍÀÌ 50°³ Á¤µ¶ó°í Çϸé Àå
È¿À²ûÎ Á¢±ÙÀÌ ÇÊ¿äÏ´Ù. ¸é °ü¸®¡ ÇÊ¿äÏ´Ù ° í Ç Ò ¼ ö À Ö´ Ù.
+ ¿µªÀÇ ³ÐÀÌ = 1Km ¿¡ ¿ÀºêÁ§Æ®µéÌ
î¾Çµ÷Æк »ÀÖ §¶ ßþ½ ¡°®¸Å 10M ó¶
¸é ¸ðµç ¿ÀºêÁ§Æ®Ç ´Ü¼ø ºä Äøµº´Ù
È¿À²ûÎ ¹æýÀÌ ÇÊ¿äÏ´Ù.
+ °ÔÀÓ¿¡¼- °³Ã¼¸¦ °Ë»öÇÒ ÇÊ¿ä°¡ ÀÖ´Â
¸¹Àº ºÐ¾ß¿¡¼- Àå¸é °ü¸®¡ ÇÊ¿äÏ´Ù.
¿ÀºêÁ§Æ® ·»´õ¸µ, Ãæµ¹ ³¸®
¿µÇâÁÖ´Â ¶óÀÌÆà °Ë»ç
±ÙÁ¢ÇÑ ¿ÀºêÁ§Æ® ¸®½ºÆ
GTA3 – r S t u d i aR o s c k
2
3. é¸åÀ ®¸ü° ÒǪ¿
·»´õ¸µ °üÁ¡ + Àå¸é°ü ® => ÃÖ¼ÒÀÇ Å½»öÀ¸·Î Ãæµ¹
°¡´É¼º ÀÖ´Â ¿ÀºêÁ§Æ®¸ °Ë»ö
+ °ÔÀÓ¿¡¼-´Â ·»´õ¸µ ¼Óµ °¡ Å« ¿µÇâÀ»
Á Ü >= " °¡Àå ºü¸¥ ·»´õ¸µÀº ±×¸®Áö ¾Ê Á¤¸®ÇÏé
´Â°Í “
+ ¸¹Àº ¿ÀºêÁ§Æ®µé Áß¿¡¼- ó¸®ÇÏ°íÀÚ
+ Àå¸é °ü¸®´Â È-¸é¿¡ ·»´õ¸µ µÈ °¡´É ÇÏ´Â ¿µ ª ¡ Æ÷ÇÔµÈ, °á ú¿¡ ¿µÇâÀ» ÁÙ
¼ºÀÌ ÀÖ´Â °Íµé¸ ÃÖ¼ÒÀÇ Å½»öÀ¸·Î ºü °¡´É¼ºÀÌ ÀÖ´Â °³Ã¼¸ ºü¸£°Ô °Ë»öÇÏ´Â
¸£°Ô °Ë»ö °ÍÀÌ Àå¸é °ü¸®ÀÇ ±âº»
Ãæµ¹³¸® °üÁ¡ °ÔÀÓ¿¡¼- ¸¹ÀÌ »ç¿ë µÇ´Â ±â¹ý
+ ÇÑ ÇÁ·¹ÀÓ¿¡ N°³ÀÇ ¿ÀºêÁ§Æ®¡ ¹°¸® + ÄõµåÆ®¸
¸¦ Àû¿ëÇÒ °æ¿ì ¿ÀºêÁ§Æ®°£Ç Ãæµ¹ °Ë + ¿ÁÆ®¸
»ç N x (N-1) ¹ø ÀϾ°Ô µÊ >= “°¡ + k-d ®¸Æ
Àå ÁÀº °ÍÀº Ãæµ¹ °¡´É¼ºÀÌ ¾ø´Â ¿Àºê + BSP
Á§Æ®µé°ú´Â Ãæµ¹ °Ë»ç¸¦ ÇÏÁö ¾Ê´Â °Í ”
3
4. II. ÀϹÝûÎ Àå¸é °ü¸® ±â¹ý
ÀϹÝûÎ Àå¸é °ü¸® ±â¹ýµéÀÇ °øÅëÁ¡ °øÅëÀûÎ ¼öµÄÚå (Pseudo Code)
+ °èÃþÀû ¸·Î °ø £À» ºÐÇÒ ±¸¼ºÇÏ¿© °³ (,åµë³ ) {
ö»½Å ª¿µ ç»Ë°
ü ¸®½ºÆ¦ °ü¸®ÇÑ´Ù. or(i=0; i<;ö¼Ä½ÚÀ
f i+) {
+
if ((.i.,åµî¿Ù¹ )) {
ÔÇ÷Æ åµë³ [ĽÚÀ ] ª¿µ ç» Ë°
+ ¸ðµÎ Æ®¸ ±¸Á¶·Î µÇ¾î ÀÖ´Ù. if (.i].º¼Ó = ) {
åµë³ [ĽÚÀ Á®Ç¸
or(j0; .i].;ö¼ÛÅÌÀƾ ) {
f = å µ ë ³ < j [ Ä ½ Ú À j+
+ ƯÁ¤ ³ëµå(ºÎ¸ð)ÀÇ ÇÏÀ§ ³ëµå(ÀÚ½Ä)°¡ if ((.i.,]jÛ[ÅÌÀƾ ))
ÔÇ÷Æ åµë³ [ĽÚÀ ] ª¿µ ç»Ë°
Test¿¡ Åë°úÇÏÁö ¾Ê´Â ´Ù¸é ±× ÀÌÇÏ´Â (.i.)
®¸³Ã åµë³ Ä[½ÚÀ ] ]j[ÛÅÌÀƾ
°Ë»çÇÒ ÇÊ¿ä°¡ ¾ø´Ù. }
} else
+ Àç±Í û ΠŽ»ö¿¡ ÀûÇÕ Ñ ÇüÅ´Ù. (.i,] )
ö»½Å åµë³ [ĽÚÀ ª¿µ ç»Ë°
}
+ ¾Ë°í¸®ÁòÀû Î Á¢±ÙÀÌ â ¶§¹®¿¡ ¿µ ª }
ÀÇ Å©±â¿Í ¿ë·®ÀÌ ºñ·ÊÇÏÁö ¾Ê´ÂÙ. }
4
5. 1. ÄõµåÆ®¸ (Quadtree)
+ µÎ °¡Áö Ãà(ÀϹÝû¸·Î X, Y)·Î °¢ ³ë + °ÔÀÓ¿¡¼- ³ôÀÌÃà Ç ¿µÇâÀ» Àû°Ô ¹Þ´Â
µå¸¦ °è¼ÓÇØ- 4ºÐÇÒ ÇÏ´Â ¹æ½Ä °æ¿ì ¸¹ÀÌ »ç¿ëµÈ´Ù.
+ ŸÀÏ º£À̽ ¿Í ºñ±³ÇÏ¸é ¿µ ªÀÇ Å©±â
¿¡ µû¶ó °Ë»ö ¼ÓµÀÇ ¿µÇâÀ» Àû°Ô ¹ÞÀ¸
ç¸ (ÇÀ¼Ã³° ¡°ö¼ é¸Ù´° 1kʸm ÷Èø¼Ü´
ú° 100km ºÀʸ «Å ¡°ÌÀ÷ .), ®·ë¿ Ù´ø¾
¿ª½Ã ¿µÇâÀ» ¹ÞÁö ¾Ê´ÂÙ.
+ ÀÌ»óûÎ Æ®¸ÀÎ °æ¿ì ±íÀÌ´Â log 4N
À¸·Î 6¸¸°³ÀÇ °³Ã¼ÀÏ °æ¿ì¡µ ±íÀÌ°¡
4 ·¹º§ Á¤µ ·Î Àû´Ù
+ °ø £ ±âÁØÀ¸·Î Æ®¸ ¦ ±¸¼ºÇÒ °æ¿ì ¡
´Â È¿°úÀû ¸·Î º¹ÀâÇÑ °÷Àº ±íÀÌ, ¾Æ´Ñ
°÷Àº ³·°Ô ¼³Á¤µÈ´Ù.
5
6. ®¸ Æ º¼ý» (1)
Æ®¸ ¸µé±â
+ ÇöÀç ³ëµå¿¡ Æ÷ÇÔµÈ ¸ðµç ¾ÆÀÌÅÛµé »
Á߽ɡ À» ±âºÐÀ¸·Î °¢ ¿µª¡ Æ÷ÇÔµÈ
°Íµé·Î ³ª´«Ù. (Áß½ÉÁ¡ÀÇ °áÁ¤¿¡ µû¶ó
Æ®¸ ÀÇ ¸ð¾çÀÌ ´Þ¶óÁø Ù.)
+ °¢ ¿µ ª ¡ Æ÷ÇÔµÈ °Íµé·Î Æ®¸ ¦ ¸
µé¾îÆ®¸ÀÇ ÃÖ»óÀ§ ³ëµå¸¦ Àڽĸ·Î ºÙ
ÀδÙ.
Æ®¸¦ ³ª´©Â Á߽ɡ
+ Æ®¸ÀÇ ±íÀÌ°¡ ³Ê¹« ±í¾îÁö°Å³ª ¿Àºê
Á§Æ®¼ö°¡ Àû´çÇÑ ¼ö ÀÌÇÏÎ °æ¿ì ´õ ÀÌ + Æ®¸¦ ±¸¼ºÇÒ ¶§ °¡Àå ¿µÇâÀ» ¸¹ÀÌ
»ó ³ª´©Áö ¾ÊÀ¸ç, ÀÌ ³ëµå¸¦ ¸®ÇÁ(Leaf) ÁÖ´Â ºÎÐÀ¸· °¡Àå ±ÕÇü ÀâÈù Æ®¸¦
¶ó°í ºÎ¸£ç ¾ÆÀÌÅÛµé ¸®½ºÆ¦ °¡Áöí À§Çؼ-´Â Æ÷ÇÔµÈ ¾ÆÀÌÅÛ» 4µîºÐÇÒ ¼ö
ÀÖ´Ù. ÀÖ´Â Áö¡ÀÌ´Ù.
6
7. ®¸ Æ º¼ý» (2)
+ ÀÏ¹Ý û ¸·Î´Â °ø £À» ±ÕÀÏÇ °Ô ºÐÇÒ + ³ëµå¿¡ ¾ÆÀÌÅÛ » Æ÷ÇÔ½ÃÅ° í ÇÏÀ§ ³ë
ÇÑ´Ù. => ºñ±³Àû °øÆòÇÑ °á ú ¡ ³ª¿À¸ç, µå¿¡ ³ÖÁö ¾Ê´ÂÙ.
µ¿ÀûÎ °³Ã¼ À§Ä¡ À̵¿ µîÀ¸·Î Æ®¸ÀÇ
¸®ÇÁ¿¡ Áߺ¹µÇ¾î µî·Ï ÇÁö ¾ÊÀ¸³ª, »ó
¸ð¾çÀÌ Àß ±úÁö ¾Ê´ÂÙ.
À§¿¡ µî·ÏÉ °æ¿ì ½ÇÁ¦ °áú¿Í »ó°ü¾ø
³ª´©Â ¿µª¡ ¾ÆÀÌÅÛ °ãÄ¡´Â °æ¿ì ÀÌ °Ë»öµÇ±â ¶§¹®¿¡ ¼ö°¡ ¸¹Àé È¿À²
ÀÌ ¶³¾îÁú ¼ö ÀÖ´Ù.
+ °ãÄ¡´Â ¸ðµç ³ëµå¿¡ Æ÷ÇÔ½ÃŲ´Ù.
+ ´À½¼ÇÑ ³ëµå¸¦ ¸ µç´Ù.
Æ®¸ÀÇ ³ëµå ¼ö°¡ ¾à°£ Áõ°¡ÇÒ ¼ö ÀÖ
À¸³ª, °Ë»ö¿¡ Å« ¹«¸®´Â ¾ø´Ù. °ãÄ¡´Â °æ¿ì 4 ¿µª Áß ÀÓÇ ÇϳªÀ
¿µª¡ Æ÷ÇÔ½ÃŲ´Ù.
ÇϳªÀ ¾ÆÀÌÅÛ(°³Ã¼)ÀÇ ¿©·¯ °³ÀÇ ¸®ÇÁ
¿¡ Æ÷ÇÔµ±â ¶§¹®¿¡ ÇϳªÀ ¾ÆÀÌÅÛ ¸®ÇÁ¿¡ Áߺ¹ µî·ÏÇÁö ¾Ê´ÂÙ
¿©·¯ °³ °Ë»ö µÉ ¼ö ÀÖ¸¹Ç·Î Áߺ¹ °Ë»ö
ÇÏÀ§ ³ëµå´Â Æ÷ÇÔÑ ¾ÆÀÌÅÛµé·Î ¹Ù¿î
¿¡ ´ëÇÑ Ã³¸®°¡ ÇÊ¿äÏ´Ù.
µå ¿µªÀ» »õ·Î ±¸ÇÑ ÈÄ ÀúåÇÑ´Ù.
7
8. ®¸ Æ º¼ý» (3)
CQuadTree:_NODE * CQuadTree : BuildTree(RECT *rectlist, int * itemid x, int if (n = 0)
num, const RCT &bound, int l)
E v { / null node
{ node->child[side] = NU;L
int * temp = new int [num;] } else
int i, n, side; if (l+v1 >= _MXA_DEPTH | n <= _MAITM)
X_ E
_NODE * node; { / leaf
int * leaf = new int n1];
[ +
node = new _NODE; or(i=0; i<n; i+)
f
memset(node, 0, sizeof(_NOD));
E leafi] = temp[i;]
[
lea[fi] = -1;
node->pivot.x = (bound.let + bound.right) / 2;
f node->child[side] = lea;f
node->pivot.y = (bound.top + bound.botto) / 2;
m node->ask |= 1<side;
m
} else
for(side=0; side4; side+)
< { / node
{ node->child[side] = BuildTree(rectlist, tep, n, localbound, l1);
m v+
RECT localound = Diide(ound, node->piot, side);
b v b v }
}
for(i0, n0; i<num; i+)
= = delete ][ tep;
m
if (ContactTest(rectlist[itemidx[i], localbound) = true) return node;
tempn+] = itemidxi;]
[ [ }
8
9. ®¸ ÆåµõÄ ö»½Å (1)
{
Ž»ö ¾Ë°í¸®Áò int * leaf = (int) node->child[side], i;
*
for(i=0; leaf[i] => 0; i+)
+ ¾Õ¼- ¼Ò°³ÇÑ Å½»ö ¼öµ ÄÚ å¿Í ° ´Ù. {
if (m_UpdateCntist[leai] != _UpdateCnt)
L f[ m
+ ÇÏÀ§ ³ëµå°¡ ¹Ù¿îµå ¡ ¼ÓÇÏ´Â Áö °Ë {
if (ContactTest(m_RCT, gTestistleaf[i]) = true)
E _ L [
»çÇÏ°í, ¼ÓÇÏ´Â °æ¿ì ÇÏÀ§ ³ëµå°¡ ¸®ÇÁ {
ÀÎÁö °Ë»çÇؼ- ¸®ÇÁÀÎ °æ¿ì ±×¸® â, ¾Æ FillRect(mDC, &g_Testist[leai,] NU);
_H L f[ L
m_UpdateCntist[leai] = UpdateCnt;
L f[ m_
´Ï¸é ´Ù½Ã Àç±Íû¸·Î °Ë»öÇÑ´Ù. }
}
void plorer(const RCT & rect, NODE * node)
Ex E _
}
{
} else
for(int side0; side<4; side+)
=
Explorer(rect, (_NODE*) node-child[side]);
>
{
}
if (node->child[side] != NUL)
}
{
}
if ((side=0&rect.let=<node-piot.x&rect.top=<node->pivot.y)
f > v |
}
(side=1&rect.right>node->pivot.&rect.top<node->piot.y) |
= x = v
(side=2&rect.left=<node->pivot.x&rect.botto>m=node->pivot.)
y |
(side=3&rect.right>node->pivot.&rect.bottom>node-piot.y)
= x = > v ){
if (node->ask&(1<side))
m
9
10. ®¸ ÆåµõÄ ö»½Å (2)
ÇÏÀ§³ëµå°¡ °Ë»ö ¿µª°ú °ãÄ¡´Â Áö °Ë + ºñÆ® ¸¶½ºÆ® ¦ ÀÌ¿ëÇÑ Á᫐ ¡°ú ¿µ ª
»çÇÏ´Â ¹æý °Ë»ç
µÎ ¹ø° ¿¬»ê ¹æ½ÄÀ» ºñÆ® ¼ÆÃÀ» ÀÌ
+ ¼-ºê ¹Ù¿îµå¸¦ ±¸Çؼ- ¿µ ª°ú °Ë»ç
¿ëÇؼ- ¹æ ýÀ¸·Î 󸮰¡ °£´ÜÇØÁø Ù.
°Ë»ç ¼Óµ ´Â ´À¸®Áö , ºä ÇÁ·¯½ºÅÒ
(¼ÀÇà _OPTIMIZE Àü󸮱â ÀÌ¿ëÇÑ
Äøµ½¿¡´Â ÀÌ ¹æý¸ À¯È¿ÇÑ´Ù
ºÎÐ ÂüÁ¶)
+ Á᫐ ¡°ú ¿µ ª°ú °Ë»ç
ÀÌ¿ë °¡´ÉÇÑ Æ¯¼º
¾Æ·¡ 0¹ø Æò¸éÀÇ °æ¿ì Á߽ɡ°ú °Ë»ö
ÇÀª¿µ let, topη¸À ÜÇ´Æ . f Ù´ÏÇÉ ¡° + ³ëµå°¡ ¿ÏÀüÈ÷ °Ë»ç ¿µ ª¾È ¡ ÀÖ´Ù¸é
ÇÏÀ§ ³ëµå´Â ¸ðµÎ ¿µª¾È¡ Æ÷ÇԵȴÙ.
+ ¸®ÇÁ°¡ °Ë»ç ¿µ ª¾È ¡ ÀÖ´Ù¸é »óÀ§
¸ðµç ³ëµå´Â ¿µªÀ» Æ÷ÇÔÑ´Ù
+ ºÐÇÒ Áö ¡ÀÌ ¿µ ª ¾È¿¡ ÀÖ´Ù¸é ¸ðµç
Àڽĺ ¿µªÀ» Æ÷ÇÔÑ´Ù.
10
11. ®¸ ÆåµõÄ ÃÇù»
»ùÇà ¾îÇø®ÄÉÀ̼
+ È-¸é »ó¿¡ ÀÓ Ç Å©±âÀÇ ¸¹Àº ¼öÀÇ
°³Ã¼µé ºÐÆ÷µÇ¾î ÀÖ» ¶§ ÀÓÇ ¿µª
À Ç ° ³Ã ¼¸ ¦ ¼ ±Å ÃÇ Ò ° æ¿ ì ´ Ü ¸ î ¹ øÀ Ç Å ½» ö
À¸·Î ¿µª¡ Æ÷ÇÔµ´Â °³Ã¼¸¦ ¾òÀ» ¼ö
ÀÖ´Ù.
+ ¼±Åà ¿µ ª : º¸¶ó»ö
+ ¿µ ª ¾È¿¡ ÀÖ´Â ¸®ÇÁ¿¡ ÀÖ´Â ¾ÆÀÌÅÛ :
¹é»ö °³Ã¼, ¹é»ö ¾Æ¿ô¶óÀÎ °³Ã¼
+ ÃÖÁ¾ ¼±Åà ¿µ ª¾È ¡ ÀÖ´Â °³Ã¼ : ¹é»ö
ttpdigiat.conoerrordonloa
h /: b h /m / w
d2duadtree.ip
/ q z
11
12. 2. ¿ÁÆ®¸ (Octree)
+ X, Y, ZÃàÀÇ 3°¡Áö Ãà ¼º ÐÀ¸·Î °ø £ + °ø£À» 8µîºÐÇϱ⠶§¹®¿¡ Ž»ö º¹Àâ
À» ºÐÇÒÑ´Ù. µ ´Â ÈξÀ ÀÛ¾ÆÁø´Ù. ÀÌ»ó û Î °æ¿ì
O(log 8N).
+ ÄõµåÆ®¸ ¿Í °ÅÀÇ ´ëºÎ ÐÀÇ Æ¯¼ºÀÌ µ¿
ÀÏÇ´Ù. + ÄõµåÆ®¸ ¿Í ¸¶Âù°¡Áö·Î ±ÕÀÏÇÑ Å©±â
·Î ³ëµå¸¦ ºÐÇÒ ÇÒ °æ¿ì À¯¿¬ÇÏ°Ô µ¿Àû
+ QuadTree ¡¿ ÌàÀà ªÏ³Ç ȵ¡°ßà ÂÅüÇ
ÀÎ °³Ã¼ °ü¸®µ °¡´ÉÇÏÙ
¶ó°í º¼ ¼ö ÀÖ´Ù.
+ °ø £Àû ¸·Î °ñ í·ç ºÐÆ÷µÈ ÇüÅÂÀ ¾À
¿¡ ÀûÇÕÏ´Ù.
+ ¿¹¸¦ µé¾î ¸Þ½ÃÀÇ »ï°¢Çü ´ÜÀ§ Ç Ãæ
µ¹ µðÅ×ÀÏ» °¡Áø´Ù¸é ³»ºÎÀû¸·´Â °¢
ÌÀó¶®Æ »ÀéµÞ¾ Octree ηÂÅüÇ í°öÁ¡
ÀÖ¸é È¿À²ûÌ´Ù.
12
13. 3. k-d Tree
+ ¿ÁÆ®¸ ³ª Äõµå Æ®¸ ÀÇ °æ¿ì ¾ÆÀÌÅÛµé + ¿ÁÆ®¸ ³ª Äõµå Æ®¸ ¿¡ ºñÇØ ¾ÆÀÌÅÛ Ç
ÀÌ ÇÑ ¶óÀλ ÀÌ·ç°Å³ª ÇÑ Æò¸é¿¡ À§Ä¡ º ÐÆ ÷¿ ¡ Å « ¿ µÇ â ¾ øÀ Ì ± ÕÇ ü À Ö´ Â Æ ®¸ ®° ¡
ÇÒ °æ¿ì ºñÈ¿À²û¸·Î Æ®¸°¡ ±¸¼ºµÈ´Ù. ±¸¼ºµÈ´Ù.
Äõµå Æ®¸ÀÇ °¡Áö 2°³ÀΠä·Î °è¼Ó + ¾ÆÀÌÅÛ ÀÚÁÖ ¿Å°Ü ´Ù Ò °æ¿ì Æ®¸
±¸¼ºµÈ´Ù°Å³ª, ¿ÁÆ®¸ ¡¼- ¾ÆÀÌÅÛ Ç Y ± ÕÇ üÀ » ± ý ¼ ö À Ö± â ¶§¹®¿¡, µ¿Àû Î °³Ã¼
°ªÀÌ ¸ðµÎ 0À̶ó°Å³ª ÇÏ´Â ½ÄÀ¸·Î. º¸´Ù Á¤ÀûÎ °³Ã¼¿¡ ÀûÇÕÏ´Ù.
+ k-d ´®¸Æ ÇÀ³°Îµ ¦¸öÁ¡° øÁÌÀ ®¸Æ
ÀÇ ÀÏÁ¾¸·Î ³ëµåÀÇ ¾ÆÀÌÅÛ» À̺ÐÇÒ
Çϱâ ÁÀº ÃàÀ» ¼±ÅÃÇØ- Æ®¸¦ »ý¼º
ÇÑ´Ù.
+ ³ª´©Â ÃàÀº ÇÑ°¡Áö ¿ä¼Ò (x, y, ÁßÀÇz
Çϳª) ¸ À ·Î ºÐÇÒ µÇ±â ¶§¹®¿¡ Ž»ö ¿¬
»êÀÌ Àû°í, °£´ÜÇÏ Ù.
13
14. 4. BSP
+ ±âº»Àû Î Æ®¸ ÀÇ ¼Ó ºÀ ÀÌ ü Ç Æ®¸ + Æ®¸ ¦ »ý¼ºÇÏ´Â ½Ã°£ÀÌ ¸¹ÀÌ °É¸ ´Ù.
µé°ú µ¿ÀÏÇ´Ù. (°¢ ³ëµå¸¦ ±ÕÇü ÀÖ°Ô À̺ÐÇÏ´Â Æò¸éÀ»
±¸ÇÏ â°¡ ½±Áö ¾Ê´Ù.)
+ k-d Í¿®¸Æ ηöÁ¡°ù¶¸ ÇÀ³°Îµ öÁ¡°
¸¦ °¡Áö´Â ÀÌÁø Æ®¸ÀÇ ÇüŸ¦ °¡Áø´Ù. ÄùÀÌÅ©Ç »ç·Ê
+ ºÐÇÒ Ï´Â Æò¸éÀº Ãà¿¡ °íÁ¤µÇ¾î ÀÖ´Â + Æú¸®°ïÀ ·Î Æ®¸ ¦ ±¸¼ºÇßÀ ç, ³ëµå
°ÍÀÌ ¾Æ´Ï¶ó ÀÓÇ Æò¸éÀÌ µÈ´Ù. (Áï, ¿¡ ÆäÀ̽º ¸®½ºÆ °¡ ÀÖ°í, ¸®ÇÁ´Â °ø £
¾ÆÀÌÅÛ» ³ª´- ¶§ ÇüÅÂÀ ¿µÇâÀ» ´ú ¹Þ À» ³ªÅ¸½´Ù.
°Ô µÇ¸ç, ³ª´©  Æò¸é¿¡ °ãÄ¡´Â °æ¿ì¸¦
+ °ãÄ¡´Â Æú¸®°ïÀÌ »ý±æ °æ¿ì ½ÇÁ¦·Î
ÁÙÀÏ ¼öµ ÀÖ´Ù.)
Æú¸®°ïÀ» ºÐÇÒؼ- Á¤È®ÇÏ°Ô ³ëµå¿¡ ¼Ó
+ Á¤Àû Î °³Ã¼µé¿¡ ´ëÇؼ- ±ÕÇü ÀâÈù Çϵ· µÇ¾îÀÖ´Ù.
Æ®¸¦ ±¸¼ºÇÏ´Â °ÍÀÌ ÀϹÝûÌ¸ç µ¿Àû
+ ºä ÄøµÀÇ °æ¿ì Ä«¸Þ¶óÀÇ À§Ä¡¿Í ³ë
ÀÎ °³Ã¼ °ü¸®¿¡´Â ÀûÇÕÏÁö ¾Ê´Ù.
µåÀÇ ºÐÇÒ Æò¸é°úÀÇ À§Ä¡·Î Ž»öÇÑ´Ù.
+ Ãæµ¹ bspƯ¡À» ÀÌ¿ëÇؼ- ÃÖÀûÇ
14 Ž»öÀÌ °¡´ÉÇÏÙ
15. III. ·»´õ¸µ ÄøµÀ» À§ÇÑ
Àå¸é °ü¸® ±â¹ý
+ ´Ü¼øÈ÷ ¿µ ª °Ë»ç³ª ºä ÄøµÀ» ÀÌ¿ë + ½Ç³» ÁöÇü¿¡´Â Æ÷Å»ÀÌ ÀûÇÕ Ï´Ù.
ÇÑ Àå¸é °ü¸® ±â¹ýÀÌ ¾Æ´Ï¶ó ±âÇÏÀûÎ
+ °Å´ëÇÑ °³Ã¼ ¡ Çʵå»ó¿¡ Á¸ÀçÇÏ´Â ¤¡
Ư¼ºÀ» ÀÌ¿ëÇÏ´Â Àå¸é °ü¸® ±â¹ý.
¿©ì¡´Â ¿ÀÄ÷çÁ¯ ÄøµÀÌ µ¿òÀÌ µÈ´Ù.
+ ±âÇÏÀû Î ¿¬»êÀÌ µé¾î°¡±â ¶§¹®¿¡ Ž
+ ´ÝÈù ÁöÇüÀ̰ųª, ¾ð´ö, ¼º ®µîÀÇ Æ¯
»öÀÌ ÀϹÝûΠŽ»öº¸´Ù ºÎ´ã½·¯¿ï
¡ ÀÖ´Â ÁöÇü¿¡¼-´Â PVS°¡ µ¿òÀÌ µÈ
¼ ö À Ö± â ¶ §¹ ®¿ ¡ · »´ õ¸ µ Ç Ò ¶ § Á Ö· Î » ç¿ ë
´Ù.
µÈ´Ù.
+ Æ÷Å»Àº Ưº°ÇÑ ÇüÅÂÀ Àå¸é °ü¸® ±â
¹ýÀÌ´Ù.
+ ¿ÀÄ÷çÁ¯ Äøµ, PVS´Â µ¶¸³È Àå¸é
°ü¸® ±â¹ýÀº ¾Æ´ÏÁö¸ Àå¸é °ü¸® ±â¹ý
¿¡ ºÙ¾î¼- °ÀÌ »ç¿ëµÇ´Â ±â¼úÀÌ´Ù.
15
16. 1. Æ÷Å» (portal)
Ư¡ + Æ÷Å»À ÅëÇؼ- º¸ÀÎ ³ëµå¿¡¼- ´ÙÀ½
³ëµå·Î ¿¬°á °Ë»çÇÒ ¶§´Â »óÀ§ Æ÷Å»À
+ ³ëµå´Â Æ®¸ ±¸¼ºÀÌ ¾Æ´Ñ ¿¬°áÀÌ ÀÚ
ÅëÇؼ- º¸ÀÌ´Â Áö °Ë»çÇÑ´Ù.
À¯·Î¿î ±×·¡ÇÁÎ ±¸¼ºµÈ´Ù.
·»´õ¸µ ¼öµ ÄÚµå
+ ±âº»Àû ¸·Î ³ëµå´Â ±âÇÏÀû ¸·Î ±¸¼º
µÇ¾î Àֱ⠶§¹®¿¡ °³Ã¼ ¼öÀÇ ¿µÇâÀ» ¹Þ () {
ö»½Å åµë³
Áö ¾ÊÀ¸ ç, °³Ã¼ÀÇ À̵¿ ¡ µû¶ó ³ëµå°¡ (å)
Ù´°¸×± µ ë³
or(i=0; i<;ö¼Ä½ÚÀ
f i+) {
+
¹Ù²îÁö ¾ÊÀ¸¹Ç·Î µ¿Àû¸·Î ó¸® °¡´ÉÇÏ if (.i.ª³ûÇÝ´ = alse) {
åµë³ [ĽÚÀ ] f
´Ù. if (È(.i.)) {
ª³ÌÀ¸º¡¿é - åµë³ [ĽÚÀ ] »Å÷Æ
(.i)
ö»½Å åµë³ [ ĽÚÀ ]
±âº» ¿øÄ¢ }
}
+ °¢ ³ëµå´Â ƯÁ¤ ¿µ ªÀ¸·Î ±¸¼ºµÇ ç
}
³ëµåÀÇ ¿¬°áºÎ´Â Æ÷Å»ÀÌ Á¸ÀçÇÑ´Ù. }
+ ÀÓ Ç ³ëµå¿¡¼- Æ÷Å»ÀÌ º¸ÀÌÁö ¾ÊÀ»
°æ¿ì ¿¬°áµÈ ³ëµå´Â ¾È º¸ÀδÙ.
16
17. Æ÷Å» (2)
±âŸ
+ ¿¬°áµÈ ³ëµå°¡ ÀÛ º Æ÷Å»À ÅëÇØ º¸
ÀÏ °æ¿ì ¹Ì¸® ·»´õ¸µÈ À̹Áö·Î ó¸®
·Î ó¸® °¡´ÉÇÏÙ.
+ °ÔÀÓ ³»¿¡¼- ¹®À̳ª µ ±¸·Î Æ÷Å»À
°¡¸± °æ¿ì Æ÷Å» ±¸Á¶¿Í ¿¬µÇؼ- ¿¬°á
µÈ ³ëµå¸¦ ·»´õ¸µÇÏÁö ¾ÊÀ» ¼ö ÀÖ´Ù
+ Ưº°ÇÑ ÇüÅ·ΠÁöÇüÀÌ ±¸¼ºµÇ¾î ß ÇÏ
¸ç, Æ÷Å»ÀÇ ¼³Á¤, ³ëµå °áÁ¤ µîÀÇ µ¥ÀÌ
ÅÍ ¼öÁý ¾î·Á¿òÀ¸Î ½±°Ô Àû¿ëÇϱâ Èû
µé´Ù.
+ ½Ç³» ÁöÇü¿¡ ÀûÇÕ Ï´Ù.
ttp.cs.irginia.edulue
h w /: v ~/ kepulicationsportals.tl
b / b / hm
17
18. 2. ¿ÀÄ÷çÁ¯¸µ
(occlusion culling)
+ ¾ÕÀÇ °³Ã¼¿¡ ÀÇ Ø µÚÀÇ ¿ÀºêÁ§Æ®°¡ + Çϵå¿þ¾îÀû Î ¹æ ý : ½ÇÁ¦·Î ÀÛ º(!)
¿ÏÀüÈ÷ °¡·Á ö´Â Áö °Ë»çÇÏ´Â ¹æ½Ä => ºä¿¡ °¡¸®´Â ¿ÀºêÁ§Æ®¸¦ ·»´õ¸µÇÑ ÈÄ
“°¡Àå ºü¸¥ °ÍÀº ±×¸®Áö ¾Ê´Â °Í ” ·»´õ¸µÇÒ °èü¸¦ ±× ºä¿¡ ½ÇÁ¦·Î ·£´õ
¸µÇؼ- È-¸é¿¡ ÂïÈù Çȼ¿ ¼ö¸¦ ¼¾î-
±¸Çö¹æý
0ÀÎ °æ¿ì ¿ÏÀüÈ÷ °¡·È´Ùí ÆÇ´ÜÑÙ.
+ ±âÇÏÀû Î ¹æ ý : ±âÇÏÀû Î ¿¬»êÀ¸·Î
±âŸ
°¡¸®´Â ¿ÀºêÁ§Æ®¡ ÀÇØ ·»´õ¸µÇÒ °³Ã¼
ÀÇ ¹Ù¿îµå°¡ ¿ÏÀüÈ÷ °¡·Áö´Â Áö °Ë»ç + ¿¬»ê·®ÀÌ Àû º ÆíÀº ¾Æ´Ï¹Ç·Î, Àû ý
ÇÑ´Ù. ÇÑ ¼³Á¤ÀÌ ÇÊ¿ä ϸç, ½ÇÁ¦·Î ÁöÇü»ó ¸¹
Àº °É °¡·ÁÖ´Â °Å´ëÇÑ °³Ã¼¡ Á¸ÀçÇØ
¾ß È¿°ú¡ ÀÖ´Ù.
18
19. 3. PVS
PVS(Potentially Visible Set) + ¹Ì¸® °è»êÇÏ´Â °ªÀ̱⠶§¹®¿¡ ºôµå
ŸÀÓÇ ¿µÇâÀ» °ÅÀÇ ¾È ¹ÞÀ¸Ç·Î ºÎ¸£
+ º¸ÀÏ °¡´É¼ºÀÌ ÀÖ´Â ÁýÇÕÀ̶õ ÀǹÌ.
»Å º÷½Æ (Brutal orce òÁ®¸í°Ë¾ F
+ ÄõµåÆ®¸, ¿ÁÆ®¸, BSP¿¡ »ó°ü¾øÀÌ lgorithmA – °¡´ÉÇÑ ¸¹Àº °æ¿ì¸¦ Á÷¢
ÀÓÇ ¸®ÇÁ¿¡¼- º¸ÀÏ °¡´É¼ºÀÌ ÀÖ´Â ´ëÀÔÇÏ¿© È®·üÀû ¸ Î ÇØ°á)À» È°¿ëÇÒ
¸®ÇÁÀ ¸®½ºÆ¦ ¾Ë ¼ö ÀÖ´Ù. ¼ö ÀÖ´Ù.
+ º¸ÀÏ °¡´É¼ºÀÌ ÀÖ´Â ¸®ÇÁÀ ¸®½ºÆ ´Â + Á¤Àû Î µ¥ÀÌÅÍ´Ù.
½Çð£À¸·Î °è»êÇÑ µ¥ÀÌÅÍ°¡ ¾Æ´Ñ ¹Ì¸®
ÄùÀÌÅ© »ç·Ê
°è»êµÈ °ªÀ» »ç¿ëÇÑ´Ù.
+ ÀÓÇ ¸®ÇÁ¿¡ ÀÖ» ¶§ º¸ÀÏ °¡´É¼º
+ ±¸¼º»ó ÀÏ°ý û Î ±âÇÏÀû Ư¼ºÀÌ ¾øÁö
ÀÖ´Â ¸ðµç ¸®ÇÁÀ Á¤º¸¦ RLE + ºñÆ®µ¥
,¸ ,¾Å ÇÀîµê» ¦¸ß¾Ã½ ¦¸öÁ¡° ÌÀéµÍ°
ÀÌŸ·Î °¡Áöí ÀÖ´Ù.
ÀÖ» ¶§ ±×· °Íµé¿¡ ÀÇØ Àý´ë·Î º¼ ¼ö
¾ø´Â ¸®ÇÁ¦ ã´Â °Í
19