Bullet Physicsを使ってみる VS2013&DirectX11

Visual Studio 2013でBullet Physicsをビルド、環境構築してみます。それと、デバッグ表示(OpenGL)をDirectX11での表示に変更してみる。
新バージョンの使い方 Bullet Physicsを使ってみる⇒(Bullet2.86 VS2017 DirectX11)

Bullet Physics デバッグ表示
Bullet Physics デバッグ表示


Bullet Physics Library

Bullet Physics Library
オープンソースの物理エンジンです。有名なものなので詳細は省略。
現時点(2014/4/11)で公開されているver2.82を使用します。

ダウンロード

BulletのページからSDKをダウンロード。zip(Windows)とtgz(Linux)の2種類あり。


環境構築

BulletのSDKはソースコードで公開されているため、使用するにはコンパイルする必要があります。VSプロジェクトなどのコンパイラ環境はSDKに含まれておらず、CMakeというツールを使ってプロジェクトを生成、ビルドすることで、includeヘッダとlibファイルが作成されます。

CMake

CMake – Cross Platform Make
様々なコンパイル環境でのビルドを自動化するツール。今回はBulletのビルド用にVS2013用のプロジェクトを生成。

CMakeによるプロジェクト生成手順

cmake-gui.exeを使用(ver2.8.12.2)
“Where is the source code:” にzipを展開したbulletフォルダ
“Where to build the binaries:”にVSプロジェクトの生成場所
[Configure]ボタンでVisualStudio12を選択、環境設定項目が表示される
“INSTALL_LIBS”をON includeとlibファイルの生成(OFFだとDemoのみ)
インストール場所(includeヘッダとlibファイルの出力場所)の設定
 デフォルトはC:\Program Files\BULLET_PHYSICS アクセス権限に注意
 ”CMAKE_INSTALL_PREFIX”を入力後、[Configure]ボタンでincludeやlibの出力先を自動設定
“USE_DX11″はD3DX11を使用しているのでOFF
[Generate]ボタンでVS2013プロジェクト生成

ビルド

CMakeで生成されたプロジェクト(BULLET_PHYSICS.sln)をVSで開き、ビルド。
ソリューションのビルドだとDemoのみのビルドになりヘッダやlibファイルが指定場所にインストールされないため、INSTALLプロジェクトを指定してビルドする必要があり。
エラー発生、今のところ影響のない部分なので無視しても問題なし?。
気になるならエラー発生場所を修正。
 fmax,fminの2重定義 ⇒ 削除
 std::maxがない ⇒ #include <algorithm>


簡単なプログラム作成

Bulletのデモ(BasicDemo)を参考に剛体運動と衝突のプログラムを作成してみます。剛体の表示にはBulletのデバッグ機能を使用します。ただしOpenGL用のデバッグ表示しか用意されていないのでDirectX11での表示処理を作成します(デバッグ描画クラスの派生)。CMakeの設定に”USE_DX11″という項目がありますが、一部のDemoのみ対応かつD3DX11使用なので使いません。

Bullet組み込み

使用した機能に対応したincludeとlibファイルを設定。Debug、Releaseなどのビルド構成に対応したlibファイルがあり、状況に応じて使い分ける。

ランタイムライブラリなど

VSのデフォルトは/MD /MDd、Bulletの設定に合わせて/MT /MTdに変更。
またはBulletを/MD /MDdに。
Debugの場合pbdファイルがないとwarning、とりあえず問題なさそうなので無視。

DirectXMath使用時の問題

Bullet(のSIMD演算)とDirectXMathを同時にincludeするとSIMD演算用の演算子オーバーロードが2重定義されコンパイルエラー発生。
#define BT_NO_SIMD_OPERATOR_OVERLOADS
を定義することエラー回避(原因となる部分を無効)

デバッグ表示

btIDebugDrawクラスの派生クラスを作成。ラインを表示する処理を作れば、基本的な表示処理が可能。当然、ライン描画にDirectX11を使用。


サンプルプログラム

Bullet Physics VS2013&DirectX11
Bullet Physics VS2013&DirectX11

広告

「Bullet Physicsを使ってみる VS2013&DirectX11」への2件のフィードバック

  1. すみません
    ダウンロードで
    「BulletのページからSDKをダウンロード。zip(Windows)とtgz(Linux)の2種類あり。」
    とありますがBulletのページってどこですか?上のURLからですか?ここのページのタグのBullet Physics からですか?SDKの項目も見当たらなくて困ってます。
    zip(Windows)とtgz(Linux)の2種類あり。とありますが、どちらか一つなのですか?両方入れるんですか?
    理解力が足りなくてすみません。

    1. 記事の投稿から時間がたっているので状況が変わっているようです。

      「SDK」ではなく「Bulletのページからソースコードをダウンロード」と書いたほうがよかったです。
      zip(Windows)とtgz(Linux)は圧縮ファイル形式の違いです。中身は同じものです。

      http://bulletphysics.org/wordpress/
      左上のDownloadからたどっていけばver2.82のソースコードが入手できます。
      ここにたどり着くはずです。
      https://github.com/bulletphysics/bullet3/releases?after=2.83

      ここではBullet Physicsの使用方法をかなり省略して説明していますので、
      Bullet Physicsのドキュメントや他に詳しく説明しているWebページや本などを探して参考にしたほうが良いと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

認証:数字を入力してください(必須) * Time limit is exhausted. Please reload CAPTCHA.