7 月 08

Visual C++ 2008 Expression EditionでODEを使う方法を紹介します。ODEのバージョンは0.10.0以上を対象にしています.説明は0.10.0を対象としているので,ode-0.10.1をお使いの方はode-0.10.0をode-0.10.1と置き換えてください.
- A. Visual C++ 2008 Expression Editionのインストール
- B. ODEのダウンロード
- C. ODEのインストール
- D. ODE本のサンプルプログラムをビルドする方法
- A. Visual C++ 2008 Expression Editionのインストール
- B. ODEのダウンロード
- ここをクリックしてsourceforge.netのOpen Dynamics Engineのページ飛び,中ほどにあるFile Relesesのode-バージョン番号.zipをクリックしてデスクトップへダウンロードする.
- 解凍ソフトの準備(持っていない方のみ)
- ode-0.10.0.zipはzipフォーマットで圧縮されていますのでzipを解凍できるソフトウェアをインストールしてください.ここでは,Lhaplusという圧縮・解凍ソフトを使っています.GoogleでLhaplusを検索するとダウンロード先を簡単に見つけることができます.
- 解凍と移動
- デスクトップにあるode-0.10.0.zipをダブルクリックすると、ode-0.10.0というフォルダーがデスクトップに生成されます。
- ode-0.10.0フォルダをCドライブのすぐ下に移動する
- マウスをode-0.10.0フォルダーに当て、右マウスボタンをクリック、「切り取り(T)」を選択
- スタート→(マイ)コンピュータ→ローカルディスク(c)をダブルクリック
- マウスの右ボタンをクリックし、「貼り付け(P)」を選択
- ビルド(ライブラリの作成)
- ode-0.10.0ではpremakeコマンドを使ってVisual C++ 2008用のソリューションファイルを作成できます.
- コマンドプロンプトを起動する.
スタート→すべてのプログラム→アクセサリ→コマンドプロンプト - 以下のようにコマンドを打ち込む.カットアンドペースト の場合は以下の文字列を使用し,自分で打ち込む場合は2個の-(マイナス)文字がつながって見えるので,下画像を参照して注意深く打ち込んでください.
cd c:\ode-0.10.0\build
premake --with-demos --with-tests --target vs2008
注:withとtargetの前は-(マイナス)が2個連続している.下画像参照.

成功するとvs2008というVisual C++ 2008用のディレクトリができる.
- Visual C++ 2008 Express Editionを起動
- メニューバーから「ファイル(F)」→「開く(O)」→「プロジェクト/ソリューション(P)」を選択
c:\ode-0.10.0\build\vs2008\ode.sln
を選択
- この作業は任意です.これによりOPCODEの新しい衝突検出機能を有効にします.よく分からない方は飛ばしてください.
ode-0.10\ode\src\config.h
の44行目を何らかのエディターを使って以下のように変更する.
- #define dTRIMESH_OPCODE_USE_NEW_TRIMESH_TRIMESH_COLLIDER 1
- ビルドターゲットをDebugDoubleLibとする.
これはデバッグ向け,倍精度,静的ライブラリ用.ODEではDLL(Dynamic Link Library)より静的ライブラリ(Static Library)が推奨されています.また,DebugSingleLibを選ぶと単精度の静的ライブラリが生成されますが,エラーが出やすいのでお勧めできません.

-
-
- 「ビルド(B)」→「ソリューションのビルド(B)」を選択
- デモプログラムの実行ファイルは
c:\ode-0.10.0\lib\DebugDoubleLib
に生成される.
- 試しに,demo_basket.exeをダブルクリックして起動すればODEのビルド成功.
- これで,ODEのインストールは終わりです。
-
- ダウンロードカテゴリーからrobosimu******(******は日付)をダウンロードして,
c:\ode-0.10.0
にコピーし,そこに解凍する.解凍に成功すると
c:\ode-0.10.0\roboSimu
というディレクトリが生成される.その中にはsrc, texturesフォルダー,premake.exe, premake.lua, Readme.txt, roboSimu.luaファイルががあり,また,srcフォルダーの中にはODE本のサンプルコードがある.
- ODEのインストールと同じように,premakeコマンドを使い,ソリューション,プロジェクトファイルを生成する.コマンドプロンプトを起動し,以下のコマンドを実行する.
cd c:\ode-0.10.0\roboSimu
premake --target vs2008 注:targetの前は-(マイナス)が2個連続.
- Visual C++ 2008 Express Editionを起動
- メニューバーから「ファイル(F)」→「開く(O)」→「プロジェクト/ソリューション(P)」を選択
c:\ode-0.10.0\roboSimu\src\roboSimu.slnworkspace
を選択
- ビルドターゲットをDebugLibとする.

- 「ビルド(B)」→「ソリューションのビルド(B)」を選択
- サンプルプログラムの実行ファイルはc:\ode-0.10.0\roboSimu\DebugLibに生成される.
- 試しに,arm1.exeをダブルクリックして起動すれば成功.お疲れ様でした!
投稿:08年07月08日


Taroxさん,
VC2008用自作ODEプログラムのビルド法の記事を追加しました.試してみてください.
でむ
demuさん,初めまして.Taroxといいます.
とてもわかりやすいので,demuさんのサイトを参考にODEの勉強をさせていただいています.
この度,ODEのバージョンが上がったとのことなので,私の環境でもこのページを見ながら0.10を設定したのですが,自作プログラムの実行がうまく行かないので質問させていただきました.
このページの通りにやってサンプルプログラムの実行まではうまく行きました.そこで,ODE0.9でうまくできていたプロジェクトファイルのソースだけをサンプルプログラムのhello.cppに置き換えて実行したのですが,ビルドはできるものの,実行すると
「assertion “dMassCheck(mass)” failed in c\ode-0.10.0\ode\src\ode.cpp:494」というODE INTERNAL ERRORと
「ODE Message 2: inertia must be positive definite (c\ode-0.10.0\ode\src\mass.cpp:53)」が表示されます.
前述のように,このページのやり方では実行できているので,ソースに間違い(設定質量が負になっている)は無いはずなので,原因はプロジェクトファイル等の設定にミスがあると思うのですが,ODE0.9から0.10にアップデートした場合はどこを設定し直せばいいのでしょうか?
できれば,Code::BlocksのようにVC2008でも自作ODEプログラムのビルド法を教えていただけませんでしょうか.
長文になってしまいましたが,よろしくお願いします.