タグ付けされた質問 「separating-axis-theorem」

3
SATとの3D OBBコリジョンに使用する軸の数と数
私は以下に基づいてSATを実装しています: 指向バウンディングボックスを使用した動的衝突検出 [PDF] 7ページの表では、衝突を見つけるためにテストする15軸を参照していますが、Ax、Ay、Azだけで、すでに衝突が発生しています。 他のすべてのケースをテストする必要があるのはなぜですか?Ax、Ay、Azだけでは不十分な状況はありますか?

3
チームはソースファイルの上書きをどのように防止しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 4年前に閉鎖されました。 たとえば、ゲームエンジンなどが複数の人によって同時に処理されているときに、上書きをどのように防ぐことができるのか、ということが起こりました。 開発者1が作業してAudio.cppおり、開発者2も作業をしているとしましょう。Audio.cppこれは、一般的に大規模なチームで上書きに対処するためにどのように管理されていますか?(つまり、開発者2がファイルを開くのを停止して、開発者1が終了するまで)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

1
SATを使用して複合形状の衝突を解決する方法は?
SATは、任意の凸多角形間の衝突を判断する適切な方法です。衝突を解決するために必要なベクトルも取得します。 複雑な(非凸)形状間の衝突を解決するために、私はいくつかの凸多角形で構成されるある種の複合形状について考えていました。衝突がブロードフェーズで発生する場合(たとえば、円対円またはAABB対AABB)、衝突は、複合形状の各ポリゴンと他の複合形状の各ポリゴンをチェックすることで解決されます。 オブジェクトを実際に分離する最良の方法は何でしょうか?素朴なアプローチは、最高の大きさのベクトルを取得し、それを分離に使用することです。次の図では、これはV 2になります ただし、分離ベクトルが異なる方向を指している場合、衝突をすぐに解決することはできず、何度か繰り返す必要があります。したがって、次の図ではV 1を使用して分離し、別の反復ではV 2(または形状がV 1の量だけ移動したためV 2に近いもの)で分離します。 このアプローチは、互いに反対方向を指すベクトルを分離する場合、または次の図に示すような場合に失敗します。 ここでは、左側の状態と右側の状態の間で無限に反復します。 ここで実際の質問をする:この問題に対する合理的なアプローチは何ですか?複雑な形状に複合ポリゴンを使用することは合理的な考えだと思いますが、その場合、衝突をどのように解決する必要があるのでしょうか?3番目の画像に示すように、行き止まりを検出するにはどうすればよいですか?

3
複数のオブジェクトとの衝突の場合の衝突解決
静的オブジェクトと可動オブジェクトがあります。衝突は、separating-axis-theoremを使用して検出されます。 たとえば、この状況では、2つの静的オブジェクト(赤)があります。 そして2つの間の可動オブジェクト: 私のアルゴリズムは、これらの2つのオブジェクト間の衝突を計算できます。また、衝突に対して完全な解像度ベクトル(最小変位ベクトル)を吐き出します。 したがって、たとえば、緑の長方形と右の赤の長方形の衝突をチェックすると、アルゴリズムは、衝突を解決するために緑の長方形を移動する方法を示すベクトルを吐き出します。 MSPaintでこれをすばやく描画したことに注意してください。そのため、その図では、minimum-translation-vectorが緑の長方形を上部に押し出している可能性がありますが、右は実際には短いです。 これにアプローチする一般的な方法は、一度にすべてではなく、フレームごとに1つの衝突の衝突を解決することです。しかし、私の場合、これはフリップフロップになります: 最初に、ソルバーは2つの衝突を検出しますが、右の長方形と緑の長方形の間の衝突のみを解決します。 次に、次のフレームで、左の赤い長方形と緑の長方形の間の衝突を1つだけ検出し、解決します。 ご覧のとおり、これは実際には衝突を解決しません(たとえば、緑色の長方形を一番上に押し出すことによって)。代わりに、2つの状態の間でフロップを無限にフリップします。 どうすれば解決できますか?

3
2Dゲームのコリジョンレスポンス:特定の軸に沿ったSATと最小変位?
作成中の2Dゲームに衝突システムを実装しようとしています。分離軸定理(metanetのコリジョンチュートリアルで説明されている)は、衝突検出を処理する効率的で堅牢な方法のように見えますが、私は彼らが使用するコリジョンレスポンスメソッドがあまり好きではありません。オーバーラップが最小の軸に沿って盲目的に移動することにより、アルゴリズムは移動するオブジェクトの前の位置を単純に無視します。つまり、静止オブジェクトに進入して跳ね返るまで静止オブジェクトと衝突しません。 これが重要な状況の例を次に示します。 上記のSATメソッドによれば、長方形は斜辺に垂直な三角形から単純に飛び出します。 ただし、現実的には、長方形は三角形の右下隅で停止する必要があります。これは、変位ベクトルに沿って連続して移動している場合の最初の衝突点になるためです。 さて、これは実際にゲームプレイ中は重要ではないかもしれませんが、この方法で正確かつ一般的に正確な変位を達成する方法があるかどうかを知りたいです。私は過去数日間、頭を悩ませてきましたが、まだあきらめたくありません! (StackOverflowからクロスポストされ、ルールに反しないことを願っています!)

4
SATで連絡先を見つける
分離軸定理(SAT)により、最小平行移動ベクトル、つまり2つの衝突するオブジェクトを分離できる最短ベクトルを簡単に決定できます。ただし、必要なのは、貫通オブジェクトが移動しているベクトル(つまり、接触点)に沿ってオブジェクトを分離するベクトルです。 明確にするために絵を描きました。前から後の位置に移動する1つのボックスがあります。後の位置では、灰色のポリゴンと交差します。SATは、赤いベクトルであるMTVを簡単に返すことができます。青いベクトルを計算しようとしています。 私の現在のソリューションは、青いベクトルの長さが特定のしきい値に達するまで、前と後の位置の間でバイナリ検索を実行します。それは機能しますが、形状間の衝突をループごとに再計算する必要があるため、非常に高価な計算です。 接触点ベクトルを見つけるためのより簡単なおよび/またはより効率的な方法はありますか?

3
狭位相衝突検出アルゴリズム
衝突検出には3つのフェーズがあります。 Broadphase:相互に作用する可能性のあるすべてのオブジェクト間でループします。ループを高速化する場合は、誤検知が許可されます。 Narrowphase:それらが衝突するかどうか、場合によっては、どのようにして誤検知がないかを決定します 解決策:衝突を解決します。 私が尋ねている質問はナローフェーズについてです。複雑さと精度が異なる複数のアルゴリズムがあります。 ヒットボックスの交差:これは事後アルゴリズムであり、複雑度は最低ですが、あまり正確ではありません。 色の交差:各ピクセルのヒットボックスの交差、事後、ピクセル完全、時間に関して正確ではない、複雑度が高い Separating axis theorem:これはより頻繁に使用され、三角形には正確ですが、エッジを見つけることができないため、事後的に、最後のフレームを考慮すると、より安定します 線形レイキャスティング:先見的アルゴリズムは、半現実的に見える物理学に役立ち、交差点を見つけます。SATよりも正確ですが、より複雑です。 スプライン補間:演繹的で、線形光線よりもさらに正確で、より複雑です。 私が忘れていたものはおそらくもっとたくさんあります。問題は、いつSATを使用した方がよいか、いつ光線を使用するか、いつスプラインを使用するか、そして何か良いものがあるかどうかです。

1
複数のポリゴンで軸定理を分離していますか?
C#で分離軸の定理を実装しようとしています。2つのポリゴン間の最小並進ベクトルを計算できる関数があります。ただし、1つのポリゴンと他の複数のポリゴンの間の最小並進ベクトルを計算する関数を作成できないようです。正直なところ、私は何ヶ月もこれに取り組んできましたが、解決策に近づいておらず、オンラインで解決策を見つけることができませんでした。常に正しい結果を返さないエッジケースがいくつかあり、私のゲームで優先度の高いバグが発生します。 以下は、正常に機能しない一般的なエッジケースです。 この問題のよく知られた解決策はありますか?私が見つけることができるのは、「各ポリゴンでSATを実行するだけ」と言っている人たちだけですが、これが最小の並進ベクトルを生成することはめったにありません。 任意の助けをいただければ幸いです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.