ã³ã³ãã¥ãŒã¿ã°ã©ãã£ãã¯ã¹ãã²ãŒã éçºãã·ãã¥ã¬ãŒã·ã§ã³ã«ãããè¡çªå€å®ã®éèŠãªã¢ã«ãŽãªãºã ãæ¢æ±ããŸãããã®ã¬ã€ãã§ã¯ãç¹ã®å å å€å®ãç·å亀差ãªã©ãã«ããŒããŸãã
è¡çªå€å®ïŒå¹ŸäœåŠç亀差ã¢ã«ãŽãªãºã ã®å æ¬çã¬ã€ã
è¡çªå€å®ã¯ãã³ã³ãã¥ãŒã¿ã°ã©ãã£ãã¯ã¹ãã²ãŒã éçºãããããå·¥åŠãããã³æ§ã ãªã·ãã¥ã¬ãŒã·ã§ã³ã¢ããªã±ãŒã·ã§ã³ã«ãããåºæ¬çãªåé¡ã§ããããã¯ãä»®æ³ç°å¢å ã®ãªããžã§ã¯ããäºãã«äº€å·®ãŸãã¯è¡çªããã¿ã€ãã³ã°ã倿ããããšãå«ã¿ãŸãããã®äžèŠåçŽãªåé¡ã¯ãç¹ã«ç°å¢ã®è€éããšãªããžã§ã¯ãã®æ°ãå¢å ããã«ã€ããŠãé倧ãªèšç®äžã®èª²é¡ãæç€ºããŸãããã®ã¬ã€ãã¯ã幟äœåŠç亀差ã¢ã«ãŽãªãºã ã®å æ¬çãªæŠèŠãæäŸããæ§ã ãªãã¯ããã¯ããã®å¿çšãå¹ççãªå®è£ ã®ããã®èæ ®äºé ãæ¢æ±ããéçºè ãšæå¥œå®¶ã®ã°ããŒãã«ãªèŽè¡ã«å¯Ÿå¿ããŸãã
ãªãè¡çªå€å®ãéèŠãªã®ãïŒ
è¡çªå€å®ã¯ãçŸå®çã§ã€ã³ã¿ã©ã¯ãã£ããªã·ãã¥ã¬ãŒã·ã§ã³ãã²ãŒã ãäœæããããã«äžå¯æ¬ ã§ããããããªããã°ããªããžã§ã¯ãã¯äºããéãæããä»®æ³äžçãéçŸå®çãªãã®ã«ããŸãã以äžã«ããã€ãã®éèŠãªã¢ããªã±ãŒã·ã§ã³ã瀺ããŸãã
- ã²ãŒã éçºïŒãã£ã©ã¯ã¿ãŒãçºå°ç©ãããã³ç°å¢éã®è¡çªãæ€åºããŸãã匟䞞ãå£ãéãæãããã¡ãŒã¹ãããŒãœã³ã·ã¥ãŒã¿ãŒã²ãŒã ãæ³åããŠã¿ãŠãã ãã - ããã¯ãã¬ã€äžå¯èœã§ãããã
- ããããå·¥åŠïŒãããããé害ç©ãåé¿ããåšå²ãšå®å šã«çžäºäœçšããããšãä¿èšŒããŸããããã¯ãèªååããã補é ããã³é éãµãŒãã¹ã®ãããªã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäžå¯æ¬ ã§ãã
- ã³ã³ãã¥ãŒã¿æ¯æŽèšèšïŒCADïŒïŒã³ã³ããŒãã³ãéã®å¹²æžãç¹å®ããããšã«ãããèšèšã®æŽåæ§ãæ€èšŒããŸããããšãã°ãèªåè»ã®èšèšã§ã¯ãè¡çªå€å®ã¯ãšã³ãžã³ããšã³ãžã³ãã€å ã«åãŸããã©ãããæ€èšŒããŸãã
- ç§åŠçã·ãã¥ã¬ãŒã·ã§ã³ïŒåååååŠã·ãã¥ã¬ãŒã·ã§ã³ã®ããã«ãç²åã®çžäºäœçšãã¢ãã«åããŸããæ£ç¢ºãªè¡çªå€å®ã¯ãã·ãã¥ã¬ãŒã·ã§ã³ã®çµæã«ãšã£ãŠéåžžã«éèŠã§ãã
- ããŒãã£ã«ãªã¢ãªãã£ïŒVRïŒãšæ¡åŒµçŸå®ïŒARïŒïŒãŠãŒã¶ãŒãä»®æ³ãªããžã§ã¯ããšçŸå®çã«å¯Ÿè©±ã§ããæ²¡å ¥åäœéšãäœæããŸãã
ã©ã®è¡çªå€å®ã¢ã«ãŽãªãºã ã䜿çšãããã¯ãå€ãã®å Žåãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ãããã©ãŒãã³ã¹èŠä»¶ããªããžã§ã¯ãã®è€éããããã³å¿ èŠãªç²ŸåºŠã¬ãã«ã«äŸåããŸããèšç®ã³ã¹ããšè¡çªå€å®ã®ç²ŸåºŠã®éã«ã¯ããã¬ãŒããªããååšããããšããããããŸãã
åºæ¬çãªå¹ŸäœåŠçããªããã£ããšæŠå¿µ
ç¹å®ã®ã¢ã«ãŽãªãºã ãæãäžããåã«ãè¡çªå€å®ã§ãã䜿çšãããåºæ¬çãªå¹ŸäœåŠçããªããã£ããçè§£ããããšãäžå¯æ¬ ã§ãã
- ç¹ïŒç©ºéå ã®äœçœ®ãå€ãã®å Žåã2Dã§ã¯åº§æšïŒxãyïŒã3Dã§ã¯ïŒxãyãzïŒã§è¡šãããŸãã
- ç·åïŒ2ã€ã®ç¹ïŒç«¯ç¹ïŒãæ¥ç¶ããçŽç·ã
- äžè§åœ¢ïŒ3ã€ã®é ç¹ãæã€å€è§åœ¢ã
- å€è§åœ¢ïŒæ¥ç¶ãããç·åïŒãšããžïŒã®ã·ãŒã±ã³ã¹ã§å®çŸ©ãããéãã圢ç¶ã
- çïŒäžå¿ç¹ãšååŸã§å®çŸ©ããã3次å ãªããžã§ã¯ãã
- AABBïŒè»žå¹³è¡ããŠã³ãã£ã³ã°ããã¯ã¹ïŒïŒåº§æšè»žã«æ²¿ã£ãŠé 眮ãããé·æ¹åœ¢ã®ããã¯ã¹ãæå°ããã³æå€§ã®xãyãããã³ïŒãªãã·ã§ã³ã§ïŒzã®å€ã§å®çŸ©ãããŸãã
- OBBïŒæåæ§ããŠã³ãã£ã³ã°ããã¯ã¹ïŒïŒä»»æã®è§åºŠã§é 眮ã§ããé·æ¹åœ¢ã®ããã¯ã¹ãäžå¿ã軞ã®ã»ãããããã³ãããã®è»žã«æ²¿ã£ãç¯å²ã§å®çŸ©ãããŸãã
- ã¬ã€ïŒç¹ïŒåç¹ïŒããå§ãŸããæå®ãããæ¹åã«ç¡éã«äŒžã³ãç·ã
2Dã«ãããè¡çªå€å®ã¢ã«ãŽãªãºã
2Dè¡çªå€å®ã¯3D察å¿ç©ãããåçŽã§ãããããè€éãªãã¯ããã¯ãçè§£ããããã®åºç€ã圢æããŸãã以äžã«ãããã€ãã®äžè¬çãª2Dã¢ã«ãŽãªãºã ã瀺ããŸãã
1. ç¹ã®å å å€å®
äžããããç¹ãå€è§åœ¢ã®å éšã«ãããå€éšã«ãããã倿ããŸããããã€ãã®æ¹æ³ãååšããŸãã
- ã¬ã€ãã£ã¹ãã£ã³ã°ã¢ã«ãŽãªãºã ïŒç¹ããã¬ã€ïŒäžæ¹åã«ç¡éã«äŒžã³ãç·ïŒããã£ã¹ãããŸããã¬ã€ãå€è§åœ¢ã®ãšããžãšäº€å·®ããåæ°ãæ°ããŸããã«ãŠã³ãã奿°ã®å Žåãç¹ã¯å éšã«ãããŸããå¶æ°ã®å Žåãç¹ã¯å€éšã«ãããŸãããã®ã¢ã«ãŽãªãºã ã¯æ¯èŒçç°¡åã«å®è£ ã§ããŸãã
- å·»ãæ°ã¢ã«ãŽãªãºã ïŒå€è§åœ¢ã«é¢ããç¹ã®å·»ãæ°ãèšç®ããŸããå·»ãæ°ã¯ãå€è§åœ¢ãç¹ãäœåå·»ããŠãããã衚ããŸããå·»ãæ°ããŒãã§ãªãå Žåãç¹ã¯å éšã«ãããŸãããã®æ¹æ³ã¯ãèªå·±äº€å·®ã®ããè€éãªå€è§åœ¢ã«å¯ŸããŠäžè¬çã«ããå ç¢ã§ãã
äŸïŒã¬ã€ãã£ã¹ãã£ã³ã°ïŒïŒéœåžã®å°å³ãæ³åããŠã¿ãŠãã ãããGPS座æšïŒç¹ïŒãã建ç©ã衚ãå€è§åœ¢ã«å¯ŸããŠãã§ãã¯ãããŸããã¬ã€ãã£ã¹ãã£ã³ã°ã¢ã«ãŽãªãºã ã¯ãäžããããç¹ã建ç©å ã«ãããã©ããã倿ã§ããŸãã
2. ç·å亀差
2ã€ã®ç·åã亀差ãããã©ããã倿ããŸããæãäžè¬çãªã¢ãããŒãã¯æ¬¡ã®ãšããã§ãã
- ãã©ã¡ãŒã¿æ¹çšåŒïŒåç·åããã©ã¡ãŒã¿æ¹çšåŒã§è¡šããŸããP = P1 + tïŒP2 - P1ïŒãããã§ãP1ãšP2ã¯ç«¯ç¹ã§ãããtã¯0ãã1ã®ç¯å²ã®ãã©ã¡ãŒã¿ã§ãã亀ç¹ã¯ããã©ã¡ãŒã¿tã«ã€ããŠ2ã€ã®æ¹çšåŒïŒç·åããšã«1ã€ïŒã®ã·ã¹ãã ãè§£ãããšã«ãã£ãŠèŠã€ããããŸããäž¡æ¹ã®tã®å€ãç¯å²[0ã1]ã«åãŸãå Žåãã»ã°ã¡ã³ãã¯äº€å·®ããŸãã
- ã¯ãã¹ç©ã¢ãããŒãïŒã¯ãã¹ç©ã䜿çšããŠãäžæ¹ã®ç·åã®ç«¯ç¹ã®ä»æ¹ã«å¯Ÿããçžå¯Ÿçãªäœçœ®ã倿ããŸããã¯ãã¹ç©ã®ç¬Šå·ãç°ãªãå Žåãã»ã°ã¡ã³ãã¯äº€å·®ããŸãããã®æ¹æ³ã¯é€ç®ãåé¿ããããå¹ççã§ãã
äŸïŒã²ãŒã ã§ã®è¡çªå€å®ã·ããªãªãèããŠã¿ãŸãããã匟䞞ïŒç·åïŒãçºå°ãããå£ïŒç·åãšããŠè¡šãããïŒã«å¯ŸããŠãã§ãã¯ããå¿ èŠããããŸãããã®ã¢ã«ãŽãªãºã ã¯ã匟䞞ãå£ã«åœãããã©ãããèå¥ããŸãã
3. ããŠã³ãã£ã³ã°ããã¯ã¹è¡çªå€å®
ãªããžã§ã¯ãã®ããŠã³ãã£ã³ã°ããã¯ã¹ã亀差ãããã©ããããã¹ããããè¿ éãã€å¹ççãªäºåãã§ãã¯ãããŠã³ãã£ã³ã°ããã¯ã¹ãè¡çªããªãå Žåãããè€éãªè¡çªãã§ãã¯ãå®è¡ããå¿ èŠã¯ãããŸããã
- AABB vs. AABBïŒ2ã€ã®AABBã¯ãå軞ïŒxããã³yïŒã«æ²¿ã£ãŠééãéè€ããå Žåã«äº€å·®ããŸãã
äŸïŒå€ãã®ç§»åãªããžã§ã¯ããããã²ãŒã ãæ³åããŠã¿ãŠãã ãããæåã«ãåçŽãªAABBè¡çªãã§ãã¯ãå®è¡ãããŸããAABBã亀差ããå Žåããã詳现ãªè¡çªãã§ãã¯ãå®è¡ãããŸããããã§ãªãå ŽåãåŠçæéãç¯çŽãããŸãã
3Dã«ãããè¡çªå€å®ã¢ã«ãŽãªãºã
3Dè¡çªå€å®ã¯ã次å ã远å ããããããããè€éã«ãªããŸãã以äžã«ãããã€ãã®éèŠãª3Dã¢ã«ãŽãªãºã ã瀺ããŸãã
1. ç vs. ç
æãåçŽãª3Dè¡çªå€å®ã2ã€ã®çã®äžå¿éã®è·é¢ãããããã®ååŸã®åèšãããå°ããå Žåã2ã€ã®çã¯è¡çªããŸããè·é¢ã®å ¬åŒã¯æ¬¡ã®ãšããã§ãïŒè·é¢ = sqrtïŒïŒx2 - x1ïŒ^ 2 +ïŒy2 - y1ïŒ^ 2 +ïŒz2 - z1ïŒ^ 2ïŒã
äŸïŒ3Dç°å¢ã§ã®ããªã€ãŒãã®è¡çªãã·ãã¥ã¬ãŒãããŸãã
2. ç vs. AABB
çãšè»žå¹³è¡ããŠã³ãã£ã³ã°ããã¯ã¹ã亀差ãããã©ããããã¹ãããŸãããã®ã¢ã«ãŽãªãºã ã§ã¯éåžžãçã®äžå¿ãAABBå ã«ãããã©ããããŸãã¯çã®äžå¿ãšAABBäžã®æãè¿ãç¹ãšã®éã®è·é¢ãçã®ååŸãããå°ãããã©ããããã§ãã¯ããŸãã
äŸïŒã²ãŒã ã§ããã£ã©ã¯ã¿ãŒïŒçã§è¡šãããïŒã建ç©ïŒAABBã§è¡šãããïŒãšè¡çªãããã©ãããå¹ççã«ãã§ãã¯ããŸãã
3. ç vs. äžè§åœ¢
çãäžè§åœ¢ãšäº€å·®ãããã©ããã倿ããŸãã1ã€ã®ã¢ãããŒãã¯æ¬¡ã®ãšããã§ãã
- çã®äžå¿ã®æåœ±ïŒäžè§åœ¢ã§å®çŸ©ãããå¹³é¢ã«çã®äžå¿ãæåœ±ããŸãã
- å éšã«ãããã©ããã®ãã§ãã¯ïŒéå¿åº§æšãªã©ã®ææ³ã䜿çšããŠãæåœ±ãããç¹ãäžè§åœ¢ã®å åŽã«ãããã©ããã倿ããŸãã
- è·é¢ãã§ãã¯ïŒæåœ±ãããç¹ãå éšã«ãããçã®äžå¿ãšå¹³é¢ã®éã®è·é¢ãååŸãããå°ããå Žåã¯ãè¡çªãçºçããŸããæåœ±ãããç¹ãå€éšã«ããå Žåã¯ãåé ç¹ãšãšããžãŸã§ã®è·é¢ããã¹ãããŸãã
äŸïŒ3Dã²ãŒã ç°å¢ã§ãä»®æ³ããŒã«ãšå°åœ¢ã®éã®è¡çªãæ€åºããŸããå°åœ¢ã¯äžè§åœ¢ã§è¡šãããããšããããããŸãã
4. äžè§åœ¢ vs. äžè§åœ¢
ããã¯ããè€éãªåé¡ã§ããããã€ãã®æ¹æ³ãæ¡çšãããŠããŸãã
- åé¢è»žå®çïŒSATïŒïŒäžè§åœ¢ã軞ã®ã»ããã«æ²¿ã£ãŠåé¢ãããŠãããã©ããããã§ãã¯ããŸããåé¢ãããŠããå Žåãè¡çªããŸãããåé¢ãããŠããªãå Žåãè¡çªããŸãããã¹ããã軞ã«ã¯ãäžè§åœ¢ã®æ³ç·ãšäžè§åœ¢ã®ãšããžã®ã¯ãã¹ç©ãå«ãŸããŸãã
- å¹³é¢ããŒã¹ã®äº€å·®ãã¹ãïŒäžæ¹ã®äžè§åœ¢ã®é ç¹ããããäžæ¹ã®äžè§åœ¢ã§å®çŸ©ãããå¹³é¢ã®å察åŽã«ãããã©ããããã§ãã¯ããŸããããã¯äž¡æ¹ã®äžè§åœ¢ã«å¯ŸããŠå®è¡ãããŸãã亀差ãååšããå Žåã远å ã®ãã¹ãïŒå¹³é¢å ã®ãšããžéã®äº€å·®ïŒãå¿ èŠã§ãã
äŸïŒäžè§åœ¢ã§è¡šãããè€éãªã¡ãã·ã¥ãªããžã§ã¯ãéã®è¡çªã倿ããŸãã
5. AABB vs. AABB
2Dãšåæ§ã§ããã軞ïŒzïŒã远å ãããŠããŸãã2ã€ã®AABBã¯ãxãyãããã³z軞ã®ããããã«æ²¿ã£ãŠééãéè€ããå Žåã«äº€å·®ããŸããããã¯ãããæ£ç¢ºãªè¡çªå€å®ã®ããã®ãããŒããã§ãŒãºãšããŠé »ç¹ã«äœ¿çšãããŸãã
äŸïŒ3Dã·ãŒã³å ã®éçãªããžã§ã¯ãéã®è¡çªå€å®ãå¹ççã«ç®¡çããŸãã
6. OBB vs. OBB
ããã«ã¯ãåé¢è»žå®çïŒSATïŒã®äœ¿çšãå«ãŸããŸãããã¹ããã軞ã¯ãåOBBã®é¢ã®æ³ç·ãšãäž¡æ¹ã®OBBã®ãšããžã®ã¯ãã¹ç©ã§ããOBBã¯äžè¬ã«AABBãããæ£ç¢ºã§ãããèšç®ã¯ããé«äŸ¡ã§ãã
äŸïŒåº§æšè»žã«æ²¿ã£ãŠé 眮ãããŠããªãè€éãªç§»åãªããžã§ã¯ãéã®è¡çªãæ€åºããŸãã
7. ã¬ã€ãã£ã¹ãã£ã³ã°
ã¬ã€ã¯ãç¹å®ã®æ¹åã®éå§ç¹ïŒåç¹ïŒãããã£ã¹ããããã·ãŒã³å ã®ãªããžã§ã¯ããšäº€å·®ãããã©ããã倿ããããã«äœ¿çšãããŸããããã¯ãéžæããããã³ã°ãããã³ã·ã£ããŠèšç®ã«åºã䜿çšãããŠããŸããè¡çªå€å®ã®å ŽåïŒ
- ã¬ã€-ç亀差ïŒäºæ¬¡æ¹çšåŒã䜿çšããŠè§£ãããŸãã
- ã¬ã€-äžè§åœ¢äº€å·®ïŒå€ãã®å ŽåãMöllerâTrumboreã¢ã«ãŽãªãºã ãå©çšããŸããããã«ãããäžè§åœ¢å ã®äº€ç¹ãšéå¿åº§æšãå¹ççã«èšç®ããŸãã
äŸïŒãŠãŒã¶ãŒã3Dã²ãŒã ãŸãã¯ã·ãã¥ã¬ãŒã·ã§ã³ïŒéžæïŒã§ããŠã¹ã§æããŠãããªããžã§ã¯ãã倿ããŸãããã1ã€ã®ãŠãŒã¹ã±ãŒã¹ã¯ããã¡ãŒã¹ãããŒãœã³ã·ã¥ãŒã¿ãŒã§æŠåšããçºå°ãããçºå°äœãã·ãã¥ã¬ãŒãããããšã§ãã
æé©åãã¯ããã¯
å¹ççãªè¡çªå€å®ã¯ãç¹ã«ãªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³ã§ã¯éåžžã«éèŠã§ãã以äžã«ãããã€ãã®æé©åæŠç¥ã瀺ããŸãã
1. ããŠã³ãã£ã³ã°ããªã¥ãŒã éå±€ïŒBVHïŒ
BVHã¯ãããŠã³ãã£ã³ã°ããªã¥ãŒã ã«åºã¥ããŠãªããžã§ã¯ããéå±€çã«æŽçããããªãŒã®ãããªæ§é ã§ããããã«ãããéå±€ã®åã¬ãã«ã§ããŠã³ãã£ã³ã°ããªã¥ãŒã ãéè€ãããªããžã§ã¯ãã®ã¿ããã¹ãããããšã§ãå¿ èŠãªè¡çªãã§ãã¯ã®æ°ãå€§å¹ ã«åæžãããŸããBVHã®äžè¬çãªããŠã³ãã£ã³ã°ããªã¥ãŒã ã«ã¯ãAABBãšOBBãå«ãŸããŸãã
äŸïŒæ°åã®ãªããžã§ã¯ããããã²ãŒã ãèããŠã¿ãŸããããBVHã¯ãè¿æ¥ããŠãããªããžã§ã¯ãéã®è¡çªã®ã¿ããã§ãã¯ããããšã«ãããæ€çŽ¢ã¹ããŒã¹ããã°ããçµã蟌ã¿ãèšç®è² è·ã軜æžã§ããŸãã
2. 空éåå²
ã·ãŒã³ãé åãŸãã¯ã»ã«ã«åå²ããŸããããã«ãããäºãã«è¿ããªããžã§ã¯ãããã°ãã倿ã§ãããããè¡çªãã§ãã¯ãåæžãããŸããäžè¬çãªãã¯ããã¯ã«ã¯æ¬¡ã®ãã®ããããŸãã
- åäžã°ãªããïŒã¹ããŒã¹ãéåžžã®ã°ãªããã«åå²ããŸããå®è£ ã¯ç°¡åã§ããããªããžã§ã¯ãã®ååžãäžåäžãªå Žåã¯å¹çãäœäžããå¯èœæ§ããããŸãã
- ã¯ã¢ããããªãŒïŒ2DïŒããã³ãªã¯ãããªãŒïŒ3DïŒïŒã¹ããŒã¹ãååž°çã«çްåå²ããéå±€æ§é ãåäžã°ãªãããããé©å¿æ§ããããŸãããæ§ç¯ã¯ããè€éã«ãªãå¯èœæ§ããããŸããåçãªã·ãŒã³ã«æé©ã§ãã
- BSPããªãŒïŒãã€ããªç©ºéåå²ïŒïŒã¹ããŒã¹ãå¹³é¢ã§åå²ããŸããã¬ã³ããªã³ã°ãšè¡çªå€å®ã«ãã䜿çšãããŸãããæ§ç¯ãšä¿å®ã«ã¯è²»çšããããå¯èœæ§ããããŸãã
äŸïŒåºå€§ãªãããå ã§ãŠãããéã®è¡çªãå¹ççã«æ€åºããããã«ã¯ã¢ããããªãŒã䜿çšãããªã¢ã«ã¿ã€ã æŠç¥ã²ãŒã ã
3. ãããŒããã§ãŒãºãšãããŒãã§ãŒãº
ã»ãšãã©ã®è¡çªå€å®ã·ã¹ãã ã¯ã2ãã§ãŒãºã¢ãããŒãã䜿çšããŸãã
- ãããŒããã§ãŒãºïŒAABB vs. AABBãªã©ã®ã·ã³ãã«ã§é«éãªè¡çªå€å®ã¢ã«ãŽãªãºã ã䜿çšããŠãæœåšçãªè¡çªããã°ããèå¥ããŸããç®æšã¯ãå¯èœãªéãå€ãã®éè¡çªãã¢ãæé€ããããšã§ãã
- ãããŒãã§ãŒãºïŒãããŒããã§ãŒãºã§èå¥ããããªããžã§ã¯ãã«å¯ŸããŠãããæ£ç¢ºã§èšç®ã³ã¹ãã®é«ãè¡çªãã§ãã¯ïŒäžè§åœ¢ vs. äžè§åœ¢ãªã©ïŒãå®è¡ããŸãã
äŸïŒã²ãŒã ã§ã¯ããããŒããã§ãŒãºã¯AABBãã¹ãã䜿çšããŠãè¿æ¥ããŠããªããªããžã§ã¯ãããã°ãããã£ã«ã¿ãªã³ã°ããŸããæ¬¡ã«ããããŒãã§ãŒãºã¯ãæœåšçãªè¡çªãªããžã§ã¯ãã«å¯ŸããŠããã詳现ãªãã¹ãïŒåã ã®äžè§åœ¢ã®ãã§ãã¯ãªã©ïŒãå®è¡ããŸãã
4. ãã£ãã·ã¥ãšäºåèšç®
å¯èœã§ããã°ãé »ç¹ã«å€æŽãããªãèšç®ã®çµæããã£ãã·ã¥ããŸããéçãªããžã§ã¯ãããŒã¿ïŒæ³ç·ãªã©ïŒãäºåã«èšç®ããé »ç¹ã«äœ¿çšãããå€ã®ã«ãã¯ã¢ããããŒãã«ã䜿çšããŸãã
äŸïŒéçãªããžã§ã¯ããæ±ãå Žåãäžè§åœ¢ã®æ³ç·ãäžåºŠèšç®ããŠä¿åãããšããã¬ãŒã ããšã«æ³ç·ãç¹°ãè¿ãåèšç®ããå¿ èŠããªããªããŸãã
5. ã¢ãŒãªãŒã¢ãŠããã¯ããã¯
ç¡é§ãªèšç®ãé¿ããããã«ãè¡çªããªããã©ããããã°ãã倿ã§ããã¢ã«ãŽãªãºã ãèšèšããŸããããã«ã¯ãæãåçŽãªè¡çªæ¡ä»¶ãæåã«ãã¹ãããè¡çªããªãå Žåã¯ãã°ããçµäºããããšãå«ãŸããŸãã
äŸïŒçãšäžè§åœ¢ã®äº€å·®ãã¹ãäžã«ãçã®äžå¿ãšäžè§åœ¢ã®å¹³é¢ã®éã®è·é¢ããã§ãã¯ãããšãæœåšçãªè¡çªãååšãããã©ããããã°ãã倿ã§ããŸãã
å®éçãªèæ ®äºé
1. æµ®åå°æ°ç¹ç²ŸåºŠ
æµ®åå°æ°ç¹æŒç®ã§ã¯äžžã誀差ãçºçããç¹ã«ãªããžã§ã¯ããäºãã«è¿ãå Žåã«åé¡ãçºçããå¯èœæ§ããããŸããããã«ãããè¡çªãèŠéãããããå°ããªã®ã£ãããäœæããããããå¯èœæ§ããããŸãã以äžãæ€èšããŠãã ããã
- 蚱容å€ïŒäžæ£ç¢ºããè£æ£ããããã«ãå°ããªèš±å®¹å€ãå°å ¥ããŸãã
- å粟床ïŒããã©ãŒãã³ã¹ãžã®åœ±é¿ã蚱容ã§ããå Žåã¯ãéèŠãªèšç®ã«å粟床浮åå°æ°ç¹æ°ïŒC++ã®`double`ãªã©ïŒã䜿çšããŸãã
- æ°å€çå®å®æ§ïŒæ°å€çã«å®å®æ§ã®é«ãæ°å€çã¡ãœãããšã¢ã«ãŽãªãºã ãéžæããŸãã
2. ãªããžã§ã¯ãã®è¡šçŸãšããŒã¿æ§é
ãªããžã§ã¯ããã©ã®ããã«è¡šçŸããããŒã¿ãä¿åãããã¯ãè¡çªå€å®ã®ããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããŸãã以äžãæ€èšããŠãã ããã
- ã¡ãã·ã¥ã®è€éãïŒåŠ¥åœãªã¬ãã«ã®èŠèŠçãªå¿ å®åºŠãç¶æããªãããè€éãªã¡ãã·ã¥ãç°¡ç¥åããŠãäžè§åœ¢ã®æ°ãæžãããŸããã¡ãã·ã¥éåŒãã¢ã«ãŽãªãºã ã®ãããªããŒã«ã圹ç«ã¡ãŸãã
- ããŒã¿æ§é ïŒããã°ã©ãã³ã°èšèªã®æ©èœãšããã©ãŒãã³ã¹ã®èæ ®äºé ã«åºã¥ããŠãé åãç¹æ®ãªå¹ŸäœåŠçããŒã¿æ§é ïŒäžè§åœ¢ããŒã¿ãä¿åããããã®ãã®ãªã©ïŒãªã©ã®å¹ççãªããŒã¿æ§é ã䜿çšããŸãã
- ãªããžã§ã¯ãéå±€ïŒãªããžã§ã¯ããå€ãã®å°ããªéšåã§æ§æãããŠããå Žåã¯ãè¡çªå€å®ãç°¡ç¥åããããã«éå±€ãäœæããããšãæ€èšããŠãã ããã
3. ããã©ãŒãã³ã¹ãããã¡ã€ãªã³ã°ãšãã¥ãŒãã³ã°
ãããã¡ã€ã©ãŒã¯ãè¡çªå€å®ã³ãŒãã®ããã©ãŒãã³ã¹ããã«ããã¯ãèå¥ããŸãããããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãã©ã®ã¢ã«ãŽãªãºã ãæãåŠçæéãæ¶è²»ããããç¹å®ããŸãã代æ¿ã¡ãœãããæ€èšããããå®è£ ãæ¹åãããããã©ã¡ãŒã¿ã埮調æŽãããããããã¡ã€ãªã³ã°ããŒã«ãå床䜿çšããŠçµæãè©äŸ¡ãããããããšã«ããããããã®ã¢ã«ãŽãªãºã ãæé©åããŸãã
äŸïŒã²ãŒã éçºè ã¯è¡çªå€å®ã³ãŒãããããã¡ã€ã«ããäžè§åœ¢-äžè§åœ¢ã®äº€å·®ãCPUæéãå€§å¹ ã«æ¶è²»ããŠããããšãç¹å®ããå ŽåããããŸããæ¬¡ã«ãããå¹ççãªã¢ã«ãŽãªãºã ã䜿çšããããã·ãŒã³å ã®ãªããžã§ã¯ãã®ããªãŽã³æ°ãæžããããšãæ€èšããå¯èœæ§ããããŸãã
4. ç©çãšã³ãžã³ãšã©ã€ãã©ãª
å€ãã®ã²ãŒã ãšã³ãžã³ãšã©ã€ãã©ãªã¯ãäºåæ§ç¯ãããè¡çªå€å®ããã³ç©çã·ã¹ãã ãæäŸããŸãããããã®ã·ã¹ãã ã¯ãå€ãã®å Žåãæé©åãããã¢ã«ãŽãªãºã ãæäŸããåäœãã€ããã¯ã¹ãå¶çŽè§£æ±ºãªã©ã®ããŸããŸãªè€éããåŠçããŸããäžè¬çãªéžæè¢ã¯æ¬¡ã®ãšããã§ãã
- PhysXïŒNvidiaïŒïŒå ç¢ã§åºã䜿çšãããŠããç©çãšã³ãžã³ã
- Bullet Physics LibraryïŒãªãŒãã³ãœãŒã¹ã®ç©çã©ã€ãã©ãªã
- Unityããã³Unreal EngineïŒè¡çªå€å®æ©èœãåããçµã¿èŸŒã¿ã®ç©çãšã³ãžã³ãçµã¿èŸŒãã ã²ãŒã ãšã³ãžã³ã
- Box2DïŒã¢ãã€ã«ã²ãŒã ã§äžè¬çã«äœ¿çšããã2Dç©çãšã³ãžã³ã
ãããã®ãšã³ãžã³ã䜿çšãããšãç¹ã«è€éãªã·ããªãªã§ã¯ãã²ãŒã ãã·ãã¥ã¬ãŒã·ã§ã³ã§ã®è¡çªå€å®ãšç©çã®å®è£ ãå€§å¹ ã«ç°¡ç¥åã§ããŸãã
é©åãªã¢ã«ãŽãªãºã ã®éžæ
æé©ãªè¡çªå€å®ã¢ã«ãŽãªãºã ã®éžæã¯ãããã€ãã®èŠå ã«äŸåããŸãã
- ãªããžã§ã¯ãã®è€éãïŒé¢äžãããªããžã§ã¯ãã®å¹ŸäœåŠçè€éããåçŽãªåœ¢ç¶ïŒçãããã¯ã¹ïŒã¯ãè€éãªã¡ãã·ã¥ãããåŠçãç°¡åã§ãã
- ããã©ãŒãã³ã¹èŠä»¶ïŒãªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³ã«ã¯ãé«åºŠã«æé©åãããã¢ã«ãŽãªãºã ãå¿ èŠã§ãã
- ã·ãŒã³ã®ãã€ããã¯ã¹ïŒãªããžã§ã¯ããç§»åããäœçœ®ã倿Žããé »åºŠãåçãªã·ãŒã³ã«ã¯ãããè€éãªããŒã¿æ§é ãšã¢ã«ãŽãªãºã ãå¿ èŠã§ãã
- ã¡ã¢ãªå¶çŽïŒå¶éãããã¡ã¢ãªã¯ãããŒã¿æ§é ã®éžæãšã¢ã«ãŽãªãºã ã®è€éãã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
- 粟床ã®ããŒãºïŒå¿ èŠãªç²ŸåºŠã®çšåºŠãäžéšã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯éåžžã«æ£ç¢ºãªè¡çªå€å®ãå¿ èŠã«ãªãå ŽåããããŸãããä»ã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯è¿äŒŒã蚱容ã§ããŸãã
äŸïŒåãšé·æ¹åœ¢ãåããåçŽãª2Dã²ãŒã ãæ§ç¯ããŠããå Žåã¯ãAABBãšåã®äº€å·®ãã¹ãã䜿çšã§ããŸãããããã¯éåžžã«å¹ççã§ããå€åœ¢å¯èœãªã¡ãã·ã¥ãåããè€éãª3Dã²ãŒã ã®å ŽåãBVHãšPhysXã®ãããªå ç¢ãªç©çãšã³ãžã³ã®çµã¿åããã䜿çšããå¯èœæ§ããããŸãã
çµè«
è¡çªå€å®ã¯ãå€ãã®ã€ã³ã¿ã©ã¯ãã£ãã¢ããªã±ãŒã·ã§ã³ã®éèŠãªã³ã³ããŒãã³ãã§ããåºæ¬çãªå¹ŸäœåŠçããªããã£ããè¡çªå€å®ã®ããŸããŸãªã¢ã«ãŽãªãºã ãããã³æé©åãã¯ããã¯ãçè§£ããããšã«ãããå ç¢ã§å¹ççãªã·ã¹ãã ãæ§ç¯ã§ããŸããé©åãªã¢ã«ãŽãªãºã ã¯ããããžã§ã¯ãã®ç¹å®ã®ããŒãºã«ãã£ãŠç°ãªããŸãããããã®æ¹æ³ãåæããããšã§ãçŸå®äžçãã·ãã¥ã¬ãŒãããã€ã³ã¿ã©ã¯ãã£ããªã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã
ãã¯ãããžãŒã®é²æ©ã«äŒŽããæ°ããã¢ã«ãŽãªãºã ãšæé©åãã¯ããã¯ãåžžã«éçºãããŠããŸããéçºè ãšæå¥œå®¶ã¯ããã®é åçã§éèŠãªåéã®æåç·ã«ãšã©ãŸãããã«ãç¥èãç¶ç¶çã«æŽæ°ããå¿ èŠããããŸãããããã®ååã®é©çšã¯ãäžçäžã§å®¹æã«å©çšã§ããŸããç¶ç¶çãªç·Žç¿ãéããŠãè¡çªå€å®ã®è€éããç¿åŸã§ããããã«ãªããŸãã