ofxBox2dをWindows環境で使う

Box2dxという物理エンジンがあるのですが、openFrmaeworksのaddonが用意されているようです。

Processingの時にお世話になった楽しいライブラリなので、openFrameworksでも試してみました。

[ 環境 ]
・Windows 10
・Visual Studio 2015
・openFramewoks 0.9.8

Box2D
https://ja.wikipedia.org/wiki/Box2D

とりあえず、通常のaddonと同じようにGitHubからデータを引っ張ってきます。
openFrameworksのバージョン0.9.8はstableを使うように書いてあるのでそちらのブランチから持ってきましょう。

ofxBox2d
https://github.com/vanderlin/ofxBox2d

そのままでは使えなかったのですが、2点程対応して使えるようにしました。

OSX/linuxユーザが多いためか、Windows環境だと手を加える必要があったり、色々なソフトを導入しないと使えないaddonとか良くあります。

C++なのでプログラミングできれば、SDKを直接呼んだ方が早い場合もありますね。OpenCVやKinectはそうしています。

1.追加のインクルードディレクトリに「[openFrameworks_dir]\addons\ofxBox2d\libs」を追記

openframerowks/addonsフォルダに配置して、プロジェクトを新規作成、使用するを選択する画面でofxBox2があることを確認して、チェック。そのままビルドするとエラーが数件発生しました。

headerファイルがないといわれますがフォルダを覗くと実体は存在しているようだったので、Pathが通じるようにしてあげましょう。


32bit,64bitのそれぞれあるので、注意しましょう

2.「ofxBox2dPolygonUtils.h」の「simplifyContour」関数を一部修正する

「式には定数値が必要です」というエラーが出ます。私もC#からC++に移行した身なので、始めの頃はやろうとしてエラーにしてましたね。

変数の値で配列を作ろうとしているので、怒られます。
ネットで調べながら下記のように修正しました。

普段だと動的な配列はvectorとかのコンテナを使ってしまうので、こういうC言語由来の書き方は苦手ですね。自信は無いですが、大丈夫のはず…(危険なコードだったら誰か教えて)

とゆーか、stableにこのコードがあるってことは、コンパイラによってはOKのものもあるのかな。C/C++は奥が深すぎて毎日勉強ですね。

[ほしいものリスト]
Amazon

[ Sponsor Link ]

Insta20171018

[ Video ]

[ About ]
ofxBox2dという物理エンジンのaddonを使ってみました。
キーボードのキー入力がある間は、Circleが毎フレーム追加されていきます。
この動画中では重力が存在するので生成されたCircleは下へ落下します。

キー入力中は画面四方の壁が存在していますが、キー入力がなくなると消えるので、画面外に落下して見えなくなります。(放っておくと計算量が増え続けるので、見えなくなったCircleを削除しています)

重力や衝突、摩擦などの計算はすべてBox2d側で処理をしてくれるので、利用する側は諸々の設定をしたあとに、update関数やdara関数を呼んであればOKです

[ Source ]

[ Link ]
https://github.com/junkiyoshi/Insta20171018

[ほしいものリスト]
Amazon

[ Sponsor Link ]

Insta20171017

[ Video ]

[ About ]
Particleをsin関数を使って動かしています。

[ Source ]

[ Link ]
https://github.com/junkiyoshi/Insta20171017

[ほしいものリスト]
Amazon

[ Sponsor Link ]