ODE講座26:ã¡ã‚‡ã£ã¨å¾…ã£ã¦ï¼ä¸€æ™‚åœæ¢ã¨ï¼‘ステップ実行
ã‹ã¤ã•ã‚“ã®ã”質å•ã‚’å—ã‘ã¦ç´„1ヶ月ã¶ã‚Šã«ODE(Open Dynamics Engine)講座を開講ã—ã¾ã™ï¼ŽRobomec2008ã§ã¯demura.netã®èªè€…ã‹ã‚‰ï¼Œãƒªãƒƒãƒ—サービスã ã¨æ€ã„ã¾ã™ãŒã€Œæ¥½ã—ã¿ã«ã—ã¦ã„るよã€ã¨å£°ã‚’ã‹ã‘ã¦é ‚ã,ãれを真ã«å—ã‘ã¦é£ã‚Šç”²æ–ãŒå‡ºã¦ãã¾ã—ãŸï¼Žå¦ä¼šãªã©ã§è¦‹ã‹ã‘ãŸã‚‰æ°—軽ã«å£°ã‚’ã‹ã‘ã¦ãã ã•ã„.
ã•ã¦ï¼ŒODEã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã¯é€Ÿã™ãŽã‚‹ã®ã§ã¡ã‚‡ã£ã¨å¾…ã£ã¦ã¨ä¸€æ™‚åœæ¢ã‚„1ステップ実行ã—ãŸã„å ´åˆãŒå¤šã„ã§ã™ã‚ˆã.ODE本P41~42ã«ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®ä¸€æ™‚åœæ¢ã¨ï¼‘ã‚¹ãƒ†ãƒƒãƒ—å®Ÿè¡Œã®æ–¹æ³•ã‚’ç°¡æ½”ã«è¨˜è¼‰ã—ã¾ã—ãŸãŒï¼Œã‚ã‹ã‚Šã¥ã‚‰ã„よã†ãªã®ã§ã“ã“ã§è£œè¶³ã—ã¾ã™ï¼Ž
ODE付属ã®ï¼“Dライブラリdrawstuffã§ã¯ï¼Œä»¥ä¸‹ã®ã‚ˆã†ã«ã‚ーコマンドãŒå®Ÿè£…ã•れã¦ã„ã¾ã™ï¼Ž
- テクスãƒãƒ£ã®ON/OFF : Ctrl + t
- å½±ã®ON/OFF: Ctrl + s
- 強制終了: Ctrl + x
- ä¸€æ™‚åœæ¢ã®ON/OFF: Ctrl + p
- 1ステップ実行: Ctrl + o (アルファベットã®ã‚ªãƒ¼ï¼‰
ã“ã“ã§ï¼ŒCtrl + t ã¯ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ã‚ーã¨tã‚ãƒ¼ã‚’åŒæ™‚ã«æŠ¼ã™ã¨ã„ã†æ„味ã§ã™ï¼Ž
ãªãŠï¼Œä¸€æ™‚åœæ¢ã¨ï¼‘ステップ実行を実行ã™ã‚‹ãŸã‚ã«ã¯ï¼Œåœæ¢ã—ãŸã„部分を以下ã®ã‚ˆã†ã«ifæ–‡ã§å›²ã‚€å¿…è¦ãŒã‚りã¾ã™ï¼ŽsimLoopã®å¼•æ•°pauseã¯ä¸€æ™‚åœæ¢ã«é–¢ã™ã‚‹ãƒ•ラグã§ï¼ŒåˆæœŸå€¤ã¯ï¼ã§ï¼ŒCtrl + tを押ã™ãŸã³ã«ï¼‘ã¨ï¼ã«å転ã—ã¾ã™ï¼Žä¸‹ã®ã‚³ãƒ¼ãƒ‰ã§ã¯Ctrl+tを押ã•ãªã„é™ã‚Šã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã¯é€²è¡Œã—ã¾ã™ï¼Žã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®åˆæœŸçŠ¶æ…‹ã§åœæ¢ã—ãŸã„å ´åˆã¯ if (pause) { ã«ã—ã¦ãã ã•ã„.
ãªãŠï¼Œä¸€æ™‚åœæ¢ã—ãŸã„å ´åˆã¯Ctrl+ oを押ã™ãŸã³ã«ï¼‘ステップ実行ã—ã¾ã™ã®ã§ï¼Œã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã§ã¯ã¨ã¦ã‚‚é‡å®ã™ã‚‹ã¨æ€ã„ã¾ã™ã‚ˆï¼ŽãŠè©¦ã—ã‚れï¼
[cpp]
// 引数pauseã¯ä¸€æ™‚åœæ¢ã®ãƒ•ãƒ©ã‚°ï¼ŒåˆæœŸå€¤ã¯0
static void simLoop(int pause)
{
if (!pause) { // ! ã¯å¦å®šã§ã™ï¼Žã¤ã¾ã‚Šï¼Œï¼‘ãªã‚‰0, 0ãªã‚‰ï¼‘ã§ã™ï¼Ž
   // やりãŸã„処ç†ã‚’ã“ã“ã«æ›¸ã
 dSpaceCollide(space, 0, &nearCallback);
dWorldStep(world, 0.01);
dJointGroupEmpty(contactgroup);
}
// æç”»ã«é–¢ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’ã“ã“ã«æ›¸ã
}
[/cpp]
ã‹ã¤ã•ん,
気軽ã«å£°ã‚’ã‹ã‘ã¦ãã ã•ã„.
ã•ã¦ï¼Œæç”»ãƒ©ã‚¤ãƒ–ラリdrawstuffã®ä¸ã§å‡¦ç†ãŒæ›¸ã‹ã‚Œã¦ã„ã¾ã™ï¼ŽWindows, OS X, Linuxã§ãれãžã‚Œåˆ¥ã®å‡¦ç†ã«ãªã£ã¦ã„ã¾ã™ï¼ŽLinuxã§ã„ãˆã°ï¼Œ~src/ode-0.9/drawstuff/src/x11.cppã®handleEvent関数ã®ä¸ã«ã‚ー入力ã®å‡¦ç†ãŒæ›¸ã‹ã‚Œã¦ã„ã¾ã™ï¼Ž
Linux(Fedora8)ã¨Windows XP,Vistaã§è©¦ã—ã¾ã—ãŸãŒï¼ŒLinuxã§ã¯Ctrl+Xã§å•題ãªã強制終了ã—ã¾ã™ï¼ŽWindowsã®å ´åˆã¯ï¼Œä¸€åº¦Fileã‚„Simulationãªã©ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’クリックã—ãŸå¾Œãªã‚‰Ctrl+Xã§çµ‚了ã—ã¾ã—ãŸï¼Žç§ã¯Windowsプãƒã‚°ãƒ©ãƒžãƒ¼ã§ã¯ãªã„ã®ã§è‰¯ãã‚ã‹ã‚Šã¾ã›ã‚“ãŒï¼Œå®Ÿè£…ãŒæ‚ªã„ã¨æ€ã‚れã¾ã™ï¼Ž
以下ã®ãƒšãƒ¼ã‚¸ã®ã€Œ3. X (閉ã˜ã‚‹ï¼‰ã‚’押ã—ãŸã‚‰ã¡ã‚ƒã‚“ã¨çµ‚了ã™ã‚‹ã‚ˆã†ã«ã™ã‚‹ã€ã‚’å‚考ã«ã—ã¦ãã ã•ã„.
http://hwm7.gyao.ne.jp/shinpuku/column03.html
ã§ã‚€
åå‰ãŒæŒ™ãŒã£ã¦ã„ã‚‹ã®ã§æ›¸ãè¾¼ã¿ã—ã¾ã™ï¼Žç§ã‚‚Robomec行ã£ã¦ã„ãŸã®ã§ãŠå£°ã‚’ã‹ã‘れã°è‰¯ã‹ã£ãŸã§ã™ï¼ŽãŸã ç§ã®å ´åˆï¼Œé‡‘曜日ã§å¸°ã£ã¦ã—ã¾ã„ã¾ã—ãŸãŒï¼Ž
ä¸€æ™‚åœæ¢ã®ä»¶ï¼Œæœ¬ã«æ›¸ã‹ã‚Œã¦ã„る部分よりももã†å°‘ã—å…ˆã¾ã§èªã‚ã°ï¼Œä½•æ•…ã‹ãŒç†è§£ã§ãã¾ã—ãŸï¼ŽãŠæ‰‹æ•°ã‚’ãŠã‹ã‘ã—ã¾ã—ãŸï¼Ž
ã¨ã“ã‚ã§ï¼ŒCtrl+pを押ã™ãŸã³ã«ä¸€æ™‚åœæ¢ã®ãƒ•ラグãŒON/OFFã•れるã¨ã„ã†ã®ã¯ï¼Œãƒ©ã‚¤ãƒ–ラリã®ä¸ã«Ctrl+pã®å…¥åŠ›ã‚’èªã¿è¾¼ã‚“ã§ï¼Œãƒ•ラグをON/OFFã™ã‚‹ã¨ã„ã†å‡¦ç†ãŒã™ã§ã«æ›¸ã‹ã‚Œã¦ã„ã‚‹ã¨ã„ã†ã“ã¨ã§ã‚ˆã‚ã—ã„ã®ã§ã—ょã†ã‹ï¼Ž
ã¡ãªã¿ã«ç›¸å¤‰ã‚らãšå¼·åˆ¶çµ‚了ã ã‘ã¯å‡ºæ¥ãªã„ã®ã§ã™ãŒï¼Œãªãœã§ã—ょã†ã‹ï¼Žãƒ—ãƒã‚°ãƒ©ãƒ ã¯8-1ã®4脚ãƒãƒœãƒƒãƒˆã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã§ç¢ºèªã—ã¦ã„ã¾ã™ï¼Ž