ãã®ã·ãªãŒãºã®èšäºã§ã¯ããããªã²ãŒã ã®
ééååŠã玹ä»ããŸãã æ
ãå§ããåã«ã
æç¶ãåã¢ãã¡ãŒã·ã§ã³ã䜿çšããããã€ãã®ã²ãŒã ãšãããããåŸæ¥ã®ãªãœãŒã¹ããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ãšã©ã®ããã«ç°ãªããã«ã€ããŠã話ããŸãã
ã·ãªãŒãºã¯ã次ã®éšåã§æ§æãããŸãã
ããŒã1.æç¶ãåã¢ãã¡ãŒã·ã§ã³ã®æŠèŠ
ã»ãšãã©ã®ã²ãŒã ã§ã¯ããã£ã©ã¯ã¿ãŒã¢ãã¡ãŒã·ã§ã³ã¯ãéçãã§ãã ãã£ã©ã¯ã¿ãŒãç»é¢äžã移åãããšãã¢ãŒãã£ã¹ãã¯ç¹å®ã®åããäœæããŸãã ãããã¯æåã§äœæãããããã¢ãŒã·ã§ã³ãã£ããã£ã䜿çšããŠèšé²ãããŸãã ãã®å Žåã®ã¢ãã¡ãŒã·ã§ã³ã¯ãäºåã«äœæããã
ãªãœãŒã¹ã§ãã ãã£ã©ã¯ã¿ãŒãå¥ã®ã¢ã¯ã·ã§ã³ãå®è¡ããå¿
èŠãããå Žåãå¥ã®ã¢ãã¡ãŒã·ã§ã³ãå¿
èŠã§ãã ãã£ã©ã¯ã¿ãŒã®åããå®è£
ãããã®æ¹æ³ã¯ãã²ãŒã æ¥çã§ã¯ããªãæšæºçã§ãã æ©è¡ããžã£ã³ããå°æãªã©ã®æãäžè¬çã«äœ¿çšãããåäœãå«ãã¢ãã¡ãŒã·ã§ã³ã®å€§èŠæš¡ã§è©³çŽ°ãªã³ã¬ã¯ã·ã§ã³ããããŸãã åŸæ¥ã®ã¢ãã¡ãŒã·ã§ã³ã¯ã²ãŒã æ¥çãæ¯é
ããŠããŸãããåçã®ä»£æ¿æ段ããããŸãã
æç¶ãåã¢ãã¡ãŒã·ã§ã³ã®æŠå¿µã玹ä»ããããšæããŸãã
ããã§ã®äž»ãªã¢ã€ãã¢ã¯ããã£ã©ã¯ã¿ãŒã®ç¶æ
ã®ç¬éãæç¶ãçã«çæã§ãããšããããšã§ãã æç¶ãåã¢ãã¡ãŒã·ã§ã³ãçæããããã®æãæšæºçãªææ³ã®1ã€ã¯ãç©çã·ãã¥ã¬ãŒã·ã§ã³ã䜿çšããŸãã ãããã£ãŠãå€ãã®å Žåã
ç©çã¢ãã¡ãŒã·ã§ã³ ïŒ
Wikipedia ïŒãšåŒã°ããŸãã å
žåçãªäŸã¯æ°Žã§ãã æåã§ã¢ãã¡ãŒã·ã§ã³åãããã
æµäœååŠãèæ
®ããã¢ãã¡ãŒã·ã§ã³ã䜿çšã§ããŸãã
以äžã§ã¯ãåäœã·ãã¥ã¬ãŒã·ã§ã³ã䜿çšããç©çã¢ãã¡ãŒã·ã§ã³ã®éåžžã«å
·äœçãªäºçš®ã«ã€ããŠèª¬æããŸãã åãã¿ã€ãã®ã·ãã¥ã¬ãŒã·ã§ã³ã¯ãUnityãUnrealãªã©ã®ã²ãŒã ãšã³ãžã³ã§äžè¬çã«äœ¿çšãããŠããŸãã ãã®åçŽãªåçãã²ãŒã ã§ã©ã®ããã«äœ¿çšãããŠç©ççãªã¢ãã¡ãŒã·ã§ã³ãäœæããããèŠãŠã¿ãŸãããã
ã©ã°ããŒã«ç©çåŠ
ç©ççãªã¢ãã¡ãŒã·ã§ã³ã®æ žãšãªãã®ã¯ããã£ã©ã¯ã¿ãŒã®åããã·ãã¥ã¬ãŒãããå¯èœæ§ã®ååã§ãã 人äœãæ¯é
ããããã»ã¹ãšå¶éãåäœæããããšã«ãããçŸå®çãªè¡åã®äœæã«è¿ã¥ãããšãã§ããŸãã æç¶ãåã¢ãã¡ãŒã·ã§ã³ãäœæããæãç°¡åã§å¹æçãªæ¹æ³ã®1ã€ã¯
ãã©ã°ããŒã«ïŒã©ã°ããŒã«ãã©ã°ããŒã«ïŒã®
ç©çåŠã䜿çšããããšã§ãïŒ
Wikipedia ïŒã ã¢ã€ãã¢ã¯ããã¥ãŒããã€ãããã£ãäœæãããã®ãã¹ãŠã®ãªã³ã¯ããžã§ã€ã³ãã§æ¥ç¶ããŠãå®éã®ãããã¿ã€ãã瀺ãèªç±åºŠãåçŸããããšã§ãã åºäœç©çãšé¢ç¯ã®å¶çŽã䜿çšããã ãã§ã人ã®äœã®è»¢åãã·ãã¥ã¬ãŒãã§ããŸãã ããã¯ããæ»ã®ã¢ãã¡ãŒã·ã§ã³ãã§ãéãç¯çŽããã ãã§ã¯ãããŸããã ãŸããçŸå®çã«èœã¡ãŠç°å¢ãšçžäºäœçšãããã£ã©ã¯ã¿ãŒãäœæããããšãã§ããŸãã ãã®ãããªã¿ã¹ã¯ã¯ã粟床ã«é¢ä¿ãªããæ¢è£œã®ã¢ãã¡ãŒã·ã§ã³ã»ããã ãã§ã¯è§£æ±ºããããšã¯ã»ãšãã©äžå¯èœã§ãã
ã©ã°ããŒã«ã®æ倧ã®æ¬ ç¹ã¯ããã®éåžžã«äºæž¬äžå¯èœãªããšã§ãããããã¯ãã°ãã°éåžžã«é¢çœãåäœã«ã€ãªãããŸãã
ä»æ¥ãã©ã°ããŒã«ã¯ã²ãŒã ã§éåžžã«ããç¥ãããŠããŸãã Unityã«ã¯ã人åã¢ãã«ãã©ã°ããŒã«ã«ãã°ããå€æã§ããã·ã³ãã«ãª
ã©ã°ããŒã«ãŠã£ã¶ãŒãããŒã«ããããŸãã
ãœãªããã¹ããŒãã·ãã¥ã¬ãŒã·ã§ã³
ã©ã°ããŒã«ã®äž»ãªåé¡ã¯ãã¢ãŒã·ã§ã³ã³ã³ãããŒã«ã®æ¬ åŠã§ãã äœã®åéšããžã§ã€ã³ãã§æ¥ç¶ãããšããã£ã©ã¯ã¿ãŒã¯æ©ãããšããžã£ã³ãããããšãã§ããªããªããŸãã 圌ã¯èœã¡ãã ãã§ãã ãã ããæ··åã¢ãããŒãã䜿çšã§ããç¶æ³ããããŸãã
Grow Homeãæ°åŠã䜿çšããŠããŒãœããªãã£ãçæããæ¹æ³ã®èšäºã§
ãã²ãŒã ãžã£ãŒããªã¹ãã®
Alex WiltshireãUbisoftã«
Grow Homeã«ã€ããŠè©±ããŠããŸãã ãã®ã²ãŒã ã®äž»ãªæ©èœã®1ã€ã¯ã䞻人å
¬ã®åãã®æªãïŒBUDïŒã§ãã å°ãªããšã
åŸæ¥ã®æå³ã§ã¯ãã²ãŒã ã«ã¯æ¢è£œã®ã¢ãã¡ãŒã·ã§ã³ã¯ãããŸããã ãã¬ãŒã€ãŒã移åãããšãèãšè
ã®äœçœ®ã¯ã³ãŒãã«ãã£ãŠå¶åŸ¡ãããŸãã äœã®äžéšã«ã¯ã©ã°ããŒã«ãšåãå¶éãé©çšããããããé
åçãªã¢ãã¡ãŒã·ã§ã³ãäœæããå¿
èŠããããŸãã
åæ§ã®ååã
Rain Worldã§ãç©æ¥µçã«äœ¿çšãããŠããŸãã ã²ãŒã å
ã®ååç©ã«ã¯ãè€æ°ã®ã³ã©ã€ããŒã§æ§æãããäœããããŸãã ãããã®äžéšã¯ã³ãŒãã«ãã£ãŠå¶åŸ¡ããããã®ä»ã¯ã¢ãŒãã£ãã¥ã¬ãŒã·ã§ã³ã«ãã£ãŠå¶åŸ¡ãããŸãã ããã¯ä»¥äžã®ã¢ãã¡ãŒã·ã§ã³ã§èŠãããšãã§ããŸãã ç犜é¡ã®ç¿Œã®ç«¯ç¹ã¯ããã°ã©ã ã§ç§»åããæ®ãã®éªšã¯ãã³ãžã§æ¥ç¶ãããŠããŸãã ãšã³ããã€ã³ã管çã¯ãããã§ãªããã°äžå¯èœã ã£ãã¹ã ãŒãºãªã¢ãã¡ãŒã·ã§ã³ãèªåçã«äœæããŸãã
Grow HomeãšRain Worldã®äž¡æ¹ã§ãæç¶ãåã¢ãã¡ãŒã·ã§ã³ã䜿çšããŠãã£ã©ã¯ã¿ãŒã®ãªã¢ãªãºã ã匷åããŸãã ãã ããã³ã³ãããŒã©ãŒã¯ãããã®ã¢ãã¡ãŒã·ã§ã³ã«äŸåããŸããã
Gang Beastsã²ãŒã ã§ã¯
ããã®æŠå¿µã¯ããã«çºå±ããŠããŸãã ã²ãŒã ã¯ã©ã°ããŒã«ç©çåŠã®äœ¿çšã«èµ·å ãããŒãããåããå®å
šã«æ¿èªããŸãã ãã®çµæãäºæž¬äžå¯èœãªåãã®ããé¢çœããã£ã©ã¯ã¿ãŒãã§ããŸãã
ééååŠ
åäœã·ãã¥ã¬ãŒã·ã§ã³ã«ãããã¢ãã¡ãŒã·ã§ã³ãç°¡åã«äœæã§ããŸãã ããã®è
ãšèãã©ãã«ããã¹ããã瀺ããç©çãšã³ãžã³ãæ®ããè¡ããŸãã ãã®éåžžã«ã·ã³ãã«ãªã¢ãããŒãã¯ã·ã³ãã«ãªãã£ã©ã¯ã¿ãŒã§æ©èœããŸãããå€ãã®å Žåãªã¢ãªãºã ã«æ¬ ããŠããŸãã ãœãªããããã£ã·ãã¥ã¬ãŒã·ã§ã³ã§ã¯ãéåã質éãªã©ã®ãã©ã¡ãŒã¿ãŒã®ã¿ãèæ
®ãããŸãããã³ã³ããã¹ãã«é¢ããç¥èã¯ãããŸããã å€ãã®å Žåãéåãååç©ã«ããå¶éã®åœ±é¿äžã§ã®ã¿äœçšãããã®ãäœæããå¿
èŠããããŸãã
æç¶ãåã¢ãã¡ãŒã·ã§ã³ãäœæãã次ã®ã¹ãããã¯ã
ééååŠãšããŠç¥ãããŠããŸãã ããããã¿ã€ãã®ã©ã°ããŒã«ã«ã€ããŠãã€ã³ããŒã¹ããããã£ã¯ã¹ã¯ãç®çã®ç®æšãéæããããã«ãããåããæ¹æ³ãèšç®ããŸãã Grow HomeãšRain Worldã§ã¯ãç©çåŠèªäœãéåã®åœ±é¿ãåããååç©ã®ç§»åæ¹æ³ã決å®ããŸãã ééååŠã¯ãããããé©åãªãã§ãŒãºã§ç§»åãããŸãã
ãã®ã³ã³ã»ãããç©æ¥µçã«äœ¿çšãããæåã®ã€ã³ãã£ãŒãºã²ãŒã ã®1ã€ã¯ã
The Future Proof Gamesã¹ã¿ãžãªã® The Majesty Of Colorã§ããã ãã®äžã§ããã¬ã€ã€ãŒã¯æµ·ã®çãç©ã®è§Šæãå¶åŸ¡ããŸãã Rain Worldã®é³¥ã®çŸœãšã¯ç°ãªãããã®è§Šæã¯ãã³ãžã ãã§ã¯ãããŸããã 觊æã®ç«¯ç¹ãç®çã®ç¹ã«å°éããããã«ãåã»ã°ã¡ã³ããå転ããŸãã ãã®ã¢ãã¡ãŒã·ã§ã³ã§ãœãªããããã£ã·ãã¥ã¬ãŒã·ã§ã³ã®ã¿ã䜿çšããå Žåã觊æã¯ããŒãã®ããã«ãã®ãã€ã³ãã«ãåºå®ããããŠããããã«èŠããŸãã
ééååŠã¯ãå€ãã®åé¡ã解決ããããã«äœ¿çšã§ããŸãã æãæšæºçãªã®ã¯ãç¹å®ã®ãªããžã§ã¯ããžã®ãã¥ãŒããã€ããã£ã©ã¯ã¿ãŒã®èªç¶ãªåãã§ãã éçºè
ã¯ãäºåå®çŸ©ãããã¢ãã¡ãŒã·ã§ã³ã䜿çšãã代ããã«ãæãéæãã¹ãç®æšãåã«ç€ºãã ãã§ãã ééååŠã¯æ®ããè¡ããæã®é¢ç¯ãåããæãèªç¶ãªæ¹æ³ãèŠã€ããŸãã ãœãªããã®ã·ãã¥ã¬ãŒã·ã§ã³ã®ã¿ã䜿çšãããšãåãããããããããäœã®äžéšãåã«ãã©ãã°ã¢ã³ããããããããŠããããã«èŠããŸãã
MechanimãšããUnityã¢ãã¡ãŒã·ã§ã³ãšãã£ã¿ãŒã«ã¯ãéçºè
ããã¥ãŒããã€ããã£ã©ã¯ã¿ãŒã«ééååŠã䜿çšã§ããããŒã«ïŒ
Unityãã«ã ïŒããããŸãã
ãã®äžé£ã®èšäºã®æ®ãã§ã¯ãééååŠã®åé¡ã®è§£æ±ºã«çŠç¹ãåœãŠãŸãã ããããã¢ãŒã ãŸãã¯ã¢ã³ã¹ã¿ãŒã®è§Šæãå¶åŸ¡ããæ¹æ³ãç解ããŸãã
ããŒã2.çŽæ¥éååŠã®æ°åŠ
ããã
ééååŠã®äžçãžã®æ
ãå§ããŸãããã ãã®åé¡ã解決ããæ¹æ³ã¯ãããããããŸããããããã¯ãã¹ãŠ
çŽæ¥éååŠããå§ãŸããŸãã
ã€ã³ããŒã¹ããããã£ã¯ã¹ã¯ã空éå
ã®ãã€ã³ããååŸããããã«å°éããããã«æãåããæ¹æ³ãæããŠãããŸãã çŽæ¥éååŠã¯ãå察ã®
äºéåé¡ã解決ããŸãã ç§ãã¡ãã©ã®ããã«æãåããããç¥ã£ãŠã圌女ã¯æã空éã®ã©ã®ç¹ã«éããããæããŠãããŸãã
ããããã¢ãŒã
ééååŠã¯ããšããš
ãããããããã¥ã¬ãŒã¿ãŒãå¶åŸ¡ããããã«äœ¿çšãããŸããã ãããã£ãŠããã®ã·ãªãŒãºã®èšäºã§ã¯ãããããå·¥åŠã®åæãšçšèªã䜿çšããŸãã ãã ããããã¯ééååŠã®å¯èœãªã¢ããªã±ãŒã·ã§ã³ãå¶éããŸããã 人éã®æãã¯ã¢ã®è¶³ã觊æã«äœ¿çšã§ããŸãã
ãŸãããããããã¢ãŒã ããšããçšèªã®æå³ã瀺ãããšããå§ããŸãããã
äžã®ç»åã¯ãããžã§ã€ã³ããã§æ¥ç¶ããããæ足ãã§äœãããæšæºçãªããããã¢ãŒã ã瀺ããŠããŸãã ç»åã«ç€ºãããŠããããããã«ã¯5ã€ã®ç¬ç«ããé¢ç¯ãããããã5ã€
ã®èªç±åºŠããããšèããããŠããŸãã åãžã§ã€ã³ãã¯ãšã³ãžã³ã«ãã£ãŠå¶åŸ¡ãããŸããããã«ããããžã§ã€ã³ãã«åãä»ãããããªã³ã¯ãç¹å®ã®è§åºŠã«ç§»åã§ããŸãã
ããäžè¬çãªäŸãæ€èšããããã«ãå
±åå³ãæãããšãã§ããŸãã ãã®èšäºã§ã¯ãåãžã§ã€ã³ãã1ã€ã®è»žã§ã®ã¿å転ã§ãããšä»®å®ããŸãã
ããããã¢ãŒã ã®ç«¯ã«åãä»ããããããŒã«ã¯ã
ãšã³ããªã³ã¯ãšåŒã°ããŸãã ã³ã³ããã¹ãã«å¿ããŠã1èªç±åºŠãšèŠãªãããå Žåãšãããªãå ŽåããããŸãã ãã®èšäºã§ã¯ãç®çã®ãã€ã³ãã«å°éããããã®ç§»åã®ã¿ã«çŠç¹ãåœãŠããããæçµãªã³ã¯ã¯èæ
®ãããŸããã
çŽæ¥éååŠ
ãã®äŸã§ã¯ãåãžã§ã€ã³ãã¯1ã€ã®è»žã§å転ã§ããŸãã ãããã£ãŠãåé¢ç¯ã®ç¶æ
ã¯è§åºŠãšããŠæž¬å®ãããŸãã åãžã§ã€ã³ããç¹å®ã®è§åºŠã§å転ãããããšã«ãããæçµçãªãªã³ã¯ã空éã®ç°ãªããã€ã³ãã«å°éã§ããããã«ããŸãã ãšã³ããªã³ã¯ãæ¢ç¥ã®ãžã§ã€ã³ãè§åºŠã«ããå Žæãç¹å®ããããšã¯ã
çŽæ¥éååŠãšåŒã°ããŸãã
çŽæ¥éååŠã¯ãåçŽãªãåé¡ã§ãã ããã¯ãè§åºŠã®åã»ããã«å¯ŸããŠãäžç¢ºå®æ§ãªãã«èšç®ã§ããåäžã®çµæãããããšãæå³ããŸãã éä¿¡ããããŒã¿ã«å¿ããŠããããã¢ãŒã ãã©ã®ããã«åãããå€æããããšã¯ãééååŠã®éåé¡ãèŠã€ããããã«å¿
èŠãªã¹ãããã§ãã
幟äœåŠç解é
ã³ãŒãã®èšè¿°ãéå§ããåã«ãçŽæ¥éååŠã®èåŸã«ããæ°åŠçæ§é ãç解ããå¿
èŠããããŸãã ãããããŸã第äžã«ãããã空éçããã³å¹ŸäœåŠçã«æå³ããããšãç解ããå¿
èŠããããŸãã
3Dã§ã¿ãŒã³ãèŠèŠåããã®ã¯ããã»ã©ç°¡åã§ã¯ãªãã®ã§ã2次å
空éã®åçŽãªãããã¥ã¬ãŒã¿ãŒããå§ããŸãããã ããããã¢ãŒã ã«ã¯ãéå§äœçœ®ãããããŸããããã¯ããã¹ãŠã®é¢ç¯ãããŒãè§ããŸã§å転ããæ§æã§ãã
äžã®å³ã¯ã3ã€ã®èªç±åºŠãæã€ãããã¥ã¬ãŒã¿ãŒã瀺ããŠããŸãã åé¢ç¯ã¯ããã®ãŒãè§åºŠã®äœçœ®ãŸã§å転ããŸããã€ãŸããããããã¯å
ã®äœçœ®ã«ãããŸãã ãžã§ã€ã³ããå転ãããšããã®æ§æãã©ã®ããã«å€åãããã確èªã§ããŸãã
ã«
床ã ããã¯ãé¢ç¯ãšãªã³ã¯ã®ãã§ãŒã³å
šäœã®å¯Ÿå¿ããåãã«ã€ãªãããŸã
ã
ä»ã®ãžã§ã€ã³ãã«åãä»ããããã¢ãŒã¿ãŒã¯ãŸã 移åããŠããªãããšã«æ³šæããããšãéèŠã§ãã åãžã§ã€ã³ãã¯ãçµåã®çŽæ¥ãã§ãŒã³ã®ããŒã«ã«å転ã«å¯äžããŸãã 次ã®å³ã¯ã2çªç®ã®ãžã§ã€ã³ããå転ãããšãã®æ§æã®å€æŽã瀺ããŠããŸã
床ã
圹è·
å®çŸ©ã®ã¿
ã§ã
ãã§ã«åœ±é¿ãã
ããããŠ
ã å転座æšç³»ïŒèµ€ãšéã®ç¢å°ïŒã¯ãæ¥ç¶ãããŠãã以åã®æ¥ç¶ãã§ãŒã³ã®å転ã®åèšã«åŸã£ãŠæ¹åä»ããããŸãã
æ°åŠ
åã®ã¹ããŒã ãããçŽæ¥éååŠã®åé¡ã解決ããã«ã¯ãåã蟌ãŸããïŒåŸå±ïŒãªããžã§ã¯ããå転ãããšãã®äœçœ®ãèšç®ããå¿
èŠãããããšã¯æããã§ãã
2ã€ã®ãžã§ã€ã³ãã®äŸã䜿çšããŠèšç®ããæ¹æ³ãèŠãŠã¿ãŸãããã 2ã€ã®èŠçŽ ã®è§£æ±ºçãèŠã€ãããããã®ããã»ã¹ãç¹°ãè¿ããŠä»»æã®é·ãã®ãã§ãŒã³ã解決ã§ããŸãã
æåã®ãžã§ã€ã³ããåæäœçœ®ã«ããåçŽãªã±ãŒã¹ããå§ããŸãããã ã€ãŸãã
以äžã®å³ã®ããã«ïŒ
ããã¯æ¬¡ã®ããšãæå³ããŸãã
ãã€
ãŒãã«çãããªããæã
ã¯ã¡ããã©æ¯ç¹ã§è·é¢ãã¯ãã«ãå転ãããå¿
èŠããããŸã
åšã
ã«
床ïŒ
æ°åŠçã«ã¯ãããã¯æ¬¡ã®ããã«æžãããšãã§ããŸãã
以äžã§ã¯ãäžè§æ³ã«
AngleAxis
ããšãªã
AngleAxis
é¢æ°ïŒ
Unityããã¥ã¡ã³ã ïŒã䜿çšããæ¹æ³ãåŠã³ãŸãã
åãè«çãåçŸãããšã次ã®æ¹çšåŒãåŸãããšãã§ããŸã
ïŒ
ãããŠæåŸã«ãäžè¬çãªæ¹çšåŒïŒ
ãã®èšäºã®æ¬¡ã®ããŒãã§ã¯ããã®åŒãCïŒã³ãŒãã§å®è£
ããã®ãã©ã®ããã«
䟿å©ãã説æããŸãã
Denavit-Hartenbergè¡åã¯ã©ãã§ããïŒãšã³ãžãã¢ãªã³ã°ã®ç¥èãããå Žåã¯ããã®åé¡ãå¥ã®æ¹æ³ã§è§£æ±ºã§ããŸãã çŽæ¥ããã³ééååŠã®åé¡ã¯åºãç¥ãããŠããããããã解決ããããã®æšæºåãããã¢ãããŒããããã€ãååšããŸãã ãããã®1ã€ã¯
ãDenavit-Hartenberg ïŒ
ãŠã£ãããã£ã¢ ïŒã®ãã©ã¡ãŒã¿ãŒãšåŒã°ãã4ã€ã®ãã©ã¡ãŒã¿ãŒã®åãžã§ã€ã³ããžã®ãã€ã³ãã§ãã ãããããããªãã¯ã¹åœ¢åŒã§æäœãããšäŸ¿å©ã§ãããééååŠã®åé¡ã®åæãœãªã¥ãŒã·ã§ã³ã«æé©ã§ãã
ãã ãããã®èšäºã§ã¯ãããã䜿çšããŸããã Denavit-Hartenbergè¡åã解ãã«ã¯ãå€ãã®ããã°ã©ããç解ãããããå€ãã®æ°åŠãå¿
èŠã§ãã ç§ãéžæããã¢ãããŒãã§ã¯ãããäžè¬çãªæé©åã¢ã«ãŽãªãºã ã§ãã
åŸé
éäžæ³ã䜿çšããŠããŸãã
ããŒã3.çŽæ¥éååŠã®å®çŸ
ãã®ããŒãã§ã¯ã
çŽæ¥éååŠã®åé¡ã解決ãç¶ããŸãã æåŸã®éšåã§æ°åŠç解決çãèŠã€ããã®ã§ãUnityã®CïŒã³ãŒãã§ãããå®è£
ããæ¹æ³ãåŠã³ãŸãã 次ã®ãåŸé
éäžæ³ã®çŽ¹ä»ãã§ã¯ãæçµçã«
ééååŠã®åé¡ã解決ããããã®çè«çæ ¹æ ã瀺ããŸãã
ã¯ããã«
åã®ããŒãã§ã¯ãããããã¢ãŒã ã®åãã圢åŒåããŸããã 3ã€ã®ãžã§ã€ã³ãã®ç°¡åãªäŸããå§ããŸããã åæäœçœ®ã§ã¯ã以äžã«ç€ºãæ§æã«ãªã£ãŠããŸãã
ç°ãªã
å³äžã®ãã«ã«ã座æšããŸãã¯
2çªç®ã®ãžã§ã€ã³ãã éå§äœçœ®ã«å¯Ÿããå転ã決å®ãã
ããŒã«ã«è§åºŠã¯ã
ã
ãžã§ã€ã³ããåããšãã次ã®å³ã芳å¯ããŸãã
ãã®ã·ã¹ãã ã®åäœã¯ã次ã®ã¹ããŒãã¡ã³ãã§èŠçŽã§ããŸãã
- ã¿ãŒã³ ã ã°ããŒãã«ã¿ãŒã³ ãžã§ã€ã³ãã¯ã以åã®ãã¹ãŠã®ãžã§ã€ã³ãã®å転ã®åèšã§ãã
- äœçœ® ã°ããŒãã«ããžã·ã§ã³ ãžã§ã€ã³ãã¯æ¬¡ã®ããã«å®çŸ©ãããŸãïŒ
äžèšã®ãã¹ãŠãèæ
®ãããšãUnityã§ãããã®åäœãå®è£
ããå¯èœãªæ¹æ³ãèãåºãããšãã§ããŸãã
ã²ãŒã ãªããžã§ã¯ãéå±€
Unityã¯ãã§ã«ãäžèšã®ãã¹ãŠã®èŠä»¶ãå®è£
ããæ¹æ³ãæã£ãŠããŸãïŒ
ãã¢ã¬ã³ãã£ã³ã°ã·ã¹ãã ã ã²ãŒã ãªããžã§ã¯ããå¥ã®ãªããžã§ã¯ãã®åã«ãããšããã®ãªããžã§ã¯ãã®äœçœ®ãå転ãã¹ã±ãŒã«ãèªåçã«ç¶æ¿ãããŸãã
玢å
·ã«æ
£ããŠããå Žåãããã¯é©ãããšã§ã¯ãããŸããã ãã¥ãŒããã€ããã£ã©ã¯ã¿ãŒã®é¢ç¯ã§ãã骚ã«ã¯ãã¿ãŒã³ãšåããç¶æ¿ããã芪ã·ã¹ãã ããããŸãã Michael Erbetnotã«
ããUnity Animation 3ïŒCharacter Setupã®ç»åã¯ããã®æçœãªäŸã瀺ããŠããŸãã
æ¥ç¶éå±€ãäœæããå Žåããã¹ãŠã®ããŒã«ã«ãªã€ã©ãŒè§ããŒãã«çããå Žåãããããã¢ãŒã ãå
ã®äœçœ®ã«ããããšã確èªããå¿
èŠããããŸãã ãã¥ãŒããã€ããã£ã©ã¯ã¿ãŒã®å Žåãããã¯éåžžãäžã®ç»åã«ç€ºãããŠãã
æšæºã®Tååã®ããŒãºã§ãã
å®è£
Unityã§åã³ã³ããŒãã³ããäœæããæ©èœã«ãããçŽæ¥éååŠã®åé¡ã
äºå®äžè§£æ±ºãããŸãã æ®å¿µãªãããããã§ã¯ååã§ã¯ãããŸããã äžé£ã®èšäºã®æ¬¡ã®éšåã§ã¯ãããããã¢ãŒã
ãåãã
ãã«æçµçãªãªã³ã¯ã®äœçœ®ã確èªããæ¹æ³ãå®éã«å¿
èŠã§ããããšãããããŸãã ããã«ããããã®åºæ¬çãªUnityæ©èœãç¬èªã®æ¹æ³ã§å®è£
ããå¿
èŠããããŸãã
æåã®ã¹ãããã¯ãããããã¢ãŒã ã®åé¢ç¯ã«é¢ããæ
å ±ãä¿åããããšã§ãã ããã¯ã次ã®äŸã®
RobotJoint
ãªã©ã®ã¹ã¯ãªããã䜿çšããŠå®çŸã§ããŸãã
using UnityEngine; public class RobotJoint : MonoBehaviour { public Vector3 Axis; public Vector3 StartOffset; void Awake () { StartOffset = transform.localPosition; } }
èšç®ãç°¡çŽ åããããã«ãåãžã§ã€ã³ãã¯ããŒã«ã«è»žã®1ã€ïŒXãYããŸãã¯ZïŒã§ã®ã¿å転ã§ãããšæ³å®ããŠããŸãããããå€æ°
Axis
ã§è¡šããå転軞ã«å¯Ÿãã座æšã®å€ã
1
ããŸãã ãžã§ã€ã³ããY軞ã«æ²¿ã£ãŠå転ããå Žåã軞ã®åœ¢åŒã¯
(0,1,0)
ãŸãã ããã«ããã
IF
ã䜿çšããŠã³ã³ã¹ãã©ã¯ããåé€ã§ããããšãããããŸãã
ForwardKinematics
é¢æ°ãäœæããŸãããã 圌女ã¯
float
åã®
angles
é
åãååŸããŸãã ååã¯ããèªèº«ãè¡šããŠããŸã
angles[i]
ã«ã¯ãiçªç®ã®ãžã§ã€ã³ãã®ããŒã«ã«å転å€ãå«ãŸããŸãã ãã®é¢æ°ã¯ãã°ããŒãã«ãªã³ã¯ã®æçµãªã³ã¯ã®äœçœ®ãè¿ããŸãã
public Vector3 ForwardKinematics (float [] angles) { ... }
ãã®ã³ãŒãã¯ãäžèšã®äœçœ®æ¹çšåŒã®åçŽãªCïŒå®è£
ã§ãã
rotate
é¢æ°ã¯ã䟿å©ãª
Quaternion.AngleAxis
é¢æ°ãéããŠå®è£
ãããŸãã
Vector3 prevPoint = Joints[0].transform.position; Quaternion rotation = Quaternion.identity; for (int i = 1; i < Joints.Length; i++) {
ã¯ã©ãŒã¿ããªã³ã®ãµããŒããå¿
èŠã§ããïŒãŠããã£ã®ã¿ãŒã³ã¯ãå€ãã®å Žåããªã€ã©ãŒè§ã§èšè¿°ãããŸãã ãããã¯ãXãYãZ軞ã«æ²¿ã£ããªããžã§ã¯ãã®å転ã«å¯Ÿå¿ãã3ã€ã®æ°å€ã§ããããªã€ã©ãŒè§ã¯ã空éå
ã®ãªããžã§ã¯ãã®
ããŒã« ã
ããã ã
ãšãŒãè¡šããŸãã ãã ããæ°åŠçãªèŠ³ç¹ããã¯ããªã€ã©ãŒè§ã䜿çšãããšãããªãäžå¿«ãªåé¡ãçºçããå¯èœæ§ããããŸãã
åå
æ°ã®å©ããåããŠã³ãŒããŒã§äœæ¥ããæ¹ã䟿å©ã§ãã åå
æ°ã¯ã
ã¿ãŒã³ãèšè¿°ããããã«äœ¿çšã§ããæ°åŠçãªãªããžã§ã¯ãã§ãã 察ç
§çã«ããªã€ã©ãŒè§ã¯
æ¹åãè¡šããŸãã ã¯ã©ãŒã¿ããªã³ã¯ãããæ¹åããå¥ã®æ¹åã«é²ããã¹ãè¡šããŸãã æè¡çãªèŠ³ç¹ããèŠããšãããã¯éåžžã«åçŽåãããŠããŸãããç§ãã¡ã®èšäºã«ãšã£ãŠã¯ååãããã»ã©ã§ãã
ããŒããŒã·ã§ã³âã¯ã©ãŒã¿ããªã³
åå
æ°ã¯ã¿ãŒã³ãšããŠè¡šãããšãã§ããŸãã 空éå
ã®ãªããžã§ã¯ãã®å転ã¯ãæ°åŠçãªèŠ³ç¹ããããã®äœçœ®ã«åå
æ°ãæãããã®ã«é¡äŒŒããŠããŸãã
Quaternion.AngleAxis
é¢æ°ã䜿çšããŠãUnityã®åºå®ç¹ãäžå¿ã«å転ãäœæã§ããŸãã String
Quaternion.AngleAxis(angle, axis);
軞
axis
åšãã®å転ã
angle
è¡šãã¯ã©ãŒã¿ããªã³ãäœæããŸãã ãã®ã³ã³ããã¹ãã§ã¯ã
Axis
å€ã¯
(1,0,0)
ã
(0,1,0)
ãŸãã¯
(0,0,1)
ã«ãªããããããXãYãŸãã¯Zãæå³ããŸãã
RobotJoint
ã¯ã©ã¹ã®
Axis
ã
ã¹ãã³ã®è¿œå âåå
æ°ã®ä¹ç®
2ã€ã®ã¯ã©ãŒã¿ããªã³ãä¹ç®ãããšãäž¡æ¹ã®ã¿ãŒã³ãå«ãæ°ããã¯ã©ãŒã¿ããªã³ãäœæãããŸãã
for
ã«ãŒãã®åå埩ã§ã
rotation
å€æ°ã«çŸåšã®ã¯ã©ãŒã¿ããªã³ãä¹ç®ãããŸãã ããã¯ããã¹ãŠã®ãžã§ã€ã³ãã®ãã¹ãŠã®å転ãå«ãŸããããšãæå³ããŸãã
åå
æ°*ãã¯ãã«=å転ãã¯ãã«
æåŸã«ããã®è¡ã§åå
æ°ã䜿çšãããŸãã
Vector3 nextPoint = prevPoint + rotation * Joints[i].StartOffset;
次ã®ãšã³ããªãšå®å
šã«äžèŽããŠããŸãã
ã¯ã©ãŒã¿ããªã³ãšãã¯ãã«ã®ç©ã¯å転ãé©çšããŸãã
[ç¶ããŸãã 2çªç®ã®èšäºã§ã¯ãééååŠã«æ³šç®ããŸãã]