1 つの軸に沿った 3D 貫通ベクトルの計算に問題があります。私はすでにSATを実装しており、機能しています。最初のボックスを他のボックスからどれだけオフセットする必要があるかを計算したいので、常に他のボックスの上に置かれます。非常に長いボックスでシンプルなボックス キャストを行うようなものです。
指定された軸の方向に 1 つのオブジェクトを押すオフセットを見つける方法を教えてください。
1 つの軸に沿った 3D 貫通ベクトルの計算に問題があります。私はすでにSATを実装しており、機能しています。最初のボックスを他のボックスからどれだけオフセットする必要があるかを計算したいので、常に他のボックスの上に置かれます。非常に長いボックスでシンプルなボックス キャストを行うようなものです。
指定された軸の方向に 1 つのオブジェクトを押すオフセットを見つける方法を教えてください。
この最初の部分は、すでに知っているはずです。AMIN
各形状を各軸に投影するとAMAX
、形状 A の最小スカラー値BMIN
と最大スカラー値が存在するはずBMAX
です。
オブジェクトが明らかに軸上で衝突している場合、それらの投影はオーバーラップします。つまり、 または のいずれAMIN < BMIN < AMAX < BMAX
かになりBMIN < AMIN < BMAX < AMAX
ます。最初に仮定しましょう。
の値AMAX-BMIN
は、いずれかの形状を移動してそれらを接触させるのに必要な距離であり、テストされる軸は方向を示します。
通常、すべての軸を反復処理すると、最小値とそれに対応する軸が追跡され、それが形状の衝突を解消するために必要なベクトルになります。(Google で調べたい場合は、通常、「最小変位ベクトル」と呼ばれます。)
それらを特定の方向に変位させたい場合は、その特定の軸に対応する値を保存するだけで、それが変位ベクトルになります (これは、1 つの形状の位置に追加されてそれらを分離します)。
「最小変位ベクトル sat」をグーグルで検索し、最初のいくつかのリンク、具体的にはhttp://www.dyn4j.org/2010/01/sat/をチェックすることを強くお勧めします。少し密度が濃いですが、SAT について知っていることはすべてここで学びました。
編集 そして...私は作品を逃しました。これはちょっと大雑把ですが、別の軸 (下のボックスの長辺の法線) から取得した変位ベクトルに基づいて、1 つの軸 (この例では垂直) に沿って形状を変位させたい場合は、次のようにする必要があります。変位ベクトルを目的の(正規化された)軸に投影して(内積を使用)、適切な距離を取得してから、目的の軸と組み合わせます。