ã·ãã¥ã¬ãŒãããã·ãŒã³ã«é¡é¢åå°ãããããæãéå°ããå¿ããããŸãã¯èããŠããªãå Žåããã®èšäºã¯åœ¹ã«ç«ããªãå¯èœæ§ããããŸãã
Eric Lengelã«åŸããç§ã¯OpenGLè¡šçŸã®è¡šçŸãããå³å®ããŸãããã以äžã®èæ ®äºé ã¯ãã¹ãŠä»ã®3次å ã¢ããªã³ã°ã·ã¹ãã ã«å®¹æã«æ¡åŒµã§ããŸãã

3Dåå°
3Dã·ãŒã³ã«åå°é¢ãååšããå Žåãããèªäœãåå°é¢ã®å¹³é¢ã«ããã¡ã€ã³ãã¥ãŒã«ã¡ã©ã®åå°ã§ããè£å©ãã¥ãŒã«ã¡ã©ã䜿çšããŠã·ãŒã³ãã¬ã³ããªã³ã°ããããšã«ãããåå°ãååŸããã®ãäžè¬çã§ãã
å³ 1.äžéšã«ã¡ã©ã¯ãåå°é¢ãå«ãã·ãŒã³ãã¬ã³ããªã³ã°ãããã¡ã€ã³ã«ã¡ã©ã§ãã äžã®ã«ã¡ã©ã¯ãåå°ãã¬ã³ããªã³ã°ããããã«èšèšãããè£å©ã«ã¡ã©ã§ãã X軞ã¯ãäž¡æ¹ã®å¯èŠæ§ã®ãã©ãããïŒ OpenGLã«æ¡çšããããã¥ãŒ ïŒã®èŠ³æž¬è ã«åããããŠãããåå°ãã¬ã³ããªã³ã°ããã«ã¡ã©ã®åº§æšç³»ãå·Šæã§ããããšã¯æããã§ãã
è£å©ã«ã¡ã©ïŒåå°ã«ã¡ã©ïŒã§åå°ãã¬ã³ããªã³ã°ãããšã芳å¯è ãšåå°é¢ã®éã«ãããªããžã§ã¯ãã®äžéšãçµæã®ã¬ã³ããªã³ã°ã«è¡šç€ºãããç»åã«äžèŠãªã¢ãŒãã£ãã¡ã¯ãã圢æãããããšããããŸãã æçµã¬ã³ããªã³ã°ããåå°ã·ãŒã³ã®äžèŠãªéšåãåãåãããã«ãããã°ã©ããŒã¯ãåå°ã«ã¡ã©ãã芳å¯ããã3次å ã·ãŒã³ã®ããªã¥ãŒã ã®äžéšãä»®æ³ãµãŒãã§ã¹ã«å¶éããããŸããŸãªææ³ã䜿çšããŠããã®ãµãŒãã§ã¹ã®å¢çãè¶ ããã·ãŒã³ã®èŠèŠåãäžæããŸãã
3Dã¢ããªã³ã°ã®äžè¬çãªã€ããªãã®ãŒã«ãããåã ã®ã¬ã³ããªã³ã°å®è£ ã«åºæã®ãã©ã°ã¡ã³ãã·ã§ãŒããŒãªã©ã«ãç Žæ£ãåœä»€ã䜿çšã§ããŸãïŒããšãã°ãAGALMiniAssemblerã®ãkillãïŒããã ãã ã©ã®ããã»ããµã§ãåçã«æ©èœãããŠãããŒãµã«ãœãªã¥ãŒã·ã§ã³ãå¿ èŠãªå Žåã¯ã䟡å€ããããŸãããšãªãã¯ã¬ã³ã²ã«ãææ¡ããææ³ã«æ³šæããŠãã ããã
ãšãªãã¯ã©ã³ã²ã«ã®ã¢ã€ãã¢ã¯ãèŠçã®ãã©ãããã®è¿ãã®èšç»ãäžçš®ã®å²ç·å¹³é¢ã«ãªããæçµã¬ã³ããªã³ã°ã§æãŸãããªãã¡ã€ã³ã·ãŒã³ã®ããªã¥ãŒã ãåé¢ããããã«æ圱è¡åãä¿®æ£ããããšã§ããã
以äžã§ã¯ã åæãžãªã¡ããªã®åºæ¬è¡šçŸãæãåºããŠãã ããã
å®å®ã®å¹³é¢
䟿å®äžã次ã®è¡šèšæ³ã«åŸããŸãã
é£è¡æ©
空é3Dãã€ã³ã
å³ 2.å¹³é¢ã¯ãã®ç¹ã«ãã£ãŠå®å šã«æ±ºå®ãããŸã
å€ãã®å Žåãå¹³é¢æ¹çšåŒã¯æ¬¡ã®ããã«èšè¿°ãããŸãã
ã©ãã§
æ£èŠåãããæ³ç·ãã¯ãã«ã®å ŽåãåŒ
å¹³é¢ããä»»æã®ç¹ãŸã§ã®è·é¢ãèŠã€ããããã«äœ¿çšã§ããŸã
å¹³é¢ã4次å ãã¯ãã«ã§æžããšäŸ¿å©ã§ãã ç°¡åã«èšããšãå¹³é¢ã®æ¹çšåŒã¯æ¬¡ã®ããã«èšè¿°ãããŸãã
å¹³é¢å€æ
å¹³é¢ã®ç©ºéå€æã®ç¹åŸŽãç解ããã«ã¯ã æ³ç·ãã¯ãã«ã®å€æã«æ³šæãæãå¿ èŠããããŸãã ããªãŽã³ã¢ãã«ã®ç©ºéå€æã§ã¯ããã¯ãã«ãããªãŽã³ã®è¡šé¢ã®æ¥ç·ãšæ³ç·ãã¯ãã«ã®åäœã¯ç°ãªããŸãã å€ãã®å Žåã æ¥ç·ãã¯ãã«ã¯ã2ã€ã®å€æãããé ç¹éã®å·®ãšããŠè¡šãããšãã§ããŸãã 2ã€ã®èªç¶ã«å€æãããç¹ã®éã§ãçµæãšããŠãå€æããããã¯ãã«ã®æ§è³ªã¯ç§ãã¡ã®æåŸ ã«æ²¿ã£ãŠããŸãã ãããã空éå€æã®äžè¬çãªã±ãŒã¹ã§ã¯ãè¡å
ãã¯ãã«ã¯æ¥ç·ã§ãããã
ãã
ãã¯ãã«ã®ä¹ç®ã¯æ¬¡ã®ããã«æžãããšãã§ããããšãèŠããŠãããŠãã ããïŒå®å šã«åçïŒïŒ
以æ¥
ãã ããæ³ç·ãã¯ãã«ãšã¯å¯Ÿç §çã«ãå次座æšã®å¹³é¢ã«ã¯ãŒã以å€ã®å€ããããŸã
ãã®å¹³é¢å ã«ãããã€ã³ãã«å¯ŸããŠã æ³ç·ãã¯ãã«å€æã®ç¹åŸŽãèæ ®ããŠç©ºéå€æãé©çšããåŸã®ã座æšåç¹ããå¹³é¢ãŸã§ã®è·é¢
ãããã®èšç®ã§å€æè¡åã䜿çšããŸãã
ãããªãã¯ã¹ãããããªãã¯ã¹ãžã®éå€æ
éè¡åã転眮ããïŒ
ç§ãã¡ã¯ãããèŠãããšãã§ããŸã
ããã«ãå¹³é¢ã空éå€æã®å ±å€çæ§è³ªã«åŸãããšãäžå¯æ¬ ã§ãã
éèŠæ圱
éèŠæ圱ã¯ã芳枬è ã®æ圱é¢ã«å¥¥è¡ãæãäœæããããã«äœ¿çšãããŸããéèŠå€æè¡åã¯ãå¯èŠæ§ãã©ãããã®ç©ºéãå¯èŠæ§ãã¥ãŒãã®æ£èŠåããã空éã«åæ ããå¿ èŠããããŸãã å¯èŠæ§ã®ãã©ãããã¯ãéåžžãäžãäžãå·Šãå³ãé ãè¿ããŸãã¯æ¿æ·¡ãã¢ã¹ãã¯ããè¿ãé ããšãã芳ç¹ã§è¡šçŸã§ããŸããäžéšã®OpenGLå®è£ ã«ã¯ãå·Šå³äž¡æ¹ã®åº§æšç³»ãæäœããããŒã«ããããŸãã åã·ã¹ãã ã§ã®ãããªãã¯ã¹ãšãã¯ãã«ã®ä¹ç®ã®éããšé åºã¯ãããã°ã©ããŒã«ãšã£ãŠæãããªã¯ãã§ãã
å³ 3.ã³ã³ãã¥ãŒã¿ãŒã°ã©ãã£ãã¯ã¹ã·ã¹ãã ã®å¯èŠæ§ïŒéå°ïŒã®è§éå°ã¯ãåŸç¶ã®ã¬ã³ããªã³ã°ã®ããã«ãåŽé¢ããæ圱軞ã«æ²¿ã£ãŠå¯èŠæ§ãŸãŒã³ãåãåããŸãã ãã¥ãŒã®ã«ã¡ã©ã®ã¹ããŒã¹ã«ããå¯èŠæ§ã®ãã©ãããã¯ããã©ãããã®äžéšã座æšç³»ã®äžå¿ã«ãããã«ã¡ã©ããã®ãã¥ãŒã®æ¹åã軞ãšå察ã«ãªãããã«ãå³æ座æšç³»ã«é 眮ãããŸã
äžè¬ã«ãå¯èŠæ§ãã©ãããã¯éåžžã®è§éå°ã®åœ¢ç¶ã§ããå¿ èŠã¯ãªããé察称ã«ããããšãã§ããŸãããã®ãããäžãäžãå·Šãå³ãé ãè¿ã®ã¢ãã«ã¯ãæéå°ã®ç¹åŸŽã説æããã®ã«é©ããŠããŸãïŒãåŸæè§ãã©ããããïŒã å¹³é¢ã§å²ãŸããããªã¥ãŒã ã§éããããå¯èŠæ§ã®ç«æ¹äœã® ãå§çž®ç©ºéã
æåã®å¯èŠæ§ãã©ãããã§èšç»ãããªããžã§ã¯ãã®ã«ãããªããæŽçããã«ã¯ãã¢ãã«ã§äœ¿çšãããéèŠæ圱è¡åãå€æŽããå¿ èŠããããŸãã OpenGLããã°ã©ããŒã¯ã ã¡ã€ã³ã® OpenGL ããã¥ã¡ã³ãã® Webãµã€ãã§ãã®ãããªãããªãã¯ã¹ã®ãã©ã¡ãŒã¿ãŒãèŠã€ããããšãã§ããŸããFlashããã°ã©ããŒïŒAS3ïŒã¯PerspectiveMatrix3Dã¯ã©ã¹ã䜿çšããå¯èœæ§ãæãé«ããDirect3Dããã°ã©ããŒã¯ãœãŒã¹ãæã¡ã Androidã®ã©ã€ã¿ãŒã¯å¿ èŠãªãã¹ãŠãandroid.opengl.Matrixã¯ã©ã¹ãªã©ã§èŠã€ããŸãã .dã ã¡ã€ã³ã¢ã€ãã¢ãç解ããŠãã誰ãããè¿œå æ©èœã䜿çšããŠç¬èªã®ã¯ã©ã¹ã®é è¿æ³å€æãæ¡åŒµããããšã奜ãå¯èœæ§ããããŸãã
ãã¥ãŒã«ã¡ã©ã®å¯èŠæ§ã®ãã©ãããã®ç©ºéããã®ç¹ã¯ãããšãã°ã次ã®4x4ãããªãã¯ã¹å€æïŒglFrustumïŒïŒ-OpenGLé¢æ°ã«ãã£ãŠçæãããéèŠå€æãããªãã¯ã¹ã䜿çšïŒ ã§ãæšæºç«æ¹äœã®ã¯ãªããã¹ããŒã¹ã«ãããã³ã°ãããŸã ã
ãã®ãããªå€æã«ããã
æšæºã®å€æè¡åã«ãã空éæªã¿ã®ç¹åŸŽã¯ãå³4ããããããŸãã
å³ 4.ãªãã¬ã¯ã·ã§ã³
å¯èŠæ§ãã©ãããã®ãã¢ãã©ã³ãã¯ãªããã³ã°ãã¬ãŒã³ã«çœ®ãæããŠãéèŠå€æãããªãã¯ã¹ã®äž»ãªæ©èœãä¿æããå¿ èŠããããŸãã
ãã
èŠçã®ãã©ãããã®ã¯ããŒãºã¢ããã®å€æŽ
ãŸããä»»æã®æ圱è¡åããæœåºããŸã
å³5ã¯ãèŠçŽ ã
å³ 5.ã¯ãªããã®å次ç«æ¹äœç©ºéãå¢çä»ããå·Šãå³ãè¿ãããã³é ã®å¹³é¢ã®æ³ç·ãã¯ãã«ã ã¯ãªãã空éã®äžéšããã³äžéšã®å¹³é¢ã®æ³ç·ãã¯ãã«ã¯ããªãã¶ãŒããŒãšã®éã§æ¹åä»ããããŸãã
ã¿ã 1.ã¯ãªãã空éã®åº§æšãšãã¥ãŒã«ã¡ã©ã®å¯èŠæ§ã®åé ãã©ãããã®ç©ºéãšã®é¢ä¿ã å°åœ±è¡å
ããã
éèŠæ圱è¡åã®4è¡ç®ãå€æŽããããšã¯ã§ããŸããã åŠå®ãåæ ããããã«äœ¿çšãããŸã
å³ã6.å¯èŠæ§ãã©ãããã®ã¯ããŒãºã¢ãããå¹³é¢ã«çœ®ãæãã
ããã°ãããã®ã§ãè¡š 1ãå°åœ±è¡åã®3è¡ãç®ã¯ã®ãããã®çºçŸã®äžéšã§ããŠãé æ¯éå°ãã®å€åœ¢ãèæ ®ããŠãå¿ èŠãããŠãããšãã¯æãªããã§ããŠãé·æèšç»ïŒ
ãããŠããã®çµæã¯éèŠæ圱ã§ã¯é¡èãªåé¡ã§ãã
以åã«ããã¯ã°ã©ãŠã³ãã§æ倧ã«éããã°ã©ãã£ãã¯ã©ã¹ã¿ã©ã€ãºããã»ã¹ã«å¿ èŠãªãã€ã³ã深床ã®æ圱ã¯ã軞ã«æ²¿ã£ãæ圱ã§ã¯ãªããªããŸãã
å³ 7.ïŒaïŒ åŒ ïŒ14ïŒã«åŸã£ãŠä¿®æ£ãããé·è·é¢ã®äº€å·®ç¹
ããã
ã»ãšãã©ã®éèŠæ圱ã§ã¯ãã³ã³ããŒãã³ãã®å å
è§åºŠæåãå€æãã
é·æèšç»ã«ã¯ãã€ã³ããå«ãŸããããã«
ãããŠç¶æ ããèŠã€ãã
亀æ
ãŸãã å³5ã«ç€ºãããã«ãèŠçã®ãã©ãããã®é æ¹ã®èšç»ãæé©ã«æ¹åä»ããããšãã§ããŸãã 7ïŒbïŒïŒãã®çœ®æææ³ã¯ãé æ¹ã®èšç»ãç¡éã«åé€ãããå¯èŠæ§ãã©ãããã«å¯ŸããŠãæ£ããæ©èœããŸã- ç¡éæ圱è¡åã®å Žå -ãã®ãããé æ¹ã®èšç»ãå察åŽã®å¹³é¢ã® 2ã€ã®ãžã§ãã¬ãŒã¿ã®1ã€ãšå¹³è¡ã§ããããšãå¿ èŠã§ã
äžèšã®èŠ³å¯ã®å®çšå
以åã«è¡ããããã¹ãŠã®çè«çç 究ã¯ãããããå¯éå°åœ±è¡åã«é©çšãããŸãããäŸãšããŠã åŒ ïŒ10ïŒã®OpenGLã®æšæºè¡åãæ¢ã«äœ¿çšãããŠãããããããã䜿çšããŠäŸã®ãã§ãŒã³ãç¶ããããšã¯è«ççã§ãã
éè¡åã¯æ¬¡ã®ããã«ãªããŸãã
åŒ ïŒ18ïŒã§ææ¡ãããŠããããã«ãèæ ®ãããä¿®æ£æ圱è¡åã®3è¡ç®ã®å€ãååŸããŸãã
以æ¥
åŒ ïŒ19ïŒã®éè¡åãä¹ç®ãã
å°åœ±è¡åãä¿®æ£ããããã®éçºãããæ¹æ³ã®æ£ç¢ºæ§ãæ€èšŒããããã«ãã«ãããªãå¹³é¢ã®äœçœ®ã®ç¹å®ã®ã±ãŒã¹ãèæ ®ããŸã
ã¹ã«ã©ãŒç©
-æåŸ ãšäžèŽããçµæïŒãã€
ãã§ã«äžèšã§ææ¡ããããã«ãã©ã¹ã¿ã©ã€ãºããã»ã¹ã¯ãå€æŽãããŠããªãå¯èŠæ§ãã©ãããã®å Žåã»ã©éŠŽæã¿ããªããšäºæ³ããå¿ èŠããããŸãã ãã©ããããžãªã¡ããªã®å€æŽã«ããã衚瀺ãã©ãããå ã®ããŸããŸãªæ¹åã«æ²¿ã£ãŠæ·±åºŠãããã¡ãŒå€ã®å šç¯å²ãéæãããŸããã ä»»æã®æ¹åã®ãã¯ãã«ãåã
ã©ãã§
ã¹ã«ã©ãŒç©
çµæã®åŒã¯ãæ£èŠåã®éæå¯èœãªæ倧å€ã瀺ããŸã
æ¢çŽ¢æ¹å
ããã°ã©ãã¯ãéžæãã空éã¢ãã«ãããã«äœæ¥ããããšãæ¿èªããåã«ãä¿®æ£ãããïŒæãã®éå°ïŒå¯èŠæ§ã®ãã©ãããå ã®æ£èŠåããã座æšã®åäœã確èªããããšããå§ãããŸãã åé¡ã®ããé åãã¿ã€ã ãªãŒã«æ€åºããããšã«ããã圌ã¯ã«ã¡ã©ã®äœçœ®ãä¿®æ£ãããã深床ãããã¡ãŒã®æäœãåçŽåããŠéåžžã¢ãŒãã«è¿ã¥ãããããªæ¹æ³ã§å²ç·é¢ã®åŸæè§ãå€æŽããããšãã§ããŸãã ãã®ãããªã¢ã¯ã·ã§ã³ã®ã³ã¹ãã¯ç¹ã«éèŠã§ã¯ãããŸããããçµæã¯å®ç§äž»çŸ©è ã®èœã¡çãã«åœ¹ç«ã¡ãŸãã
åŒ ïŒ10ïŒã®æšæºã®å°åœ±è¡åãåŒãç¶ã掻çšããŠãæ£èŠåãããå€ã調ã¹ãããã®æ¬¡ã®äœ¿çšäŸã«é²ãã®ã¯ç°¡åã§ãã
奜ãã§ã¯ãªããžãªã¡ããªãåãåããå¯èŠæ§ã®ãã©ãããã®è¿ãã®å¹³é¢ã眮ãæããå¹³é¢ããã¬ã€ãäœåŒŠã§æ¬¡ã®ããã«è¡šããããšä»®å®ããŸãã
ã¹ã«ã©ãŒç©
å€æãããå°åœ±è¡åã®3è¡ç®ã¯æ¬¡ã®åœ¢åŒãåããŸãã
æ£èŠåããã座æšã®åäœãæ€èšãã
æåŸã®åŒã¯ãæ°å€ç 究ã®ç®çã«éåžžã«é©ããŠããŸãã ãã®ãããªç 究ã®äŸã¯å³ã«èŠãããšãã§ããŸãã 8.å¹³é¢ã®æ³ç·ãšè»žã®è² ã®æ¹åã®éã®è§åºŠã倧ãããªããšã深床ãããã¡çšã®æ£èŠåãããå€ã®ç¯å²ãæ¥æ¿ã«çããªããŸã
å³ 8.æ£èŠåãããç¯å²ã®çãŸã
ãããã«
ã¢ããªã±ãŒã·ã§ã³ãéçºããéçšã§ãããã°ã©ãã¯ãã°ãã°ãé床ãšçŸå®çãªã¬ã³ããªã³ã°ã®åŠ¥åç¹ãèŠã€ããªããã°ãªããŸããã ãã®èšäºã§èª¬æããææ³ã«ãããæãåºãç¯å²ã®ããã€ã¹ã§æ倧ã®ããã©ãŒãã³ã¹ãéæã§ããã ãã§ãªããã·ãŒã³ãç·šéããŠæã奜ãŸãã衚瀺ã«ããããšãæãŸããç¶æ³ãå€æããããšãã§ããŸãã
å¯èŠæ§ãã©ããããå€æŽããããã»ã¹ãšãå€æŽããããã©ãããã®æ·±åºŠãããã¡ãŒããã¹ãããããã»ã¹ãçµã¿åãããããšïŒãŸãã¯äžèšã®èŠ³å¯ãèæ ®ã«å ¥ããããšïŒã¯ãããã°ã©ããŒã®å°é£ãªäœæ¥ã®æçµçµæã®é«å質ãä¿èšŒããŸãã
æåŠ
[1] Eric Lengyelã æããã¥ãŒã®éå°ã®æ·±ãã®æ圱ãšã¯ãªããã³ã° ã Journal of Game DevelopmentãVolã 1ãããã 2ïŒ2005幎3æïŒãppã 5-16ã
[2] Eric Lengyelã 3Dã²ãŒã ããã°ã©ãã³ã°ããã³ã³ã³ãã¥ãŒã¿ãŒã°ã©ãã£ãã¯ã¹ã®æ°åŠ ã Charles River Mediaã2002ãpã 103ã