cocos3d+Bulletで物理シミュレーション (導入編) #cocos2d_2011_adcal

@yoichinejiさん主催のcocos2d Advent Calendar 2011、16日目の記事です。
前日の記事: CCSendMessagesでもっと簡潔に直感的なコードを書こう (@Seasonsさん)

今回はcocos2d上で3Dオブジェクトを扱えるフレームワーク「cocos3d」とオープンソースの物理演算エンジン「Bullet」を使って物理シミュレーションをしてみます。
サンプルコードはこちらからダウンロードできます。


cocos3dの導入

cocos3dはhttp://brenwill.com/cocos3d/の右カラムの「DOWNLOAD COCOS3D」からダウンロードできます。
執筆時点での最新バージョンは0.6.4です。

Terminalで解凍したフォルダへ移動し、cocos2dのパスを指定してインストールスクリプトを実行すると、Xcodeのテンプレートがインストールされます。
この操作は管理者権限で実行する必要があります。

$ cd cocos3d\ 0.6.4
$ ./install-cocos3d.sh -u -f -2 "../cocos2d-iphone-1.0.1"


cocos3dのプロジェクトを作成する

Xcodeのメニュー File → New → New Project... を選択し、iOS / cocos3dから「cocos3d Application」を選択します。
プロジェクト名を付けて適当な場所に保存します。

ccadcal16_01.png

これをそのままビルド・実行してみるとHello worldの文字が回転します。

ccadcal16_02.png


Bulletの導入

Bulletはhttp://bulletphysics.org/wordpress/の左上の「Bullet Download」からダウンロードできます。
執筆時点での最新バージョンは2.79です。

今回は、Bulletを静的ライブラリとして導入します。
解凍したフォルダ内にあるsrcフォルダをプロジェクトフォルダにコピーして、名前をBulletに変更しておきます。
Project Navigatorでプロジェクトを選択して下のAdd Targetをクリック、Mac OS X / Framework & Libraryから「C/C++ Library」を選択します。

ccadcal16_03.png

Product Nameは「Bullet」、Typeは「Static」にして、Use Automatic Reference Countingはオフにしておきます。

ccadcal16_04.png

Xcodeのメニュー File → Add Files to "<プロジェクト名>"... を選択して、Bulletのソースファイルをプロジェクトに追加します。
このときAdd to targetsで「Bullet」にチェックして、先ほどのBulletフォルダを指定します。

ccadcal16_05.png

Project Navigatorでビルドしないファイルの参照をごそっと削除します。

ccadcal16_06.png

プロジェクトのBuild Settingsを変更します。

  • Header Search PathsにBulletフォルダへのパス($SRCROOT/$PROJECT_NAME/Bullet)をRecursiveで追加。

BulletのターゲットのBuild Settingsを変更します。

  • Base SDKを「Latest iOS」に変更。
  • Architecturesを「Standard (armv7)」に変更。
  • Other Linker Flagsから「-lz」を外す。

アプリケーションターゲットのBuild Settingsを変更します。

  • Build Phases → Target Dependencies の+ボタンを押してBulletを追加。
  • Build Phases → Link Binary With Libraries の+ボタンを押してlibBullet.aを追加。

さて、ようやくこれでコードを書く準備ができました。
思いのほか長くなってしまったのでここまでを導入編として、実際の物理シミュレーションの実装は次の機会にしたいと思います。

ccadcal16_07.png
こんな感じになります!

次の記事: よく分かってない人がgoogle先生と一緒につくるはじめてのBox2D (@marchEnterpriseさん)