ODEをVisualStudioで使う

![SS 192.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/a41cd967-f549-8677-1efa-2e99bf69518d.png) 物理エンジンは誰でもつかえるの？

# 物理エンジンを使ってみよう
動画などでよく見る物理エンジンですが使うには敷居が高いという印象があります。
実際のところ敷居は高いと思うのですが、とりあえずは起動できるようにするところからは始めて見たいと思います。

# 物理エンジンと実行環境
物理エンジンを使うには、おおまかに

① 計算を行う本体部分
② コンパイルする部分
③ 描画を担う部分

の３つを使用します。①と③は別物ですので、いろんな動きのパターンをシミュレーションで比較したい場合には描画を行わず①だけを高速に回すことも可能でしょうし、③の部分をCG専用ソフトに担わせれば、よりクオリティの高い画質を得ることもできると思います
③についてはODEに組み込まれている(Open GL)を使用します。

# 準備
物理エンジンとしてメジャーなODE(Open Dynamics Engine)を利用します。
今回はWindows版で解説してみます。
実行環境はVisualStudioCommunity2019もしくは2022を使います。
(2019はVRChatやUnityと連携するときの推奨バージョンのようです。)

# 参考
下記のサイトを参考にさせていただいております。
当記事では2022年04月現在の状況で改めて試し、実際に動いた例をメモしていきます。
https://demura.net/tutorials

# 導入の全手順

### VisualStudio2019or2022のインストール
未導入であれば導入しましょう。
VisualStudioCommunity2019or2022をダウンロードしてインストールします。
https://docs.microsoft.com/ja-jp/visualstudio/releases/2019/release-notes
https://docs.microsoft.com/ja-jp/visualstudio/releases/2022/release-notes
ほかにCODE:BLOCKを使う方法などもあるようですが割愛します。


### .tarや.gz の展開準備
7-Zipがなければダウンロードしてインストールしておきます。
https://sevenzip.osdn.jp/

### ODE本体をダウンロード

https://bitbucket.org/odedevs/ode/downloads/
上記サイトより、0.16.2をダウンロードします。

### ODE本体を解凍して移動する
解凍するには、ダウンロードしたファイル（ode-0.16.2.tar.gz）を右クリック→「7-zip」→「ここに展開」を選びます。
ode-0.16.2.tarというファイルができるので、これを再度同じ手順で展開します。
ode-0.16.2というフォルダが現れれば成功です。

ファインダ上でode-0.16.2をCドライブ直下に移動します。
そもそもCドライブが見えない！という方はgoogleで「Cドライブ　表示」とすればヒントが出ると思います。
(Cドライブ直下以外でもしっかり動きますが、その場合は以降のディレクトリを読み替えて進めてください。)

### ODE本体をビルドする
コマンドプロンプトを開きます。
（コマンドプロンプトの開き方がわからない場合は、ウィンドウズ左下の検索窓にコマンドプロンプトと入力します）

コマンドプロンプトで下記を入力し、ディレクトリを移動します。
```
cd \ode-0.16.2\build
```
（\はキーボード右上の￥マークと同じです。）

下記を入力し、ビルドを実行します。
```
premake4 --only-double --only-static --with-demos --with-libccd vs2010
```


### Visual StudioでODEのデモを開く

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/4bd60e56-b7e7-9816-10b8-abd6557b9f84.png" width=400>

Visual Studio 2019を起動し、
「プロジェクトやソリューションを開く」
もしくはメニューから「ファイル」→「開く」→「プロジェクト/ソリューション」より、
ローカルディスク(C:)→ode-0.16.2→build→vs2010→ode.sln を選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/c2aa35d6-de46-455e-da04-c7c3f2f653b9.png" width=400>

「プロジェクトの再ターゲット」のダイアログボックスではそのままOKを押します。
VisualStudio2019のメニューバーから「ビルド」→「ソリューションのビルド」を実行します。
少し時間がかかります。

### デモを実行する
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/20fcc6b7-296d-0824-78f5-7b318226f982.png" width=500>

デモプログラムの実行ファイルが（ODE のフォルダ）\lib\Debug に生成されています。
その中のたとえば demo_buggy.exeをダブルクリックして起動を確認します。
うまく画面が表示されれば一応成功です。
（exeファイルなのでVisualStudio2019を起動していなくても実行可能です。）

**ここでエラー(could not open ~)が出てもあきらめないでください。**
閉じてからダブルクリックでファイルを開く、を繰り返すとエラーが出ずに立ち上がることがあります。（なんじゃそれ。でも本当です。おそらくアプリから開くことで各処理の実行タイミングが狂ったりしているのでしょう。）
**もう一つ確実な方法として、コマンドプロンプトから.exeファイルを立ち上げる**という方法があります。
この場合はコマンドプロンプトで該当のディレクトリに移動してから、.exeを立ち上げます。具体的には例えば、
cd \ode-0.16.2\lib\Debug
とした後、
demo_buggy.exe
と打ち込んで実行します。この場合はエラーが出ずに立ち上がると思います。


### カメラ操作を確認する
無事起動できたらカメラアングルの操作を試してみます。
マウスは右クリック＋移動で前後左右、ホイール＋右クリックで上下左右、左クリックでカメラパンになります。
ウィンドウの縁を広げることで画面サイズを広げることも可能です。

### キーボード入力を試す
次に、キーボード入力で操作をしてみましょう。
操作内容は黒い画面に表示されています。
ここからが罠ですが、おそらくシミュレーション画面でキーボードを押しても変化が出ません。

**キーボード押下を反映させるには、マウスの右クリックを押したままでキーボード押下**。これで動くと思います。
IMEが悪さをしているようです。googleの変換メソッドだと英字入力でうまくいくようですが、標準のMSのものだと英字入力にしてもうまくいきません。キーボード設定をUSなどに切り替えることでも回避できるかもしれません。

また、なにかのはずみで描画画面がフリーズしている場合もありますので、その時は一旦そのデモを閉じ、改めて開きなおしてみてください。

### 不具合を直したい
上記の不具合がキモチワルイのでいつか修正したいです。

# 次回はいよいよあの実験！

自転車にのる小型ロボットでおなじみのDr.Guero氏が最近発表された
**UVC(上体垂直制御)の歩行モーション**をODEで再生してみます。

次回記事：

https://qiita.com/Ninagawa_Izumi/items/5913d97c317528e0cf05