Processingのライブラリ”fisica”は、Box2Dで書かれた物理エンジンのProcessing版といった具合のライブラリです。Processingのメニューから「スケッチ」→「ライブラリのインポート」→「ライブラリの追加」で追加することが可能です。
これを使うことで重力を発生させたり、物理的な力をオブジェクトに発生させることができます。
僕がこの”fisica”を使う際にリファレンスを読んだのですが、リファレンスが少なく、さらに英語で詳しく書いていないため、とても苦労しました。
そこで今回はこの”fisica”を使う際の注意点と簡単なプログラムの紹介をします。
CONTENTS
fisicaの基本的な使い方とメソッド
基本的な構造とメソッドの使い方をご紹介します。
自分が使用したものしかわからないので、コメントいただけたら調べようかとも思います。笑
FCircle, Fox, FLine, FPoly
FCircleは球体、FBoxは四角形、FLineは線、FPolyは多角形。
以下のように初期化、設定する。
- setPosition : 配置の設定
- setVelocity : 速度の設定
- setRestitution : 反発係数の設定
- setFriction : 摩擦係数の設定
- setStatic : 静止物体かどうか
- setRotation : 回転角度の設定
- setName : 名前の設定
FContactStarted
接触を検出するクラス。
まあ、こんなもんかな。あとは二つ以上の物体を結合するFCompoundとかもあるけど、とても直感的なので解説はいらないはず。なんでもサンプルを見ればお勉強できます。Processingからはcommand+shift+Oで開けます。
注意点
fisicaでは、基本的に途中で値の変更はできません。
例えば、ボールと四角形がぶつかった後に、ボールの大きさを大きくしたり、四角形の角度を変えたりすることはできないのです。これは、開発者にとっては結構難関で、一度消した後にもう一度描画するようにする、などの工夫が必要です。
また、drawの中に物体の描画を描く処理をしたい場合、fisicaの設定により描画するものの上限があるようなので、frameRateでうまく頻度を変える工夫などを施す必要があります。
それでは、この注意点を踏まえてfisicaを楽しんでください!!
実際に作ったプログラム
ポートフォリオのページにもあるように、ピタゴラスイッチのような装置をProcessing上で作成しました。
これは大学の授業の課題として作ったのですが、現実世界では起こり得ないような動きをする面白いものができたのでそのまま紹介ます。
GitHubにも載せているので、cloneして使ってみてください!
実行結果
実行結果はYouTubeにアップしています。