PHYS.ENG(3D物理エンジン)

  • リリース:2010年
  • プラットフォーム:PC
  • チーム:1人
  • 開発環境:
    • C++
    • OpenGL 2.0 (GLUT)
    • GLSL

本プロジェクトは自分の3D物理エンジンの最新版です。エンジンの主な機能としては、剛体の物理シミュレーション、コリジョン判定、衝突ソルバーが搭載されています。物理の処理は、力積(impulse)の計算でオブジェクトの座標や速度を計算し、オブジェクトの回転情報はクォータニオン(Quaternion)に保存し、回転速度の計算を通してシミュレーションが成り立っています。

本作では、ボックスやスフィアのシミュレーションをサポートし、ボックスの積み重ねもある程度安定化処理も実装されています。摩擦力の実装で、スフィアが地面等に転がる時にリアルな表現で回転ができ、ボックスも滑らずに移動できるようになりました。

レンダリング処理はすべて自作のOpenGLグラフィックスエンジンで行われています。

エンジンな主な機能:

  • 3D剛体の物理シミュレーション
  • SAT式コリジョン判定
    • Oriented Bounding Box (OBB) ボックス
    • スフィア
  • 力積(impulse)の衝突ソルバー
  • クォータニオン(Quaternion)回転
  • 摩擦力の計算
  • 境界ボリュームでのブロードフェーズ カリング
  • ポーズ&フレームステップ
  • 衝突座標&ノーマルのデバッグビュー

以下の動画で物理エンジンの動作をご覧いただけます。カメラがシーンの中のオブジェクトの一つに固定されていて、ユーザーがWASDのキーボード入力で任意の方向にオブジェクトに力を与えることができます。

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

コメントを残す

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