ÀÌ ±ÛÀ» Seumas McNally¿¡°Ô ¹ÙĨ´Ï´Ù.
ÀÌ ±ÛÀÇ ³¡¿¡ ÀÖ´Â ¿¡Çʷα׸¦ ºÁ ÁÖ¼¼¿ä.
ÀÌ ±Û¿¡ °ü·ÃµÈ µ¥¸ð ÇÁ·Î±×·¥Àº ¿©±â¼ ´Ù¿î ¹ÞÀ¸¼¼¿ä.
¸¹Àº »ç¶÷µé°ú ¸¶Âù°¡Áö·Î ³ª´Â ±¼°îÁø ¾ð´ö°ú °í¿äÇÏ¸ç µÎ·Á¿ò±îÁö ÀھƳ»´Â ¾Æ½½¾Æ½½ÇÑ Çù°îµéÀÇ »çÁøµéÀ» ±¸ÇÑ´Ù.
°ÔÀ̸ӷμ ÀÚ¿¬ÀÇ ¾Æ¸§´Ù¿òÀ» µå·¯³¾¼ö ¾ø´Ù´Â °ÍÀº ºÒÇàÇÑ ÀÏÀÌ´Ù.
ÇöÀçÀÇ À¯¸ÁÇÑ °ÔÀÓµéÁß ¼Ò¼ö¸¸ÀÌ ´«À» À§ÇØ ÀÌ·¯ÇÑ Ç⿬À» Á¦°øÇÑ´Ù.
(Tribes 1 & 2, Tread Marks, Outcast, Myth 1 & 2, and HALO).
ÀÌ·¯ÇÑ °ÔÀÓµéÀº »ïÂ÷¿ø ¾×¼Ç°ÔÀÓµéÀ» ½ºÅ丮¿Í µ¿ÀÛÀÌ ¿¬ÃâµÇ´Â ¹ÏÀ»¼ö ¾øÀ» Á¤µµ·Î µðÅ×ÀÏÇÑ ¼¼°è·Î ¿Å°Ü³õ´Â´Ù.
ÀÌ ±â»ç¿¡¼ ³ª´Â Çϵå¿þ¾î¿¡ ÀÇÇØ °¡¼ÓµÇ´Â ÁöÇü¿£Áøµé°ú ÀÌ ¿£ÁøÀ» ±¸µ¿ÇÏ´Â ¾Ë°í¸®Áò¿¡
´ëÇØ Á¶»çÇÒ °ÍÀÌ´Ù.
´ÙÀ½ ÇÁ·ÎÁ§Æ®¿¡¼ ÁöÇüÀ» Ãß°¡ÇϰíÀÚ ÇÏ´Â »ç¶÷µéÀ» À§ÇÑ ½ÃÀÛÁ¡À¸·Î¼ Ưº°È÷ ÇϳªÀÇ ¾Ë°í¸®ÁòÀ» Á¦°øÇÏ°í ³íÀÇÇÒ °ÍÀÌ¸ç ¸¶Áö¸·À¸·Î
ÀÌ ¾Ë°í¸®ÁòÀ» ±¸ÇöÇÒ °ÍÀÌ´Ù.
³ª´Â µ¶ÀÚµéÀÌ Áß±ÞÁ¤µµÀÇ c++Áö½Ä°ú ÃÖ¼ÒÇÑ »ïÂ÷¿ø ·»´õ¸µ¿¡ ´ëÇÑ ÀϹÝÀûÀÎ Áö½ÄÀ» °¡Áö°í ÀÖ´Ù°í °¡Á¤ÇÏ°í ³íÀǸ¦ ½ÃÀÛÇÑ´Ù.
Intorduction to Terrain Visualization : ÁöÇü
½Ã°¢È¿¡ ´ëÇÑ µµÀÔ(¼Ò°³).
LODÁöÇü ¾Ë°í¸®ÁòµéÀ» ÂüÁ¶ÇÏÁö ¾Ê°í ÁöÇü½Ã°¢È(Terrain Visualization)ÀÇ ¼¼°è·Î ¶Ù¾îµé¼ö´Â
¾ø´Ù.
LOD¾Ë°í¸®ÁòÀº Á¤È®ÇÏ°Ô º¸À̱â À§ÇØ ÁöÇüÀÇ ¾î¶² ºÎºÐÀÌ ´õ ÀÚ¼¼ÇÏ°Ô º¸ÀÏ Çʿ䰡 ÀÖ´ÂÁö¸¦ °áÁ¤Çϱâ À§ÇØ °æÇèÄ¡ÀÇ ÁýÇÕÀ»
»ç¿ëÇÑ´Ù.
ÀǽÉÇÒ ¹Ù ¾øÀÌ ¿©·¯ºÐÀº ¸¹Àº ÁöÇü¿¡ ´ëÇÑ ÂüÁ¶¹°°ú GPSµ¥ÀÌÅ͸¦ ±¸ÇÒ °ÍÀÌ´Ù.
ÀÌ·¯ÇÑ ¸ðµç °ÍµéÀº ±º¿ëÀÇ SimNet ¾îÇø®ÄÉÀ̼ǿ¡¼ »ç¿ëµÇ¾úÁö¸¸ Áö±ÝÀº Á»´õ »ç¼ÒÇÑ ¸ñÀûÀ» À§ÇØ »ç¿ëµÇ°í ÀÖ´Ù.
ÁöÇüÀ» ·£´õ¸µÇϱâ À§ÇÑ ¸¹Àº ±â¼úÀû º¯Èµé Áß Çϳª´Â ÁöÇüÀÚü¿¡ Á¸ÀçÇÏ´Â ±â´ÉµéÀ» ÀúÀåÇÏ´Â ¹æ¹ýÀÌ´Ù.
³ôÀ̸Ê(height map)Àº »ê¾÷»óÀÇ Ç¥ÁØÀÌ´Ù.
°£´ÜÈ÷ ¸»ÇÏ¸é ³ôÀ̸ÊÀº ±× À§Ä¡¿¡¼ÀÇ ÁöÇüÀÇ ³ôÀ̰ªÀ» ÀúÀåÇϰí ÀÖ´Â ÀÌÂ÷¿ø ¹è¿ÀÌ´Ù.
Ãø·®±â»ç°¡ ÀÚ½ÅÀÇ °íµµ Ãø·®ÅøÀ» »ç¿ëÇÏ¿© °¢ »ç°¢ÇüÀ» ä¿î ±×·¡ÇÁ ¿ëÁö¶ó°í »ý°¢ÇÏÀÚ.
³ôÀÌÇʵå´Â ³ôÀ̸ÊÀ̶ó°íµµ ÇÑ´Ù.
³ª´Â ÀÌ µÎ ¿ë¾î¸¦ »óÈ£±³È¯ÀûÀ¸·Î »ç¿ëÇÒ °ÍÀÌ´Ù.
Overview of LOD Terrain Algorithms : LOD ÁöÇü
¾Ë°í¸®Áò¿¡ ´ëÇÑ °³¿ä.
LODÁöÇü ¾Ë°í¸®Áò¿¡ ´ëÇÑ ÁÁÀº °³¿ä´Â ¼¼ °³ÀÇ ³í¹®¿¡ Àß ³ªÅ¸³ª ÀÖ´Ù.
(1. Hoppe, 2. Lindstrom, 3. Duchaineau)
ù ¹øÂ° ³í¹®¿¡¼ Hoppe´Â ¿©·¯ºÐÀÌ Á»´õ ¼¼¹ÐÇÑ ÁöÇüÀÌ ÇÊ¿äÇÒ ¶§ ÀÓÀÇÀÇ ¸Þ½¬¿¡ »ï°¢ÇüµéÀ» Ãß°¡ÇÏ´Â ´Ù¼Ò
»õ·Ó°í ±ò²ûÇÑ ÀûÀÀÀû ¸Þ½¬¿¡ ±â¹ÝÇÑ ¾Ë°í¸®ÁòÀ» Á¦½ÃÇÑ´Ù.
ÀÌ ³í¹®Àº ÈǸ¢ÇÑ ÂüÁ¶¼ÀÌÁö¸¸ ¿ì¸®ÀÇ ¿ä±¸¿¡´Â ´Ù¼Ò º¹ÀâÇÏ°í ¸¹Àº ¸Þ¸ð¸®¸¦ ¿ä±¸ÇÑ´Ù.
Á» ´õ ¿ì¸®ÀÇ ½ºÅ¸ÀÏ¿¡ °¡±î¿î µÎ ¹øÂ° ³í¹®¿¡¼ LindstromÀº ÁöÇüÀÇ Á¶°¢(Patch)À» Ç¥ÇöÇϱâ À§ÇØ
»ç¿ëµÇ´Â ÄõµåÆ®¸®¶ó°í ÇÏ´Â ±¸Á¶Ã¼¸¦ Á¦½ÃÇÑ´Ù.
ÄõµåÆ®¸®´Â ³ôÀÌ ¸Ê¿¡ ´ëÇÑ ±Ù»ç°ªÀ» »ý¼ºÇϱâ À§ÇØ ÁöÇüÀ» Àç±ÍÀûÀ¸·Î ºÐÇÒÇÑ´Ù.
ÄõµåÆ®¸®´Â ¾Æ·¡ÀÇ ¾Ë°í¸®Áò°ú ¸¹Àº ¼³°è¿øÄ¢À» °øÀ¯Çϰí ÀÖÀ¸¸ç ¾ÆÁÖ °£´ÜÇϰí È¿À²ÀûÀÌÁö¸¸ ¾Æ·¡ÀÇ ³í¹®Àº Ãß°¡ÀûÀÎ º¸³Ê½º¸¦
Á¦°øÇÑ´Ù.
¸¶Áö¸·À¸·Î ¼¼ ¹øÂ° ³í¹®¿¡¼ Duchaineau´Â ÀÌÁø »ï°¢Çü Æ®¸®(Binary Triangle Tree)¿¡
±â¹ÝÇÑ ¾Ë°í¸®Áò(Real-time Optimally Adapting Meshes: ROAM)À» Á¦½ÃÇÑ´Ù.
¿©±â¿¡¼ °¢ ÆÐÄ¡´Â ´Ü¼øÈ÷ (¿ìÃøÀÇ) À̵ »ï°¢ÇüÀÌ´Ù. »ï°¢ÇüÀÇ Á¤Á¡¿¡¼ ÀÌ »ï°¢ÇüÀÇ ºøº¯ÀÇ ÁßÁ¡À» ºÐÇÒÇÏ¸é µÎ °³ÀÇ
»õ·Î¿î À̵(¿ìÃø) »ï°¢ÇüÀ» ¸¸µç´Ù.
ÀÌ·¯ÇÑ ºÐÇÒÀº Àç±ÍÀûÀÌ¸ç ¿øÇÏ´Â µðÅ×ÀÏ ¼öÁØ¿¡ À̸¦ ¶§ ±îÁö Àڽijëµåµé¿¡ ´ëÇØ ¹Ýº¹µÈ´Ù.
¿¬±¸ ±â°£Áß ROAM ¾Ë°í¸®ÁòÀº ±× °£°á¼º°ú È®À强 ¶§¹®¿¡ ³ªÀÇ ´«±æÀ» ²ø¾ú´Ù.
ºÒÇàÈ÷µµ ÀÌ ³í¹®Àº ¾ÆÁÖ Âª°í ±¸ÇöÀ» À§ÇÑ ÈùÆ®·Î ÃÖ¼ÒÇÑÀÇ ÀÇ»çÄÚµå(pseudo code)¸¸À» Á¦°øÇÑ´Ù.
±×·¯³ª ÀÌ ±â¹ýÀº ¾ÆÁÖ ±âº»ÀûÀÎ ¼öÁØ¿¡¼ºÎÅÍ °ÅÀÇ ¿¬¼ÓÀûÀÎ ´Ü°è·Î ¾ÆÁÖ Áøº¸µÈ ÃÖÀûȱîÁö ±¸ÇöÇÒ¼ö ÀÖ´Ù.
°¢°¢ÀÇ ´Ü°è´Â °è¼ÓÇϱâ Àü¿¡ À¯È¿ÈµÉ¼ö ÀÖÀ¸¹Ç·Î µµ¿òÀÌ µÈ´Ù.
¶ÇÇÑ ROAMÀº ¾ÆÁÖ ºü¸£°Ô ºÐÇÒÇÏ¸ç ³ôÀ̸ÊÀ» µ¿ÀûÀ¸·Î °»½ÅÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.
¿©±â¿¡¼ Á¦½ÃÇÏ´Â ¾Ë°í¸®ÁòÀº Tread Marks (http://www.TreadMarks.com)
¸¦ º»µû¼ ¸¸µé¾ú´Ù.
¼ö¼® ÇÁ·Î±×·¡¸Ó Seumas McNally´Â °³³ä¿¡¼ºÎÅÍ ¿Ï¼º±îÁö ÈûÀÌ µÇ¾î ÁÖ¾ú´Ù.
´õ ÀÚ¼¼ÇÑ »çÇ×Àº ³¡ºÎºÐÀÇ "Acknowledgment" ¶õÀ» º¸¶ó.
Introduction to the ROAM Implementation : ROAM
ÀÇ ±¸Çö¿¡ ´ëÇÑ µµÀÔ.
ÀÌ ¾ÆÅ°ºê¿¡ ÀÖ´Â ÄÚµå´Â ºñÁÖ¾ó C++6.0À¸·Î ÀÛ¼ºµÇ¾úÀ¸¸ç ·»´õ¸µÀ» À§ÇØ ¿ÀÇÂÁö¿¤À» »ç¿ëÇÑ´Ù.
³ª´Â OpenGL¿¡ ´ëÇØ¼´Â »ý¼ÒÇÏÁö¸¸ ÀÌ ÇÁ·ÎÁ§Æ®ÀÇ ÀÌ·¯ÇÑ Ãø¸éµéÀ» Á¤È®ÇÏ°Ô ÄÚµùÇϱâ À§ÇØ °¡´ÉÇÑ ¸ðµç ¹æ¹ýµéÀ» »ç¿ëÇß´Ù.
¿£ÁøÀÇ ¼³°è¿Í ±¸Çö¿¡ °üÇÑ Á¶¾ðÀ̳ª Ãæ°í´Â ¾ðÁ¦³ª ȯ¿µÇÑ´Ù.
ÀÌ ÇÁ·ÎÁ§Æ®´Â ÀÌ ±â»ç¿¡¼´Â ¼³¸íÇÏÁö ¾ÊÀº ¸î °³ÀÇ ÆÄÀϵéÀ» °®°í ÀÖ´Ù.
ÀÌ·¯ÇÑ ÆÄÀϵéÀº À¯Æ¿¸®Æ¼ ·çƾ°ú WIN32ÇÏ¿¡¼ OpenGLÀ» ½ÇÇà½Ã۴µ¥ ÇÊ¿äÇÑ ÀϹÝÀûÀÎ ¾îÇø®ÄÉÀÌ¼Ç ¿À¹öÇìµåÀÌ´Ù.
¿ÀÁ÷ "ROAMSimple.cpp"¿Í ±× Çì´õ ÆÄÀϸ¸À» ÀÌ ±â»ç¿¡¼ °ËÅäÇÑ´Ù.
ROAM Source Explanation: ROAM ¼Ò½º ¼³¸í.
³ª´Â Á¶°¨µµÀûÀÎ °üÁ¡¿¡¼ ÀÌ ¾Ë°í¸®ÁòÀ» ¼Ò°³ÇÏ°í °³º°ÀûÀÎ ºÎºÐµéÀÌ ¾î¶»°Ô »óÈ£ÀÛ¿ëÇÏ´ÂÁö¿¡ ´ëÇØ ³íÀÇÀÇ ÃÊÁ¡À»
¸ÂÃâ °ÍÀÌ´Ù.
* ³ôÀÌ¸Ê ÆÄÀÏÀº ¸Þ¸ð¸®¿¡ ·ÎµåµÇ¸ç LandScapeŬ·¡½ºÀÇ ÀνºÅϽº¿Í ¿¬°áµÈ´Ù.
¿©·¯°³ÀÇ LandScape°´Ã¼´Â ¹«ÇÑÇÑ Å©±âÀÇ ÁöÇüÀ» ¸¸µé±â À§ÇØ ¸µÅ©µÉ¼ö ÀÖ´Ù.
* »õ·Î¿î LandScape¿ÀºêÁ§Æ®´Â ·ÎµåµÈ ³ôÀ̸ÊÀÇ ºÎºÐµéÀ» »õ·Î¿î PatchŬ·¡½º °´Ã¼·Î ºÐÇÒÇÒ¼ö ÀÖ´Ù.
ÀÌ ´Ü°èÀÇ ¸ñÀûÀº µÎ°¡ÁöÀÌ´Ù.
1. ÀÌ ¾Ë°í¸®ÁòÀÇ ³ª¸ÓÁö ºÎºÐ¿¡¼ »ç¿ëµÈ Æ®¸®±¸Á¶´Â ±íÀÌ¿¡ µû¶ó Áö¼öÀûÀÎ Å©±â·Î ·¥ÀÇ »ç¿ë·®À» ´Ã¸°´Ù.
µû¶ó¼ ÀÛÀº ¿µ¿ªÀ» À¯ÁöÇÏ´Â °ÍÀº ±× ±íÀ̸¦ Á¦ÇÑÇÏ´Â °ÍÀÌ´Ù.
2. ³ôÀ̸ÊÀÇ µ¿Àû°»½ÅÀ» À§Çؼ´Â º¯°æµÈ Áö¿ª¿¡ ´ëÇÑ ÆíÂ÷Æ®¸®(Variance Tree)¸¦ ¿ÏÀüÇϰÔ
´Ù½Ã °è»êÇØ¾ß ÇÑ´Ù.
¾ÆÁÖ Å« ÆÐÄ¡ÀÇ °æ¿ì ½Ç½Ã°£ ¾îÇø®ÄÉÀ̼ǿ¡¼ °è»êÇϱ⿡´Â ³Ê¹« ´À¸®´Ù.
* °¢°¢ÀÇ Patch°´Ã¼´Â ¸Þ½¬ ±Ù»çÈ(ºÐÇÒ)¸¦ À§ÇØ È£ÃâµÈ´Ù.
ÆÐÄ¡´Â ½ºÅ©¸°»ó¿¡ Ç¥½ÃµÉ Æ®¶óÀ̾ޱÛÀÇ ¾Ï½ÃÀûÁÂÇ¥(x, y, z¿Í °°Àº ¸í½ÃÀû ÁÂÇ¥°¡ ¾Æ´Ô)¸¦
ÀúÀåÇÏ´Â ÀÌÁø »ï°¢ÇüÆ®¸®ÀÌ´Ù.
³í¸®ÀûÀÎ ¹æ½ÄÀ¸·Î ¹öÅØ½ºµéÀ» ÀúÀåÇÔÀ¸·Î½á ROAMÀº Æ®¶óÀ̾ޱ۴ç 36¹ÙÀÌÆ® ÀÌ»óÀÇ ·¥ »ç¿ë·®À»
Àý¾àÇÑ´Ù.
ÁÂÇ¥°ªµéÀº ·»´õ¸µ°úÁ¤ÀÇ ÀϺημ È¿À²ÀûÀ¸·Î °è»êµÈ´Ù.
* ºÐÇÒÀÌ ³¡³ÈÄ ¿£ÁøÀº ÀÌÀü ´Ü°è¿¡¼ »ý¼ºµÈ ÀÌÁø »ï°¢ÇüÆ®¸®¸¦ ¼øÈ¸ÇÑ´Ù.
ÀÌ Æ®¸®³»ÀÇ ¸®ÇÁ³ëµå(ÀÙ³ëµå- Â÷Àϵå³ëµå¸¦ °®Áö ¾Ê´Â ³ëµå)´Â ±×·¡ÇÈ ÆÄÀÌÇÁ¶óÀÎÀ» ÅëÇØ Ãâ·ÂµÉ
Çʿ䰡 ÀÖ´Â Æ®¶óÀ̾ޱ۵éÀÌ´Ù.
»ï°¢ÇüµéÀÇ ÁÂÇ¥´Â ¼øÈ¸ µµÁß Áï¼®¿¡¼ °è»êµÈ´Ù.
Height Map File Format : ³ôÀÌ¸Ê ÆÄÀÏÇü½Ä.
³ª´Â Çà¿ì¼±Çü½ÄÀ¸·Î ÀúÀåµÈ 8ºñÆ®ÀÇ ³ôÀÌ »ùÇÃÀ» ´ã°í ÀÖ´Â rawÆÄÀÏÀ» ÀоîµéÀÌ´Â °¡Àå ´Ü¼øÇÑ ¹æ¹ýÀ» ÅÃÇß´Ù.
ÀÌ´Â ³» ÇÁ·Î±×·¥¿¡¼´Â Á¤È®ÇÑ ÆÄÀÏ Æ÷¸ËÀÌ´Ù.
³ôÀ̸ÊÀº ¾ðÁ¦³ª ¸Þ¸ð¸®¿¡ Á¸ÀçÇÑ´Ù.
"°í±ÞÁÖÁ¦"¶õ¿¡¼ Á»´õ Å« µ¥ÀÌÅÍÁýÇÕ¿¡ ´ëÇØ ÀÌ ¾Ë°í¸®ÁòÀ» È®ÀåÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ³íÀÇÇÒ °ÍÀÌ´Ù.
Binary Triangle Tree : ÀÌÁø »ï°¢Çü Æ®¸®.
ÁöÇü¸Þ½¬¸¦ Ç¥ÇöÇϱâ À§ÇØ °Å´ëÇÑ »ï°¢ÇüÁÂÇ¥ÀÇ ¹è¿À» ÀúÀåÇÏ´Â ´ë½Å ROAM¾Ë°í¸®ÁòÀº ÀÌÁø »ï°¢Çü Æ®¸®¶ó°í
ÇÏ´Â ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.
ÀÌ ±¸Á¶Ã¼´Â ÁöÇüÀ» »ï°¢ÇüÇ÷Ô(ÀÛÀº »ï°¢Çü ¿µ¿ª)µé·Î ºÐÇÒÇÏ´Â Ãø·®ÀÚÀÇ °á°ú·Î º¼¼ö ÀÖ´Ù.
ÀÌ·¯ÇÑ Ç÷ԵéÀÇ ¼ÒÀ¯ÀÚµéÀº ³í¸®ÀûÀ¸·Î ¼·Î¸¦ ÀÌ¿ôÇÏ´Â °ü°è(ÁÂ, ¿ì, ÀÌ¿ôµî)·Î º»´Ù.
¸¶Âù°¡Áö·Î ¾î¶² ¼ÒÀ¯ÀÚ°¡ »ó¼ÓÀ» ÅëÇØ ÁöÇüÀ» ÁÖ¸é ÀÌ ÁöÇüÀº µÎ °³ÀÇ Â÷Àϵå»çÀÌ¿¡¼ µ¿µîÇÏ°Ô ºÐÇҵȴÙ.
ÀÌ·¯ÇÑ À¯Ã߸¦ ´õ È®ÀåÇϱâ À§ÇØ Ç÷ÔÀÇ ¿ø¼ÒÀ¯ÀÚ´Â ÀÌÁø »ï°¢ÇüÆ®¸®ÀÇ ·çÆ®³ëµåÀÌ´Ù.
´Ù¸¥ ¿ø¼ÒÀ¯ÀÚ´Â ±×µéÀÌ ¼ÒÀ¯ÇÑ Æ®¸®ÀÇ ·çÆ®³ëµåÀÌ´Ù.
LandScapeŬ·¡½º´Â Áö¿ªÀûÀÎ ÁöÇüµî·Ï±â¿Í °°Àº ¿ªÇÒÀ» ÇÑ´Ù.
Áï Ç÷ԵéÀÇ ¿ø¼ÒÀ¯ÀÚ¸¦ ÃßÀûÇÏ°í ¾î¶² Ç÷ÔÀÌ ¿©±â¿¡ ¼ÓÇÏ´ÂÁö¸¦ ±â·ÏÇÑ´Ù.
ÀÌ·¯ÇÑ µî·ÏÀº ¶ÇÇÑ ºÎ¸ð¿¡¼ Â÷Àϵå±îÁö ¸ðµç »ó¼Ó°ü°è¸¦ ±â·ÏÇÑ´Ù.
´õ ¸¹Àº Â÷Àϵ带 »ý¼ºÇϸé ÇÒ¼ö·Ï ÁöÇüÀº Á»´õ ¸¹ÀÌ Á¶»çµÈ´Ù.
Á» ´õ ±Ù»çȰ¡ ÇÊ¿äÇÑ ¿µ¿ªÀÇ °æ¿ì ±× ¿µ¿ª¿¡¼ÀÇ Àα¸(Â÷ÀϵåÀÇ ¼ö)¸¦ ´Ã¸²À¸·Î¼ ¿øÇÏ´Â Á¤µµÀÇ µðÅ×ÀÏÀ» ¾òÀ»¼ö ÀÖ´Ù.
¿¹Á¦·Î < figure 1 >À» ÂüÁ¶Ç϶ó.
 |
|
Figure
1. Bindary triangle tree structure levels 0~3
|
ÀÌÁø »ï°¢ÇüÆ®¸®´Â TriTreeNode±¸Á¶Ã¼¿¡ ÀÇÇØ Ç¥ÇöµÇ¸ç ROAMÀ» À§ÇØ ÇÊ¿äÇÑ ´Ù¼¸°¡ÁöÀÇ ±âº»ÀûÀÎ °ü°èµéÀ»
ÃßÀû À¯ÁöÇÑ´Ù.
ÀÌ·¯ÇÑ °ü°èµé¿¡ ´ëÇÑ Ç¥ÁØÀûÀÎ °üÁ¡Àº < figure 2 >¸¦ ÂüÁ¶Ç϶ó.
struct TriTreeNode {
¡¡¡¡¡¡¡¡ TriTreeNode *LeftChild; // Our Left child
¡¡¡¡¡¡¡¡ TriTreeNode *RightChild; // Our Right child
¡¡¡¡¡¡¡¡ TriTreeNode *BaseNeighbor;
¡¡¡¡¡¡¡¡ ¡¡¡¡ // Adjacent node,
below us
¡¡¡¡¡¡¡¡ TriTreeNode *LeftNeighbor;
¡¡¡¡¡¡¡¡ ¡¡¡¡ // Adjacent node,
to our left
¡¡¡¡¡¡¡¡ TriTreeNode *RightNeighbor;
¡¡¡¡¡¡¡¡ ¡¡¡¡ // Adjacent node,
to our right
};
 |
|
Figure
2. Basic binary triangle with children and neighbors.
|
³ôÀ̸ÊÀ» À§ÇÑ ¸Þ½¬ ±Ù»ç°ªÀ» »ý¼ºÇÒ ¶§ ¿ì¸®´Â ¿øÇÏ´Â µðÅ×ÀÏ ·¹º§¿¡ µµ´ÞÇÒ¶§±îÁö Æ®¸®¿¡ Â÷ÀÏµå ³ëµåµéÀ» Àç±ÍÀûÀ¸·Î
Ãß°¡ÇÑ´Ù.
ÀÌ·¯ÇÑ ´Ü°è°¡ ³¡³ª¸é ÀÌ Æ®¸®´Â ´Ù½Ã ¼øÈ¸µÇ°í À̹ø¿¡´Â ½ÇÁ¦ÀûÀÎ ½ºÅ©¸°»óÀÇ Æ®¶óÀ̾ޱ۷μ ¸®ÇÁ³ëµåµéÀ» ·»´õ¸µÇÑ´Ù.
ÀÌ·¯ÇÑ ÀÌÁßÆÐ½º¹æ½ÄÀº ±âº»ÀûÀÎ ¿£ÁøÀÌ µÇ¸ç ¸Å ÇÁ·¹ÀÓ¸¶´Ù ¸®¼ÂµÇ¾î¾ß ÇÑ´Ù.
Àç±ÍÀû¹æ¹ýÀÇ ÁÁÀºÁ¡ Áß ÇѰ¡Áö´Â ¾î¶² ¹öÅØ½º´ç µ¥ÀÌÅÍ(per Vertex Data)µµ ÀúÀåÇÏÁö ¾Ê´Â´Ù(¹öÅØ½º¿¡ °ü·ÃµÈ
¾î¶² µ¥ÀÌÅ͵µ ÀúÀåÇÏÁö ¾ÊÀ½(?))´Â Á¡Àε¥ ÀÌ´Â ·¥ÀÇ »ç¿ë·®À» ÁÙÀϼö ÀÖ´Ù.
»ç½Ç TriTreeNode±¸Á¶Ã¼´Â ³Ê¹« ÀÚÁÖ »ý¼ºµÇ°í ÆÄ±«µÇ¹Ç·Î °¡Àå È¿À²ÀûÀÎ ¹æ¹ýÀ¸·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ´Â
°ÍÀº ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù.
¶ÇÇÑ ¿©±â¿¡´Â ÀÌ·¯ÇÑ ±¸Á¶Ã¼µéÀÌ ¼ö¸¸°³°¡ ÀÖÀ¸¹Ç·Î ÇϳªÀÇ ¿©ºÐÀÇ Æ÷ÀÎÅ͵µ ¾öû³ª°Ô ¸¹Àº ¸Þ¸ð¸®¸¦ ¿ä±¸ÇϰԵȴÙ.
TriTreeNode±¸Á¶Ã¼´Â Á¤Àû ¸Þ¸ð¸® Ç®(pool)¿¡¼ ÇÒ´çµÇ¸ç µû¶ó¼ µ¿ÀûÀÎ ¸Þ¸ð¸®ÇÒ´çÀÇ ¿À¹öÇìµå¸¦ ÇÇÇÒ¼ö ÀÖÀ¸¸ç
»óŸ¦ ¸®¼¼ÆÃÇÏ´Â ºü¸¥ ¹æ¹ýÀ» Á¦°øÇÑ´Ù.
Explanation of LandScape Class : LandScape Ŭ·¡½ºÀÇ
¼³¸í.
LandScapeŬ·¡½º´Â ÁöÇü·»´õ¸µÀÇ Áö°Ü¿î ¼¼ºÎ»çÇ׿¡ ´ëÇÑ °í¼öÁØÀÇ Ä¸½¶È·Î µ¿ÀÛÇÑ´Ù.
¾îÇø®ÄÉÀ̼ÇÀÇ °üÁ¡¿¡¼ ÁöÇüÀº ¸î°¡ÁöÀÇ °£´ÜÇÑ ¼Â¾÷ÇÔ¼ö¸¦ È£ÃâÇÑ ÈÄ¿¡ ½ºÅ©¸°»ó¿¡ ³ªÅ¸³ª¾ß ÇÑ´Ù.
¿©±â¿¡ LandScapeŬ·¡½º Á¤ÀÇÀÇ Áß¿äÇÑ ºÎºÐÀÌ ÀÖ´Ù.
class Landscape {
public:
¡¡¡¡void Init(unsigned char *hMap);
¡¡¡¡¡¡¡¡ // Initialize the whole process
¡¡¡¡void Reset();
¡¡¡¡¡¡¡¡ // Reset for a new frame
¡¡¡¡void Tessellate();
¡¡¡¡¡¡¡¡ // Create mesh approximation
¡¡¡¡void Render();
¡¡¡¡¡¡¡¡ // Render current mesh static
¡¡¡¡TriTreeNode *AllocateTri();
¡¡¡¡¡¡¡¡ // Allocate a new node for the mesh
protected:
¡¡¡¡static int m_NextTriNode;
¡¡¡¡¡¡¡¡ // Index to the next free TriTreeNode
¡¡¡¡static TriTreeNode m_TriPool[];
¡¡¡¡¡¡¡¡ // Pool of nodes for tessellation
¡¡¡¡Patch m_aPatches[][];
¡¡¡¡¡¡¡¡ // Array of patches to be rendered
¡¡¡¡unsigned char *m_HeightMap;
¡¡¡¡¡¡¡¡ // Pointer to Height Field data
};
LandScapeŬ·¡½º´Â Ä¿´Ù¶õ Á¤»ç°¢ Ç÷Եé(Á¤»ç°¢Çü ¿µ¿ª)À» °ü¸®ÇÏ¸ç °¢ÀÚ ÀÚ½ÅÀÇ Ç÷ÔÀ» °¡Áø ´Ù¸¥ LandScape
°´Ã¼¿Í µ¿ÀÛÇÑ´Ù.
ÀÌ·¯ÇÑ ¼³°è´Â Á»´õ Å« ÁöÇüÀ» ºÒ·¯µéÀÌ°í ½ÍÀ» ¶§ À¯¿ëÇÏ´Ù.
ÃʱâȰúÁ¤¿¡¼ ³ôÀÌ ¸ÊÀº Á»´õ °ü¸®°¡ ¿ë¾ÆÇÑ Á¶°¢µé·Î ºÐÇÒµÇ¸ç »õ·Î¿î Patch°´Ã¼·Î µÈ´Ù.
ÀÌ·¯ÇÑ Á¶°¢µéÀº PatchŬ·¡½º°¡ µÇ¸ç ¿ì¸®°¡ °¡Àå ¸¹Àº ½Ã°£À» ¼ÒºñÇÏ´Â ¸Å½áµåµé°ú ¿¬°áµÈ´Ù.
ÀÌ ÇÔ¼öÀÇ ´Ü¼ø¼ºÀ» ÁÖ¸ñÇ϶ó.
LandScapeŬ·¡½º´Â Ưº°È÷ ¿äÁò À̿밡´ÉÇÑ Çϵå¿þ¾î z¹öÆÛ¸µÀÇ ÀÌÁ¡ÀÌ ÁÖ¾îÁö´Â ·»´õ¸µ ÆÄÀÌÇÁ¶óÀο¡ ½±°Ô Àû¿ëÇÒ¼ö
ÀÖµµ·Ï ¼³°èµÇ¾ú´Ù.
ÀÌ µ¥¸ð¸¦ ´õ °£´ÜÈ÷ ÇÏ°Ô Çϱâ À§ÇØ ¸î°¡ÁöÀÇ Àü¿ªº¯¼öµéÀÌ »ç¿ëµÈ´Ù.
¢º Explanation
of Patch Class