1
定常に近い物理オブジェクト間のジッターを防ぐにはどうすればよいですか?
私はカスタムの物理エンジンを実装しており、思い通りに機能するようになっています。重力、衝突、衝突応答があります。残念ながら、ほとんど静止しているオブジェクトの間にジッターがあるようですが、ほとんどの場合、変更できない低物理ティックが原因です。 私はオンラインで調べて、自分の試みのいくつかを含め、見つけた実装のいくつかを試しました。これが私が試した解決策です: 速度/運動量/ポテンシャルエネルギーがしきい値を下回るときの動きの減衰。 速度/運動量/ポテンシャルエネルギーがしきい値を超えている場合にのみ重力を適用します。 スリープ機能の実装。これは、最後の60フレームのオブジェクトの位置をチェックし、しきい値の境界ボックスの外に移動していない場合はスリープします。 衝突テストと解決を適用するときに、オブジェクトを上から下に反復します。 これが私のコードです: for each (auto ball in m_Balls) { ball->Update(t); ball->Accelerate(m_Gravity); } // This disgusting hack sorts the balls by height. In a more complete physics // implementation, I guess I could change the sorting based on the direction of // gravitational force. This hack …