


- リリース:2010年
- プラットフォーム:PC
- チーム:1人
- 開発環境:
- C++
- OpenGL 2.0 (GLUT)
- GLSL
本プロジェクトは自分の3D物理エンジンの最新版です。エンジンの主な機能としては、剛体の物理シミュレーション、コリジョン判定、衝突ソルバーが搭載されています。物理の処理は、力積(impulse)の計算でオブジェクトの座標や速度を計算し、オブジェクトの回転情報はクォータニオン(Quaternion)に保存し、回転速度の計算を通してシミュレーションが成り立っています。
本作では、ボックスやスフィアのシミュレーションをサポートし、ボックスの積み重ねもある程度安定化処理も実装されています。摩擦力の実装で、スフィアが地面等に転がる時にリアルな表現で回転ができ、ボックスも滑らずに移動できるようになりました。
レンダリング処理はすべて自作のOpenGLグラフィックスエンジンで行われています。
エンジンな主な機能:
- 3D剛体の物理シミュレーション
- SAT式コリジョン判定
- Oriented Bounding Box (OBB) ボックス
- スフィア
- 力積(impulse)の衝突ソルバー
- クォータニオン(Quaternion)回転
- 摩擦力の計算
- 境界ボリュームでのブロードフェーズ カリング
- ポーズ&フレームステップ
- 衝突座標&ノーマルのデバッグビュー
以下の動画で物理エンジンの動作をご覧いただけます。カメラがシーンの中のオブジェクトの一つに固定されていて、ユーザーがWASDのキーボード入力で任意の方向にオブジェクトに力を与えることができます。

エンジンの多くの物理計算式は『ゲームプログラミングのためのリアルタイム衝突判定』という本に記載されている計算式をベースに実装しました。ゲーム開発の物理処理には欠かせない本なので、とてもおすすめの本です。