問題タブ [collision-detection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 実際のアプリケーションでの衝突
これが私の問題です。私はゲームを作成していますが、衝突を行う方法について疑問に思っています。分析して最適な解決策を見つける必要があるケースがいくつかあります。
前もって言っておきますが、私はサードパーティの物理ライブラリを使用していませんが、社内で行うつもりです。(これは教育プロジェクトなので、スケジュールがなく、学びたいです)
衝突を作成する必要がある 2 種類のメッシュがあります。
1) スタティック メッシュ (画面上を移動しますが、アニメーションはありません)
2) スキン/ボーン メッシュ (アニメーション)
実際、私はこの解決策を持っています(かなりハック:|)
まず、完全なメッシュ (私の場合はカプセル) を囲むバウンディング ボリュームに対するテストがあります。
1) 静的メッシュについては、手動で (モデラー上で) ブロックに分割し、これらのブロックごとに球体/AABB テストを使用します。(正常に動作しますが、すべてのメッシュをスライスするのは少し面倒です:P) (メッシュを平面に分割する自動システムを試しましたが、悪い結果が得られました:()
2) アニメーション化されたメッシュ ATM の場合、実行時にメッシュを x ブロック (x はボーンの数) に分割しています。各ブロックには、そのボーンが主要なインフルエンサーである頂点が含まれています。(うまくいくこともあれば、本当に悪い結果になることもあります。:|)
メッシュの分割は毎回ではなく、読み込み時に行われることに注意してください (そうしないと、スライドショーのように実行されます:D)
そして、ここに質問があります:
これら2つのケースに使用する最も正気なアイデアは何ですか? これらの方法を研究するための資料はありますか? (いくつかのソースコードと説明があればさらに良いでしょう(言語は重要ではありません。アルゴリズムを理解していれば、実装は簡単です))そのソリューションが他のソリューションよりも優れている理由を議論できますか?kd-tree、octree などについて多くの話を聞きました。それらの構造は理解していますが、衝突検出シナリオでの有用性を見逃しています。
答えてくれてありがとう!!!
編集:ネット上で説明のあるK-Dopの例を見つけようとしています。まだ何も見つかっていません。:(手がかりはありますか? K-Dopを他のタイプのバウンディングボリュームなどで効率的にテストする方法に興味があります...しかし、ネット上のドキュメントは非常に不足しているようです. :(
c# - 異なるKとボリューム間のK-Dop衝突
そして、いくつかの作業を終えて、KDopバウンディングボリュームがどのように作成され、衝突がどのように交差するかを最終的に理解し、それらの実用的な実装を作成しました。今、問題は別です。:D
異なるK値の2つのK-Dopをどのように交差させることができますか(可能でなければなりません、または意味がありません)?(明らかに、これらの2 K-Dopを作成するためにどの軸が使用されたかは事前にわかっています。)
DOP6(AABB)とDOP14(AABB +コーナーカットオフ)をどのように交差させることができますか?または、DOP14(AABB +コーナーカットオフ)とDOP26(AABB +コーナーカットオフ+エッジカットオフ)?
簡単な方法(同じKを持つKDOP間)は次のとおりです。
別の質問はです。KDOPとスフィアを交差させる方法は?KDOPとカプセル?KDOPとOOB?KDOPとAABB?(異なるKを使用する方法を知っていると、これは簡単になるはずです(AABBは基本的にDOP6であるため))これらの単純な構造を交差させる一般的な方法は何ですか?
答えてくれてありがとう!!!
編集:ネットでの検索から、分離軸が進むべき道のようですが、K-DOPでそれを実装する方法についての詳細な情報を見つけることができません。:P
編集2:誰かがKDOPに対する分離軸の定理の実用的な実装を持っていますか?:|
c# - 画面に衝突を描画する
そして、ここで別の質問があります。
前のものの後、私はついにkDopシステムと関連するすべてを完成させました。(kDopの階層ツリーなど。)すべてが正常に機能します。
ここで、デバッグ目的で衝突を画面に描画し、作業の結果を確認したいと思います。(特定のモードで行った階層的な選択が適切かどうかを確認するには)
AABB / Sphereの場合、問題はありません。作成は非常に簡単です。問題はkDOPにあります...
私は持っています :
軸
(1,0,0)(0,1,0)(0,0,1)(1,1,1)(-1,1,1)(1、-1,1)(1,1 -1)(1,1,0)(1,0,1)、(0,1,1)、(1、-1,0)、(1,0、-1)、(0,1、- 1)
および軸を使用して計算された最小/最大値。
これらのデータを使用して一連のポリゴン(実際には単純なメッシュ)を作成するにはどうすればよいですか?(私は実装を気にしません、私はそれを実装できるように理論的に理解したいだけです)
答えてくれてありがとう!!!
編集:私はすでに軸を持っているので、メッシュの法線を簡単に計算できます。問題は頂点位置の計算です...
編集2:私はネット上で有用と思われるこのコードを見つけました(または少なくともデバッグメッシュを作成するためにそれが言っているドキュメントでは)が、頂点の位置を見つけるためにそれを使用する方法がわかりません:
編集3:法線と点(原点、平面が通過すると確信している)があると思ったので、操作に関連するすべての平面を作成できます...今はもっと何かが必要です...。
geometry - 点 (int - 座標) が三角形の斜辺内にあるかどうかを確認する方法
直角三角形があり、特定の点がその三角形の斜辺上にあるかどうかを確認したい。すべての点は、浮動小数点変数ではなく、単純な整数です。
(壊れた画像、元の場所https://tape.bplaced.net/dl/example2.png
)
編集: すべての緑色の四角形は斜辺にあり、白い四角形はそうではありません。x、y、コーナーの座標、およびテストしたいポイントの座標を知っています。すべての座標は整数です (図では y が少しずれています。申し訳ありません)。
reflection - XNA衝突検出-Vector2.Reflect-サークルスプライトの法線の計算に役立ちます-C#
2D空間で移動する円の法線を計算する方法に頭を悩ませています。オブジェクトの速度(方向速度)の法線を計算することを想定しているところまで到達しましたが、それは私の大学の代数の心が過熱する場所です。中心点、半径、速度、および位置。
最終的には、Vector2.Reflectメソッドを使用して、この演習からもう少し現実的な物理を取得したいと考えています。
よろしくお願いします。
編集:提案を試してみるコードを追加しました(役に立たない)、おそらく提案を誤解しています。ここでは、バスケットボールと野球、つまりベースとバスケットを使用しています。また、位置と、動きを作成するために位置に追加されている速度があります。
c# - XNA C# 2D プラットフォーマー ゲーム
XNA で 2D プラットフォーマーを作成しようとしています (方法を理解する..)。
タイル グリッドの作成方法と衝突検出の実行方法を知っています。プレーヤーの 9 つのバウンディング タイルで衝突検出を実行していますが、衝突検出を実行するためのより良い方法があるかどうかを知りたいです。
Braid はタイルではなく断片的な画像か何かを使用すると読みましたが、これらの衝突検出をどのように実行しますか? タイルを使用するよりも優れていますか?
math - 衝突検出のためにプリミティブ座標を追跡するために OpenGL と一緒に使用するのに適した行列数学ライブラリはありますか?
プリミティブ座標を追跡するために OpenGL と一緒に使用するのに適した行列数学ライブラリ。
そのようなものは存在しますか?衝突検出で使用するためにオブジェクトを追跡するには、これが最善の方法ですか?
c# - XNA でのタイル ベースの衝突
XNA ゲームでタイルを描画し、キャラクターをロードしました。ただし、私のキャラクターは動きませんが、マップが動くため、動いているように見えます。今、実際に衝突をテストする方法を考えています。つまり、衝突コードはどこに行き、すべてのタイルが「1 つの大きなもの」を表すようにするにはどうすればよいでしょうか?
flash - フラッシュの衝突検出に役立ちます。回転と打撃を同時に行う
私がやりたいのは、オブジェクトを回転させ、その衝突ボックスを一緒に回転させることです。長方形を回転させて、ひし形のように見せ、その辺の1つをピクセルごとにオブジェクトに当てたいと思います。いくつかの本やウェブサイトを読んだところ、通常の長方形の衝突とhitTestObjectの衝突はこの問題には効果がないようです。私は高低を検索しましたが、移動および回転するオブジェクトを使用してヒットを検出するための解決策があるかどうかを知りたいです。これが私の現在の長方形との衝突コードです
私がしたいのは、それが衝突したときにロボットが箱から跳ね返るということです。それは機能しますが、それが正面からぶつかったときだけです。回転させて叩けるようにしたいと思います。基本的にこれに相当するフラッシュを探しています。 http://creators.xna.com/en-US/tutorial/collision2dperpixeltransformed
どうすればこれを達成できますか?