はじめに
物理エンジンのオープンソース
Open Dynamics Engine(ODE)をXcodeで動かしてみました。
開発環境
- iMac
- Mac OS X 10.8.1
- Processor:3.06GHz Intel Core 2 Duo
- Memory:4GB
- Xcode4.4.1
インストール
macportsにあるので簡単です。
ODEは2つのライブラリから構成されています。
- 剛体の力学を計算するライブラリ(ode)
- 描画するライブラリ(drawstuff)
上記のportでインストールされるのはodeのみです。drawstuffもインストールしたいので
ここからソースを取ってきます。インストール方法は
ここにあります。
ここで、libtoolizeがない!というエラーが出ました。
autogen.shの36行目から38行目までのコメントアウトを外します。Macではlibtoolizeはglibtoolizeに相当すると書いてあります。
再度挑戦。
今度は上手く行きました。odeとdrawstuffがコンパイルされています。odeは既にportで入れたので、drawstuffだけを手でコピーしました。
これでサンプルを動かす準備が整いました。
ODEのインターフェース
ここ
にこんな文章があります。
ライブラリ自身はC++で書かれていますが、Cインターフェースを使って欲しいというのが作者の願いのようです。でも、やっぱりC++で書いてみたいです。
サンプルプログラム
こちらにODEの初級講座があります。これの
第6回のソース「サンプルプログラム6マルチ」をC++で書き直してみました。Cインターフェースの解説は
こちらにありますが、C++の解説はありません。ですが、odecpp.hなるヘッダが提供されています。これを見ながら実装しました。すこし長いですが全文を貼付けます。10行目のパスは、ODEのソースに含まれているディレクトリへのパスです。drawstuffはOpenGLを使って実装されているので、得意な人にとっては扱いやすいと思います。ソースの解説は...もう少し精通してからにします。
コンパイルオプション
Header Search Path:
パス |
目的 |
/opt/local/include/ |
odeヘッダー |
/usr/local/include/ |
drawstuffヘッダー |
Library Search Path:
パス |
目的 |
/opt/local/lib |
odeライブラリ |
/usr/local/lib |
drawstuffライブラリ |
Other Linker Flags:
-lode -ldrawstuff -framework OpenGL -framework GLUT |
Apple LLVM compiler 4.0 - Language:
C++ Language Dialect |
C++11 [-std=c++11] |
C++ Standard Library |
libc++ (LLVM C++ standard library with C++11 support) |
実行
並んだ赤玉が地面に着地して弾みます。55行目のbounceが反発係数です。1のとき完全弾性衝突です。0から1までの間の値を設定します。
0 件のコメント:
コメントを投稿