ã²ãŒã ç©çåŠã«ãããè¡çªæ€åºã®åºæ¬æŠå¿µãã¢ã«ãŽãªãºã ãæé©åææ³ããããŠäžçäžã®ã²ãŒã éçºè ã®ããã®å®è·µçãªå®è£ èå¯ãæ¢ããŸãã
ã²ãŒã ç©çåŠïŒè¡çªæ€åºã®æ·±æã解説
è¡çªæ€åºã¯ããããªã²ãŒã ã«ãããŠãªã¢ã«ã§é åçãªã²ãŒã ãã¬ã€ã®ç€ã§ããããã¯ã2ã€ä»¥äžã®ã²ãŒã ãªããžã§ã¯ãã亀差ãŸãã¯æ¥è§Šããã¿ã€ãã³ã°ã決å®ããããã»ã¹ã§ããæ£ç¢ºã§å¹ççãªè¡çªæ€åºã¯ãç©ççãªã€ã³ã¿ã©ã¯ã·ã§ã³ã®ã·ãã¥ã¬ãŒã·ã§ã³ããªããžã§ã¯ãå士ã®ããæã鲿¢ããããŠã²ãŒã ã€ãã³ãã®ããªã¬ãŒã«äžå¯æ¬ ã§ãããã®èšäºã§ã¯ãäžçäžã®ã²ãŒã éçºè ã«åããŠãè¡çªæ€åºæè¡ãæé©åæŠç¥ãããã³å®è£ äžã®èæ ®äºé ã«ã€ããŠå æ¬çã«æŠèª¬ããŸãã
ãªãè¡çªæ€åºã¯éèŠãªã®ãïŒ
è¡çªæ€åºã¯ãå¹ åºãã²ãŒã ãã¬ã€ã¡ã«ãã¯ã¹ã«ãšã£ãŠåºæ¬ãšãªããŸãïŒ
- ç©ççãªã€ã³ã¿ã©ã¯ã·ã§ã³ïŒããŒã«ãå£ã«è·³ãè¿ã£ããã2å°ã®è»ãè¡çªããããããªã©ããªããžã§ã¯ãéã®ãªã¢ã«ãªè¡çªãã·ãã¥ã¬ãŒãããŸãã
- ãã£ã©ã¯ã¿ãŒã®ç§»åïŒãã£ã©ã¯ã¿ãŒãå£ãåºããã®ä»ã®åºããªããžã§ã¯ããéãæããã®ãé²ããŸãã
- ãã¡ãŒãžãšäœåã·ã¹ãã ïŒçºå°ç©ãæµã«åœäžãããšããããã£ã©ã¯ã¿ãŒãçœ ãèžãã ãšããæ€åºããŸãã
- ã€ãã³ãã®ããªã¬ãŒïŒãã£ã©ã¯ã¿ãŒãååã«è¿ã¥ããšãã¢ãéãããããã¯ãŒã¢ãããæå¹ã«ãªã£ãããããªã©ããªããžã§ã¯ããè¡çªãããšãã«ã€ãã³ããéå§ããŸãã
- AIããã²ãŒã·ã§ã³ïŒAIãšãŒãžã§ã³ããé害ç©ãé¿ããŠã²ãŒã äžçãããã²ãŒãããã®ãå©ããŸãã
å ç¢ãªè¡çªæ€åºããªããã°ãã²ãŒã ã¯éçŸå®çã§ãã°ãå€ãããã¬ã€ã€ãŒã«ãšã£ãŠãã©ã¹ãã¬ãŒã·ã§ã³ã®ããŸããã®ã«ãªãã§ããããããã¯ãä¿¡é Œã§ããã·ãã¥ã¬ãŒã·ã§ã³ãé åçãªã²ãŒã ãã¬ã€ã«ãŒãããããŠã²ãŒã äžçå ã§ã®å¿çæ§ã®é«ãã€ã³ã¿ã©ã¯ã·ã§ã³ãå¯èœã«ããŸããé©åã«å®è£ ãããè¡çªã·ã¹ãã ã¯ãã²ãŒã å šäœã®åè³ªãšæ²¡å ¥æãå€§å¹ ã«åäžãããŸãã
åºæ¬æŠå¿µ
å ·äœçãªã¢ã«ãŽãªãºã ã«é£ã³èŸŒãåã«ãããã€ãã®åºæ¬æŠå¿µãå®çŸ©ããŸãããïŒ
- ã²ãŒã ãªããžã§ã¯ãïŒãã£ã©ã¯ã¿ãŒãæµãçºå°ç©ãç°å¢ãªããžã§ã¯ããªã©ãã²ãŒã äžçå ã®ãšã³ãã£ãã£ã
- è¡çªåœ¢ç¶ïŒè¡çªæ€åºã®ããã«äœ¿çšããããã²ãŒã ãªããžã§ã¯ãã®åçŽåããã幟äœåŠç衚çŸãäžè¬çãªåœ¢ç¶ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- 軞平è¡å¢çããã¯ã¹ (AABB)ïŒåº§æšè»žã«å¹³è¡ãªé·æ¹åœ¢ïŒ2DïŒãŸãã¯çŽæ¹äœïŒ3DïŒã
- æåå¢çããã¯ã¹ (OBB)ïŒä»»æã®è§åºŠã§æ¹åä»ãã§ããé·æ¹åœ¢ãŸãã¯çŽæ¹äœã
- çïŒè¡çªæ€åºãã·ã³ãã«ã§å¹ççã
- ã«ãã»ã«ïŒãã£ã©ã¯ã¿ãŒããã®ä»ã®çްé·ããªããžã§ã¯ãã衚çŸããã®ã«äŸ¿å©ã
- åžå ïŒç¹ã®éåãå«ãæå°ã®åžå€è§åœ¢ãŸãã¯åžå€é¢äœã
- ããªãŽã³/å€é¢äœïŒã²ãŒã ãªããžã§ã¯ãã®ãžãªã¡ããªãæ£ç¢ºã«è¡šçŸã§ãããããè€éãªåœ¢ç¶ã
- è¡çªãã¢ïŒè¡çªã«ã€ããŠãã¹ããããŠãã2ã€ã®ã²ãŒã ãªããžã§ã¯ãã
- è¡çªç¹ïŒ2ã€ã®ãªããžã§ã¯ããæ¥è§ŠããŠããç¹ã
- è¡çªæ³ç·ïŒè¡çªç¹ã§ã®è¡šé¢ã«åçŽãªãã¯ãã«ã§ãè¡çªåã®æ¹åã瀺ãã
- è²«éæ·±åºŠïŒ2ã€ã®ãªããžã§ã¯ããéãªã£ãŠããè·é¢ã
è¡çªæ€åºãã€ãã©ã€ã³
è¡çªæ€åºã¯éåžžã2ã€ã®ãã§ãŒãºã§å®è¡ãããŸãïŒ
1. ãããŒããã§ãŒãº
ãããŒããã§ãŒãºã¯ãæããã«è¡çªããŠããªããã¢ãæé€ããããšã«ãã£ãŠãæœåšçãªè¡çªãã¢ã®æ°ãè¿ éã«çµã蟌ãããšãç®çãšããŠããŸããããã¯ãåçŽåãããè¡çªè¡šçŸãšå¹ççãªã¢ã«ãŽãªãºã ã䜿çšããŠè¡ãããŸããç®æšã¯ãããé«ã³ã¹ããªãããŒãã§ãŒãºã§ãã¹ãããå¿ èŠãããè¡çªãã¢ã®æ°ãæžããããšã§ãã
äžè¬çãªãããŒããã§ãŒãºæè¡ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- 軞平è¡å¢çããã¯ã¹ (AABB) ãªãŒããŒã©ãããã¹ãïŒããã¯æãäžè¬çã§å¹ççãªãããŒããã§ãŒãºæè¡ã§ããåãªããžã§ã¯ãã¯AABBã§å²ãŸããAABBå士ã®ãªãŒããŒã©ããããã¹ããããŸããAABBããªãŒããŒã©ããããŠããªããã°ããªããžã§ã¯ãã¯è¡çªããŠããå¯èœæ§ã¯ãããŸããã
- 空éåå²ïŒã²ãŒã äžçãããå°ããªé åã«åå²ããåãé åå
ã®ãªããžã§ã¯ãã®ã¿ãè¡çªãã¹ãããŸããäžè¬çãªç©ºéå岿è¡ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- ã°ãªããïŒäžçãåäžãªã»ã«ã®ã°ãªããã«åå²ããŸãã
- ã¯ã¢ããããªãŒ/ãªã¯ããªãŒïŒäžçãååž°çã«å°ããªé åã«åå²ããéå±€çãªæšæ§é ã
- ããŠã³ãã£ã³ã°ããªã¥ãŒã éå±€ (BVH)ïŒåããŒãããªããžã§ã¯ãã®ã»ãããå²ãããŠã³ãã£ã³ã°ããªã¥ãŒã ãè¡šãæšæ§é ã
äŸïŒ2Dãã©ãããã©ãŒããŒã§ã®AABBãªãŒããŒã©ããã®äœ¿çšããã©ãžã«ã§éçºããããã©ãããã©ãŒããŒã²ãŒã ãæ³åããŠã¿ãŠãã ããããã¬ã€ã€ãŒãã£ã©ã¯ã¿ãŒãç¹å®ã®ãã©ãããã©ãŒã ãšè¡çªããŠãããã©ããããã§ãã¯ããåã«ãã²ãŒã ã¯ãŸããããã®AABBããªãŒããŒã©ããããŠãããããã§ãã¯ããŸããAABBã亀差ããŠããªããã°ãã²ãŒã ã¯è¡çªããªããšå€æããããæ£ç¢ºãªïŒãããŠèšç®ã³ã¹ããé«ãïŒãã§ãã¯ãã¹ãããããŸãã
2. ãããŒãã§ãŒãº
ãããŒãã§ãŒãºã¯ããããŒããã§ãŒãºã§ç¹å®ãããè¡çªãã¢ã«å¯ŸããŠãããæ£ç¢ºãªè¡çªæ€åºãå®è¡ããŸããããã«ã¯ãããè€éãªè¡çªåœ¢ç¶ãšã¢ã«ãŽãªãºã ã䜿çšããŠããªããžã§ã¯ããå®éã«è¡çªããŠãããã©ããã倿ããè¡çªç¹ãæ³ç·ãè²«éæ·±åºŠãèšç®ããããšãå«ãŸããŸãã
äžè¬çãªãããŒãã§ãŒãºæè¡ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- åé¢è»žå®ç (SAT)ïŒåžå€è§åœ¢ãŸãã¯åžå€é¢äœéã®è¡çªãæ€åºããããã®åŒ·åãªã¢ã«ãŽãªãºã ããªããžã§ã¯ããäžé£ã®è»žã«å°åœ±ããéãªãããã§ãã¯ããããšã§æ©èœããŸããåé¢è»žïŒå°åœ±ãéãªããªã軞ïŒãååšããã°ããªããžã§ã¯ãã¯è¡çªããŠããŸããã
- ç¹-ããªãŽã³/å€é¢äœãã¹ãïŒç¹ãããªãŽã³ãŸãã¯å€é¢äœã®å éšã«ãããã©ããã倿ããŸããããã¯ãããŒãã£ã¯ã«ãšéçãžãªã¡ããªéã®è¡çªæ€åºã«åœ¹ç«ã¡ãŸãã
- GJK (Gilbert-Johnson-Keerthi) ã¢ã«ãŽãªãºã ïŒ2ã€ã®åžåœ¢ç¶éã®è·é¢ãèšç®ããã¢ã«ãŽãªãºã ãè¡çªãæ€åºããããã«ã䜿çšã§ããŸãã
- ã¬ã€ãã£ã¹ãã£ã³ã°ïŒãããªããžã§ã¯ãããå¥ã®ãªããžã§ã¯ãã«ã¬ã€ïŒå ç·ïŒãéãããããäœããã®ãžãªã¡ããªãšäº€å·®ãããã©ããããã§ãã¯ããŸããããã¯ãçºå°ç©ã®ã·ãã¥ã¬ãŒã·ã§ã³ãèŠç·èšç®ã«åœ¹ç«ã¡ãŸãã
äŸïŒæ¥æ¬ã§éçºãããæ Œéã²ãŒã ã§ã®SATã®äœ¿çšãæ Œéã²ãŒã ã§ã¯ãããããæ£ç¢ºã«ç»é²ããããã«ç²Ÿå¯ãªè¡çªæ€åºãå¿ èŠã§ããã²ãŒã ã¯åé¢è»žå®çïŒSATïŒã䜿çšããŠããã£ã©ã¯ã¿ãŒã®ãã³ããçžæã«æ¥ç¶ãããã©ããã倿ããŸãããã£ã©ã¯ã¿ãŒã®æ³ãšçžæã®äœãæ§ã ãªè»žã«å°åœ±ããããšã§ãã²ãŒã ã¯è€éãªãã£ã©ã¯ã¿ãŒã¢ãã¡ãŒã·ã§ã³ã§ãè¡çªãçºçãããã©ããã倿ã§ããŸãã
è¡çªæ€åºã¢ã«ãŽãªãºã ã®è©³çް
1. 軞平è¡å¢çããã¯ã¹ (AABB) ãªãŒããŒã©ãããã¹ã
AABBãªãŒããŒã©ãããã¹ãã¯ãæãã·ã³ãã«ã§å¹ççãªè¡çªæ€åºã¢ã«ãŽãªãºã ã§ããAABBã¯ã座æšè»žã«å¹³è¡ãªé·æ¹åœ¢ïŒ2DïŒãŸãã¯çŽæ¹äœïŒ3DïŒã§ãã2ã€ã®AABBããªãŒããŒã©ããããŠãããã©ããããã¹ãããã«ã¯ãåè»žã«æ²¿ã£ãŠãããã®ç¯å²ãéãªã£ãŠãããã©ããããã§ãã¯ããã ãã§ãã
ã¢ã«ãŽãªãºã (2D):
function AABBOverlap(aabb1, aabb2):
if (aabb1.minX > aabb2.maxX) or (aabb1.maxX < aabb2.minX):
return false // X軞ã§éè€ãªã
if (aabb1.minY > aabb2.maxY) or (aabb1.maxY < aabb2.minY):
return false // Y軞ã§éè€ãªã
return true // 䞡軞ã§éè€ãã
å©ç¹ïŒ
- å®è£ ãã·ã³ãã«ã§å¹ççã
- ãããŒããã§ãŒãºã®è¡çªæ€åºã«é©ããŠããã
æ¬ ç¹ïŒ
- è€éãªåœ¢ç¶ã«ã¯ããŸãæ£ç¢ºã§ã¯ãªãã
- ãªããžã§ã¯ããAABBã«ãŽã£ãããšå²ãŸããŠããªãå Žåãåœéœæ§ïŒèª€æ€åºïŒãçæããå¯èœæ§ãããã
2. åé¢è»žå®ç (SAT)
åé¢è»žå®çïŒSATïŒã¯ãåžå€è§åœ¢ãŸãã¯åžå€é¢äœéã®è¡çªãæ€åºããããã®åŒ·åãªã¢ã«ãŽãªãºã ã§ãããã®å®çã¯ã2ã€ã®åžãªããžã§ã¯ãã®å°åœ±ãéãªããªããããªç·ïŒ2DïŒãŸãã¯å¹³é¢ïŒ3DïŒãååšããå Žåããããã®ãªããžã§ã¯ãã¯è¡çªããŠããªããšè¿°ã¹ãŠããŸãã
ã¢ã«ãŽãªãºã (2D):
- äž¡æ¹ã®ããªãŽã³ã®å蟺ã«ã€ããŠãæ³ç·ãã¯ãã«ïŒèŸºã«åçŽãªãã¯ãã«ïŒãèšç®ããŸãã
- åæ³ç·ãã¯ãã«ïŒåé¢è»žïŒã«ã€ããŠïŒ
- äž¡æ¹ã®ããªãŽã³ãæ³ç·ãã¯ãã«ã«å°åœ±ããŸãã
- å°åœ±ãéãªã£ãŠããããã§ãã¯ããŸããéãªã£ãŠããªããã°ãããªãŽã³ã¯è¡çªããŠããŸããã
- ãã¹ãŠã®å°åœ±ãéãªã£ãŠããå ŽåãããªãŽã³ã¯è¡çªããŠããŸãã
å©ç¹ïŒ
- åžåœ¢ç¶ã«å¯ŸããŠæ£ç¢ºãªè¡çªæ€åºãå¯èœã
- è¡çªç¹ãæ³ç·ãè²«éæ·±åºŠãèšç®ã§ããã
æ¬ ç¹ïŒ
- AABBãªãŒããŒã©ãããããå®è£ ãè€éã
- 蟺ã®å€ãè€éãªåœ¢ç¶ã§ã¯èšç®ã³ã¹ããé«ããªãå¯èœæ§ãããã
- åžåœ¢ç¶ã«ããæ©èœããªãã
3. GJK (Gilbert-Johnson-Keerthi) ã¢ã«ãŽãªãºã
GJKã¢ã«ãŽãªãºã ã¯ã2ã€ã®åžåœ¢ç¶éã®è·é¢ãèšç®ããããã®ã¢ã«ãŽãªãºã ã§ããè·é¢ããŒããã©ããããã§ãã¯ããããšã§ãè¡çªãæ€åºããããã«ã䜿çšã§ããŸããGJKã¢ã«ãŽãªãºã ã¯ã2ã€ã®åœ¢ç¶ã®ãã³ã³ãã¹ããŒå·®ã«ãããåç¹ã«æãè¿ãç¹ãèŠã€ããããšãç¹°ãè¿ãããšã§æ©èœããŸãã2ã€ã®åœ¢ç¶AãšBã®ãã³ã³ãã¹ããŒå·®ã¯ãA - B = {a - b | a â A, b â B}ãšããŠå®çŸ©ãããŸãã
å©ç¹ïŒ
- å¹ åºãåžåœ¢ç¶ã«å¯Ÿå¿å¯èœã
- æ¯èŒçã«å¹ççã
æ¬ ç¹ïŒ
- AABBãªãŒããŒã©ãããããå®è£ ãè€éã
- æ°å€èª€å·®ã«ææãªå Žåãããã
æé©åæè¡
è¡çªæ€åºã¯ãç¹ã«å€ãã®ãªããžã§ã¯ããæã€ã²ãŒã ã§ã¯ãèšç®ã³ã¹ãã®é«ãããã»ã¹ã«ãªãå¯èœæ§ããããŸãããããã£ãŠãããã©ãŒãã³ã¹ãåäžãããããã«æé©åæè¡ã䜿çšããããšãéèŠã§ãã
- ãããŒããã§ãŒãºè¡çªæ€åºïŒåè¿°ã®ããã«ããããŒããã§ãŒãºã¯ãããŒãã§ãŒãºã§ãã¹ãããå¿ èŠãããè¡çªãã¢ã®æ°ãæžãããŸãã
- ããŠã³ãã£ã³ã°ããªã¥ãŒã éå±€ (BVH)ïŒBVHã¯ãã²ãŒã äžçãååž°çã«å°ããªé åã«åå²ããæšæ§é ã§ããããã«ãããäžçã®å€§éšåãè¡çªæ€åºããè¿ éã«é€å€ã§ããŸãã
- 空éåå²ïŒã²ãŒã äžçãããå°ããªé åïŒäŸïŒã°ãªãããã¯ã¢ããããªãŒã䜿çšïŒã«åå²ããåãé åå ã®ãªããžã§ã¯ãã®ã¿ãè¡çªãã¹ãããŸãã
- è¡çªãã£ãã·ã³ã°ïŒè¡çªæ€åºãã¹ãã®çµæãä¿åãããªããžã§ã¯ããå€§å¹ ã«ç§»åããŠããªãå Žåã¯åŸç¶ã®ãã¬ãŒã ã§åå©çšããŸãã
- 䞊ååïŒè¡çªæ€åºã®ã¯ãŒã¯ããŒããè€æ°ã®CPUã³ã¢ã«åæ£ãããŸãã
- SIMD (Single Instruction, Multiple Data) åœä»€ã®äœ¿çšïŒSIMDåœä»€ã䜿çšãããšãè€æ°ã®ããŒã¿ãã€ã³ãã«å¯ŸããŠåæã«åãæäœãå®è¡ã§ããŸããããã«ãããè¡çªæ€åºã®èšç®ãå€§å¹ ã«é«éåã§ããŸãã
- è¡çªåœ¢ç¶ã®æ°ãæžããïŒããåçŽãªè¡çªåœ¢ç¶ã䜿çšããããè€æ°ã®è¡çªåœ¢ç¶ãåäžã®åœ¢ç¶ã«çµã¿åããããããããšã§ãè¡çªæ€åºã®è€éãã軜æžã§ããŸãã
- ã¹ãªãŒãç¶æ 管çïŒéæ¢ããŠãããªããžã§ã¯ãã¯ç¶ç¶çãªè¡çªãã§ãã¯ãå¿ èŠãšããŸãããã¹ãªãŒãç¶æ ã·ã¹ãã ã¯ãäžèŠãªèšç®ãé²ãããšãã§ããŸãã
äŸïŒéåœã§éçºããããªã¢ã«ã¿ã€ã ã¹ãã©ããžãŒïŒRTSïŒã²ãŒã ã§ã®ã¯ã¢ããããªãŒã®äœ¿çšãRTSã²ãŒã ã§ã¯ãç»é¢äžã«æ°çŸãŸãã¯æ°åã®ãŠããããåæã«è¡šç€ºãããããšããããããŸããè¡çªæ€åºã®èšç®è² è·ã管çããããã«ãã²ãŒã ã¯ã¯ã¢ããããªãŒã䜿çšããŠã²ãŒã ããããå°ããªé åã«åå²ããŸããåãã¯ã¢ããããªãŒããŒãå ã®ãŠãããã®ã¿ãè¡çªããã§ãã¯ãããå¿ èŠãããããã¬ãŒã ããšã«å®è¡ãããè¡çªãã§ãã¯ã®æ°ãå€§å¹ ã«åæžããŸãã
å®è·µçãªå®è£ äžã®èæ ®äºé
ã²ãŒã ã«è¡çªæ€åºãå®è£ ããéã«ã¯ãããã€ãã®å®è·µçãªèæ ®äºé ãå¿ã«çããŠããå¿ èŠããããŸãïŒ
- 粟床 vs. ããã©ãŒãã³ã¹ïŒç²ŸåºŠãšããã©ãŒãã³ã¹ã®éã«ã¯ãã°ãã°ãã¬ãŒããªããååšããŸããããæ£ç¢ºãªè¡çªæ€åºã¢ã«ãŽãªãºã ã¯ãéåžžãããèšç®ã³ã¹ããé«ããªããŸãã劥åœãªãã¬ãŒã ã¬ãŒããç¶æãã€ã€ã蚱容ã§ããã¬ãã«ã®ç²ŸåºŠãæäŸããã¢ã«ãŽãªãºã ãéžæããå¿ èŠããããŸãã
- è¡çªåœ¢ç¶ã®éžæïŒã²ãŒã ãªããžã§ã¯ãã«é©ããè¡çªåœ¢ç¶ãéžæããããšã¯ã粟床ãšããã©ãŒãã³ã¹ã®äž¡æ¹ã«ãšã£ãŠéèŠã§ããããåçŽãªåœ¢ç¶ïŒäŸïŒAABBãçïŒã¯è¡çªãã¹ããé«éã§ããããªããžã§ã¯ãã®ãžãªã¡ããªãæ£ç¢ºã«è¡šçŸããŠããªãå ŽåããããŸããããè€éãªåœ¢ç¶ïŒäŸïŒåžå ãããªãŽã³ïŒã¯ããæ£ç¢ºã§ãããèšç®ã³ã¹ããé«ããªããŸãã
- è¡çªå¿çïŒè¡çªãæ€åºãããããè¡çªå¿çãåŠçããå¿ èŠããããŸããããã«ã¯ãè¡çªã®çµæãšããŠãªããžã§ã¯ãã«é©çšãããåãšãã«ã¯ãèšç®ããããšãå«ãŸããŸãã
- æ°å€çå®å®æ§ïŒè¡çªæ€åºã¢ã«ãŽãªãºã ã¯ãç¹ã«æµ®åå°æ°ç¹æ°ãæ±ãå Žåãæ°å€èª€å·®ã«ææã«ãªãå¯èœæ§ããããŸããå粟床浮åå°æ°ç¹æ°ã䜿çšããããåºå®å°æ°ç¹æŒç®ã䜿çšããããããªã©ãæ°å€çå®å®æ§ãåäžãããæè¡ã䜿çšããããšãéèŠã§ãã
- ç©çãšã³ãžã³ãšã®çµ±åïŒã»ãšãã©ã®ã²ãŒã ãšã³ãžã³ã¯ãè¡çªæ€åºãšå¿çãåŠçããçµã¿èŸŒã¿ã®ç©çãšã³ãžã³ãæäŸããŠããŸããç©çãšã³ãžã³ã䜿çšãããšãéçºããã»ã¹ãç°¡çŽ åãããã²ãŒã ã®ãªã¢ãªãºã ãåäžããŸããäžè¬çãªéžæè¢ã«ã¯ãUnityã®çµã¿èŸŒã¿ç©çãšã³ãžã³ãUnreal Engineã®PhysXãããã³Bullet Physics Libraryã®ãããªãªãŒãã³ãœãŒã¹ãšã³ãžã³ããããŸãã
- ãšããžã±ãŒã¹ïŒè¡çªæ€åºãèšèšããéã«ã¯ãåžžã«ãšããžã±ãŒã¹ãèæ ®ããŠãã ãããã·ã¹ãã ãé«éã§ç§»åãããªããžã§ã¯ãããã³ããªã³ã°åé¡ïŒé«éã®ããã«ãªããžã§ã¯ããäºããããæããïŒãããã³éãªãåããªããžã§ã¯ããé©åã«åŠçã§ããããã«ããŠãã ããã
è¡çªå¿ç
è¡çªæ€åºã¯æŠãã®ååã«ãããŸãããè¡çªå¿çã¯ãè¡çªãæ€åºããã*åŸ*ã«äœãèµ·ããããæ±ºå®ããŸããããã¯ãä¿¡é Œã§ããç©çã·ãã¥ã¬ãŒã·ã§ã³ãäœæããããã®éèŠãªéšåã§ããè¡çªå¿çã®äž»èŠãªèŠçŽ ã¯æ¬¡ã®ãšããã§ãïŒ
- æåã®èšç®ïŒæåã¯ãè¡çªäžã®éåéã®å€åã衚ããçæéã«é©çšããã倧ããªåã§ããæåã®å€§ãããšæ¹åã¯ãè¡çªãããªããžã§ã¯ãã®è³ªéããããã®é床ãããã³åçºä¿æ°ïŒè·³ãè¿ãã®å°ºåºŠïŒã«äŸåããŸãã
- åã®é©çšïŒèšç®ãããæåã¯ãè¡çªãããªããžã§ã¯ãã«é©çšãããåã«å€æããããããã®é床ãå€åãããŸãã
- 貫éã®è§£æ±ºïŒè¡çªæ€åºã¢ã«ãŽãªãºã ããªããžã§ã¯ãã®ããããªè²«éã蚱容ããå Žåã貫é解決ã¯ããããé¢ããŠéãªããè§£æ¶ããŸããããã«ã¯ãè¡çªæ³ç·ã«æ²¿ã£ãŠãªããžã§ã¯ããç§»åãããããšãå«ãŸããŸãã
- æ©æŠïŒè¡çªãã衚é¢éã®æ©æŠãã·ãã¥ã¬ãŒããããšããªã¢ãªãºã ãå¢ããŸããéæ¢æ©æŠã¯ãç¹å®ã®åã®ãããå€ã«éãããŸã§ãªããžã§ã¯ããæ»ãã®ãé²ããåæ©æŠã¯æ»ãå§ãããšéåã«æµæããŸãã
- é³ãšèŠèŠå¹æïŒå¹æé³ïŒäŸïŒè¡çªé³ïŒãèŠèŠå¹æïŒäŸïŒç«è±ïŒãããªã¬ãŒããããšã§ããã¬ã€ã€ãŒã®äœéšãåäžãããè¡çªã«é¢ãããã£ãŒãããã¯ãæäŸã§ããŸãã
äŸïŒã€ã®ãªã¹ã§éçºãããã¬ãŒã·ã³ã°ã²ãŒã ã§ã®è¡çªå¿çãã¬ãŒã·ã³ã°ã²ãŒã ã§ã¯ãè»å士ã®è¡çªãæ£ç¢ºã«ã·ãã¥ã¬ãŒãããããšããªã¢ã«ãªäœéšã®ããã«äžå¯æ¬ ã§ãã2å°ã®è»ãè¡çªãããšãã²ãŒã ã¯ãããã®é床ãšè³ªéã«åºã¥ããŠæåãèšç®ããŸãããã®æåã¯ãè»ã®é床ãå€åãããåãé©çšããããã«äœ¿çšãããè»å士ãè·³ãè¿ãåå ãšãªããŸãããŸããã²ãŒã ã¯è»ãäºãã«ãã蟌ãã®ãé²ãããã«ããããã貫éã解決ããŸããããã«ããªã¢ã«ãªã¿ã€ã€ãšå°é¢ã®æ¥è§Šãçã¿åºãããã³ããªã³ã°ãšå®å®æ§ã«åœ±é¿ãäžããããã«æ©æŠãã·ãã¥ã¬ãŒããããŸãã
é«åºŠãªæè¡
é«åºŠãªã¢ããªã±ãŒã·ã§ã³ã®ããã«ã¯ã以äžã®æè¡ãæ€èšããŠãã ããïŒ
- å€åœ¢å¯èœãªè¡çªã¢ãã«ïŒåžãæµäœã®ãããªãœããããã£ã®ç©çãã·ãã¥ã¬ãŒãããããããããã®ã¢ãã«ã¯ã¯ããã«å€ãã®åŠçèœåãå¿ èŠãšããŸãããã¯ããã«ãªã¢ã«ãªã·ãã¥ã¬ãŒã·ã§ã³ãäœæã§ããŸãã
- éãŠãŒã¯ãªãã空éïŒäžéšã®ã²ãŒã ãã·ãã¥ã¬ãŒã·ã§ã³ã¯ãéãŠãŒã¯ãªãã空éã§è¡ãããå ŽåããããŸãããããã®ç©ºéã§ã®è¡çªæ€åºãšå¿çã«ã¯ãç¹æ®ãªæè¡ãå¿ èŠã§ãã
- è§ŠèŠãã£ãŒãããã¯ã®çµ±åïŒãã©ãŒã¹ãã£ãŒãããã¯ããã€ã¹ã远å ãããšãæ²¡å ¥æãåçã«åäžããŸãããªã¢ã«ãªåãçæããã«ã¯ãæ£ç¢ºãªè¡çªããŒã¿ãå¿ èŠã§ãã
çµè«
è¡çªæ€åºã¯ã²ãŒã ç©çåŠã®åºæ¬çãªåŽé¢ã§ããããªã¢ã«ã§é åçãªã²ãŒã ãã¬ã€äœéšãåµãåºãäžã§éèŠãªåœ¹å²ãæãããŸãããã®èšäºã§èª¬æããåºæ¬æŠå¿µãã¢ã«ãŽãªãºã ãããã³æé©åæè¡ãçè§£ããããšã§ãã²ãŒã éçºè ã¯ãã²ãŒã ã®åè³ªãšæ²¡å ¥æãé«ããå ç¢ã§å¹ççãªè¡çªæ€åºã·ã¹ãã ãå®è£ ã§ããŸããæåã®ã¢ãããŒãã¯ãå€ãã®å Žåããããžã§ã¯ãã®ç¹å®ã®ããŒãºã«åãããŠèª¿æŽãããæè¡ã®çµã¿åããã§ããããšãå¿ããªãã§ãã ãããã²ãŒã ã®äžçããŸããŸãè€éã«ãªãã«ã€ããŠãè¡çªæ€åºãç¿åŸããããšã¯ãäžçäžã®ãã¬ã€ã€ãŒã«ãšã£ãŠçã«ä¿¡é Œã§ããã€ã³ã¿ã©ã¯ãã£ããªäœéšãåµé ããããã«ããã«éèŠã«ãªããŸããããŸããŸãªæ¹æ³ã詊ãã粟床ãããã©ãŒãã³ã¹ãããã³ã²ãŒã ãã¬ã€ã®æè§Šã®æé©ãªãã©ã³ã¹ãéæããããã«ã·ã¹ãã ã埮調æŽããããšãæããªãã§ãã ããã