TTA °£Ç๰ - ICT Standard Weekly

Ȩ > Ç¥ÁØÈ­ Âü¿© > TTA°£Ç๰ > ICT Standard Weekly

±â¼úÇ¥ÁØÀ̽´

´Ù¿î·Îµå (2015-52È£)
Æ®À§ÅÍ ÆäÀ̽ººÏ ¹ÌÅõµ¥ÀÌ

[¸ÖƼ¹Ìµð¾îÀÀ¿ë] glTF: ±×·¡ÇȽº µ¥ÀÌÅÍ ±³È¯À» À§ÇÑ »õ·Î¿î Ç¥ÁØ

»õ·Î¿î Ç¥ÁØÀÇ ¹ßÇ¥

2015³â 10¿ù 19ÀÏ ¹Ì±¹ »÷ÇÁ¶õ½Ã½ºÄÚ¿¡¼­ ¿­¸° HTML5 DevCon(°³¹ßÀÚ ´ëȸ)¿¡¼­´Â ±×·¡ÇȽº ºÐ¾ßÀÇ ´ëÇ¥ÀûÀÎ Open ConsortiumÀÎ Khronos GroupÀÌ glTF(OpenGL Transmission Format) Ç¥ÁØÀ» ¹ßÇ¥Çß´Ù. À̳¯Àº ¸¶Ä§ ¹Ì±¹ ÈÞ½ºÅÏ¿¡¼­ Khronos GroupÀÇ ´ëÇ¥Àû Ç¥ÁØ ½ÉÀÇ È¸ÀÇÀÎ Khronos F2F meeting(face-to-face meeting)ÀÌ ¿­¸®´Â ù³¯À̱⵵ ÇØ¼­, ¾çÂÊ È¸ÀÇ ¸ðµÎ¿¡¼­ glTF Ç¥ÁØÀÇ ¹ßÇ¥°¡ °¡Àå Å« È­Á¦¿¡ ¿Ã¶ú´Ù.

µðÁöÅÐ ÀڷḦ ±³È¯ÇØ¾ß ÇÏ´Â ºÐ¾ß¿¡¼­´Â ÀüüÀûÀ¸·Î ½ÇÁúÀû Ç¥ÁØÀ¸·Î »ç¿ëµÇ´Â µ¥ÀÌÅÍ Æ÷¸Ë(data format)ÀÌ ±»°ÇÇÏ°Ô È®º¸µÈ °æ¿ì°¡ ¸¹´Ù. ¿Àµð¿À ºÐ¾ß¿¡¼­´Â mp3, ºñµð¿À ºÐ¾ß¿¡¼­´Â h.264, À̹ÌÁö ºÐ¾ß¿¡¼­´Â jpeg, ÀÌ·± ½ÄÀ¸·Î È®½ÇÇÑ ÆÄÀÏ Æ÷¸ËÀÌ ³Î¸® »ç¿ëµÇ°í ÀÖ´Ù. ¹Ý¸é¿¡, 3D ±×·¡ÇȽº ºÐ¾ß¿¡¼­´Â ¾ÆÁ÷±îÁö È®½ÇÇÑ ÆÄÀÏ Æ÷¸ËÀÌ È®º¸µÇÁö ¾Ê¾Ò´Ù. ¹°·Ð, Wavefront OBJ Æ÷¸ËÀ̳ª, STL(STereoLithography) Æ÷¸Ë µîÀÌ ºñ±³Àû ³Î¸® »ç¿ëµÇ´Â ÆíÀÌÁö¸¸, À̵éÀº Á¦ÇÑµÈ ¿ëµµ·Î ÀϺΠÀÀ¿ë¿¡ ÀûÇÕÇÑ Á¤µµÀÌ´Ù.

3D ±×·¡ÇȽº ºÐ¾ßÀÇ ÆÄÀÏ Æ÷¸ËÀÌ È®¸³µÇÁö ¸øÇÏ´Ù º¸´Ï, ½ÃÀå¿¡¼­´Â ¿©·¯ °¡Áö Æ÷¸ËµéÀÌ È¥¿ëµÇ°í ÀÖ°í, ±× °á°ú·Î ÀÀ¿ë ÇÁ·Î±×·¥ ¶Ç´Â ¾Û °³¹ßÀÚµéÀº ¾î¶°ÇÑ Æ÷¸ËÀ» »ç¿ëÇÒÁö °áÁ¤ÇÏ´Â °Íµµ ¹®Á¦¿´°í, °áÁ¤ÇÑ ÈÄ¿¡´Â À̸¦ Áö¿øÇÏ´Â ÆÄÀÏ ·Îµù ÅøÀ̳ª, ¶óÀ̺귯¸®¸¦ È®º¸ÇÏ´Â °Íµµ ¹®Á¦¿´´Ù.

3D ±×·¡ÇȽº ºÐ¾ß¿¡ ¶Ñ·ÇÇÑ Æ÷¸ËÀ» Á¤Çϱ⠾î·Á¿ü´ø °¡Àå Å« ÀÌÀ¯´Â ÇÊ¿ä·Î ÇÏ´Â µ¥ÀÌÅͰ¡ ´Ù¾çÇß´Ù´Â Á¡À» ²ÅÀ» ¼ö ÀÖ´Ù. 3D ±×·¡ÇȽº ºÐ¾ßÀÇ ´ëÇ¥ÀûÀÎ ÀÀ¿ë ºÐ¾ßÀÎ ½Ç½Ã°£ ÄÄÇ»ÅÍ ¾Ö´Ï¸ÞÀÌ¼Ç Àç»ý ÇÁ·Î±×·¥À» º»´Ù¸é, ÇÁ·Î±×·¥ÀÇ ÀÔÀå¿¡¼­´Â ÀÏ´Ü Àç»ýÇÒ ¹°Ã¼¸¦ Á¤ÀÇÇÏ´Â 3Â÷¿ø ±âÇÏÇÐ ¸ðÇü°ú À̵éÀÇ °áÇÕ °ü°è¸¦ Ç¥ÇöÇÑ, 3Â÷¿ø ±âÇÏÇÐ ÀÚ·áµéÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ 3Â÷¿ø ¹°Ã¼¸¦ È­¸é¿¡ Àç»ýÇÒ ¶§´Â ´Ù½Ã ¹°Ã¼ÀÇ ¹°Áú Ư¼º(material property)°ú ÅØ½ºÃ³(texture) Á¤º¸µéÀÌ ÈçÈ÷ 2Â÷¿ø À̹ÌÁö ÇüÅ·ΠÁ¦°øµÇ¾î¾ß ÇÑ´Ù. ÀÌÁ¦ ÅØ½ºÃ³¸¦ ÀÔÇô¼­ ÀÔüÀûÀ¸·Î Àß Ç¥ÇöµÈ 3Â÷¿ø ¹°Ã¼´Â ½Ã°£ÀÌ È帧¿¡ µû¶ó, ÀûÀýÇÑ µ¿ÀÛÀ» Çϵµ·Ï, ¾Ö´Ï¸ÞÀÌ¼Ç Àڷᳪ, ½ºÅ² Á¦¾î ÀÚ·áµéÀÌ ÇÊ¿äÇÏ´Ù. À̵éÀº 3Â÷¿ø Ä¿ºê(curve)³ª, ÄõÅʹϾð(quaternion), ½ºÅ² Çà·Ä(skin matrix) µîÀÇ µ¶Æ¯ÇÑ ÀÚ·á·Î Á¦°øµÇ¾î¾ß ÇÑ´Ù. ÃÖ±Ù¿¡´Â Á» ´õ »ç½ÇÀûÀÎ »ö»ó Ç¥ÇöÀ» À§Çؼ­ ½ÇÁ¦ »ç¿ëµÇ´Â ½¦ÀÌ´õ ÇÁ·Î±×·¥(shader program)±îÁö Á¦°øÇÏ´Â °æ¿ìµµ À־, ÇÊ¿ä·Î ÇÏ´Â ÀÚ·áµéÀÌ ´õ¿í ´Ù¾çÇØÁ³´Ù.

ÀÌ¿¡ µû¶ó, ÇöÀçÀÇ 3D ±×·¡ÇȽº ºÐ¾ß¿¡¼­´Â ±âÇÏÇÐ ÀÚ·á, ÅØ½ºÃ³, Ä¿ºê µîÀÇ Æ¯Á¤ Á¾·ùÀÇ ÀÚ·á¿¡ ´ëÇÑ ÆÄÀÏ Æ÷¸ËÀº ³ª¿ÍÀÖ°í, ³ª¸§´ë·Î °¢ Á¾·ùº°·Î ³Î¸® ¾²À̴ ǥÁصµ ÀÖ´Â »óȲÀÌÁö¸¸, Àü¹ÝÀûÀ¸·Î ÇÊ¿äÇÑ ÀÚ·á Àüü¸¦ Çϳª·Î ÅëÇÕÇØ¼­ °ü¸®Çϴ ǥÁØÀº ¾ÆÁ÷±îÁö È®¸³µÈ °ÍÀÌ ¾ø¾ú´Ù. glTF(OpenGL Transmission Format)Àº ÀÌ·¯ÇÑ ´Ù¾çÇÑ ¸ñÀûÀÇ 3D ±×·¡ÇȽº ÀÚ»êµéÀ» ÅëÇÕÇØ¼­ °ü¸®Çϵµ·Ï ÇØÁÖ°í, ƯÈ÷ OpenGL, OpenGL ES, WebGL µîÀÇ OpenGL ÆÐ¹Ð¸®ÀÇ ±×·¡ÇȽº ¶óÀ̺귯¸®µé¿¡¼­ ½±°Ô ÀÓÆ÷Æ®(import)/¿¢½ºÆ÷Æ®(export)°¡ °¡´ÉÇϵµ·Ï Ç¥ÁØÈ­µÈ Åøµé°ú ÇÔ¼öµé±îÁö Á¦°øÇÏ´Â °ÍÀ» ¸ñÇ¥·Î ½ÃÀÛµÈ Ç¥ÁØ ¸í¼¼ÀÌ´Ù.

 

glTFÀÇ ³»ºÎ ±¸Á¶

glTF´Â Ç¥ÁØÀÇ Á¦Á¤¿¡ Âø¼öÇÒ ¶§, ¡°JPEG for 3D¡±¶ó´Â ½½·Î°ÇÀ» ³»°É¾ú°í, ÃÖ´ëÇÑÀÇ »ç¿ëÀÚ ¹× ÇÁ·Î±×·¡¸Ó ÆíÀǼºÀ» È®º¸ÇÏ·Á°í ³ë·ÂÇϰí ÀÖ´Ù. 3D ÀÚ»ê(asset)µéÀ» ´Ù¾çÇÑ ÀÀ¿ë ÇÁ·Î±×·¥µé°ú ¾Û¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çϰí, ƯÈ÷ WebGL, OpenGL ES, OpenGLÀ» »ç¿ëÇÏ´Â ¾Ûµé¿¡ ÃÖÀûÈ­ÇÏ´Â °ÍÀ» ¸ñÇ¥·Î ÇÑ´Ù.

glTFÀÇ ³»ºÎ ±¸¼ºÀ¸·Î´Â ¿ì¼± »óÀ§ÀÇ ³ëµå ±¸Á¶(node hierarchy)¸¦ ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï, ±âÁ¸ÀÇ JSON(JavaScript Object Notation)À» »ç¿ëÇØ¼­ Ä«¸Þ¶ó, ±âÇÏÇÐ ±¸Á¶, ¾Ö´Ï¸ÞÀ̼Ç, ½ºÅ², ½¦ÀÌ´õ, ÅØ½ºÃ³, ±¤¿ø, ¹°Áú Ư¼º µîµîÀÇ ´Ù¾çÇÑ ³ëµåµéÀ» Á¦°øÇϰí ÀÖ´Ù. ½¦ÀÌ´õ ±¸Á¶´Â OpenGL µî¿¡¼­ Á÷Á¢ »ç¿ë °¡´ÉÇÑ ½¦ÀÌ´õ ÇÁ·Î±×·¥Àº ¹°·ÐÀ̰í, ½¦ÀÌ´õ¿¡¼­ Áï°¢ÀûÀ¸·Î ÇÊ¿ä·Î ÇÏ´Â ¹°Áú Ư¼º(material property)À» È®Àå ¸í¼¼(extension) ÇüÅ·ΠÃß°¡ÇÒ ¼ö ÀÖµµ·Ï Çß´Ù. ÅØ½ºÃ³ À̹ÌÁö´Â JPEG µîÀÇ ¾ÐÃà ÆÄÀÏ Æ÷¸ËÀ» ÁÖ·Î »ç¿ëÇØ¼­, Àü¼Û È¿À²À» ³ôÀÌ·Á°í Çß´Ù. ¹°Ã¼ÀÇ ±âÇÏÇÐ ±¸Á¶¿Í ¾Ö´Ï¸ÞÀÌ¼Ç ±¸Á¶´Â ¸ðµÎ ÀÌÁø ÀڷḦ »ç¿ëÇϵµ·Ï ÇØ¼­, ¿ª½Ã Àü¼Û È¿À²À» ±Ø´ëÈ­Çß´Ù.

³»ºÎ ¼³°è¸¦ º¸¸é, ÀÚ·áÀÇ ´Ù¿î·Îµå³ª Àü¼Û È¿À²À» À§Çؼ­, ¸Þ½¬ ±¸Á¶, ¾Ö´Ï¸ÞÀÌ¼Ç µ¥ÀÌÅÍ µî¿¡¼­ ÀÌÁø Ç¥Çö(binary representation)À» ´ëÆø µµÀÔÇß°í, OpenGL¿¡ÀÇ ÃÖÀûÈ­¸¦ À§Çؼ­´Â OpenGLÀÇ °íÀ¯ ÀÚ·áÇüµéÀ» ±×´ë·Î »ç¿ëÇØ¼­ ÀÚ·áÀÇ ÆÄ½Ì(parsing)À̳ª º¯È¯¿¡ ÇÊ¿äÇÑ ½Ã°£À» ÃÖ¼ÒÈ­Çß´Ù. Ç¥Çö·Â¿¡¼­´Â °¡´ÉÇÑ ÇÑ ¸¹Àº 3Â÷¿ø ¾Ö´Ï¸ÞÀ̼ÇÀ» Ä¿¹öÇÒ ¼ö ÀÖµµ·Ï, ³ëµå ±¸Á¶(node hierarchy), ¹°Áú Ư¼º, ¾Ö´Ï¸ÞÀ̼Ç, Ä«¸Þ¶ó, ±¤¿ø µîÀÇ ¼³Á¤ÀÌ °¡´ÉÇÏ°Ô Çß´Ù. ¶ÇÇÑ, º¥´õ(vendor)µéÀÌ ÀÚÀ¯·Ó°Ô ÀÚ½ÅÀÇ È®Àå ¸í¼¼(extension)¸¦ Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï ÇØ¼­, äÅÃÀ²À» ³ôÀÌ·Á°í ³ë·ÂÇϰí ÀÖ´Ù.

glTF´Â Á¦Á¤ °úÁ¤ÀÌ ¿ÏÀü °ø°³µÇ¾î ÀÖ¾ú°í, Ȱ¹ßÇÑ Åä·ÐÀ» °ÅÃÄ, 10¿ù 19ÀÏ¿¡ 1.0 ¹öÀüÀÌ ÃÖÁ¾ °øÇ¥µÇ¾ú´Ù. ÇöÀç glTF¸¦ äÅÃÇÑ À¯¸í ½Ã½ºÅÛµé·Î´Â three.js, babylon.js µîÀÇ ·Î´õ(loader)°¡ ÀÖ´Ù. ¶ÇÇÑ Å©·Ò ºê¶ó¿ìÀú¿¡¼­ ÀÛµ¿ÇÏ´Â WebGL ±â¹Ý Virtual Globe and Map EngineÀÎ Cesium ¿£Áø¿¡¼­µµ glTF¸¦ äÅÃÇϰí ÀÖ´Ù. À̿ʹ º°µµ·Î, ±âÁ¸ÀÇ COLLADA ³»¿ëµéÀ» glTF·Î º¯È¯ÇØ ÁÖ´Â collada2glTF ÄÁ¹öÅ͸¦ ºñ·ÔÇÏ¿©, COLLADA to glTF ÄÁ¹öÅÍ, FBX to glTF ÄÁ¹öÅÍ µîÀÌ Á¦°øµÈ´Ù.

glTF¿¡´Â ´Ù¾çÇÑ È®Àå ¸í¼¼(extension)µéÀÌ ÀÌ¹Ì Á¤ÀǵǾî Àִµ¥, ÇöÀç °¡Àå Áß¿äÇÑ °ÍÀ¸·Î´Â Open3DGC(Open 3D Graphics Compression) ¶óÀ̺귯¸®¸¦ µé ¼ö ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸®´Â MPEG 3D Ç¥ÁØ¿¡ ´ëÇÑ ±×·¡ÇȽº ÄÚµ¦(graphics codecs)À» ¸Å¿ì È¿°úÀûÀ¸·Î Á¦°øÇÑ´Ù. ÇöÀç Open3DGC ÀÎÄÚ´õ´Â C++·Î ±¸ÇöµÇ¾î Á¦°øµÇ°í ÀÖ°í, ÀÌ¿¡ ´ëÀÀµÇ´Â µðÄÚ´õ´Â C++¿Í JavaScript ÇüÅ·ΠÁ¦°øµÇ¾î, OpenGLÀº ¹°·Ð, WebGL¿¡¼­µµ È¿°úÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. 3Â÷¿ø ÀÚ·áµé¿¡ ´ëÇÑ ÀÌ ¶óÀ̺귯¸®ÀÇ ¾ÐÃà·üÀº ¸Å¿ì ¿ì¼öÇØ¼­, ÀϹÝÀûÀÎ ¾ÐÃà ¹æ¹ýÀ¸·Î »ç¿ëµÇ´Â gzip µîÀÇ ±â¹ýµé¿¡ ºñÇØ È®½ÇÇÑ ¿ìÀ§¸¦ º¸¿©ÁØ´Ù. À̿ܿ¡µµ ´Ù¾çÇÑ È®Àå ¸í¼¼µéÀÌ ¼Ó¼Ó °³¹ßµÇ°í ÀÖ´Ù.

 

°á¾ð

ÀÌÁ¦±îÁö ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ, glTF´Â 3D ±×·¡ÇȽº ºÐ¾ßÀÇ ¸ðµç ÀÚ»ê(asset)µéÀ» Çϳª·Î ÅëÇÕÇØ¼­ °ü¸®Çϱâ À§ÇÑ Ç¥ÁØ ÆÄÀÏ Æ÷¸ËÀ¸·Î Á¦½ÃµÈ ±¹Á¦ Ç¥ÁØÀÌ´Ù. Khronos Group¿¡¼­ »õ·ÎÀÌ Á¦¾ÈÇÑ Ç¥ÁØÀÌÁö¸¸, Á¦Á¤ °úÁ¤¿¡¼­ »ó´çÈ÷ ¿À·§µ¿¾È °ø°³ Åä·ÐÀ» °ÅÃÆ°í, ¿©·¯ ½Ã½ºÅ۵鿡¼­ ÀÔÃâ·Â ¹æ¹ýÀ¸·Î ÀÌ¹Ì Ã¤ÅÃÇϱ⵵ ÇßÀ¸¹Ç·Î, ±Þ¼ÓÇÏ°Ô º¸±ÞµÉ °ÍÀÌ ºÐ¸íÇØ º¸ÀδÙ. ±âÁ¸ÀÇ OpenGL »ç¿ëÀÚ¶ó¸é, »õ·Î °³¹ßÇÏ´Â ÇÁ·Î±×·¥À̳ª ¾Û¿¡ »õ·Î¿î Ç¥ÁØÀ» Àû¿ëÇØ º¸´Â °ÍÀº È®½ÇÇÑ À̵æÀ» °¡Á®¿Ã °ÍÀº ºÐ¸íÇÏ´Ù. ´Ù¸¸, ±× È®»ê ¼Óµµ°¡ °ú¿¬ ´Ù¸¥ ºÐ¾ßÀÇ ÆÄÀÏ Æ÷¸Ëµé, Áï mp3, jpeg, h.264 µî¿¡ ÇÊÀûÇÒ ¸¸Å­ ºü¸¦Áö¿¡ ´ëÇØ¼­´Â ¾ÆÁ÷±îÁö´Â È®½ÇÇÏÁö ¾Ê´Ù. ¼º°øÇÒ °ÍÀº ºÐ¸íÇϵÇ, ¿ÏÀüÇÑ ¼º°øÀÌ µÉÁö, Àý¹ÝÀÇ ¼º°øÀÌ µÉÁö´Â ÁöÄѺ¸¾Æ¾ß ÇÒ °ÍÀ¸·Î º¸ÀδÙ.

¹é³«ÈÆ (¢ß¸ð¹ÙÀϱ׷¡ÇȽº ´ëÇ¥, oceancru@gmail.com)

* º» ±ÛÀº ÀúÀÚÀÇ ÀǰßÀÏ »Ó TTA ±â°üÀÇ ÀÔÀå°ú´Â ¹«°üÇÕ´Ï´Ù.