問題タブ [aabb]
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# - シンプルな 3D AABB ライン セグメントの衝突検出 (交差)
3D の軸に沿ったバウンディング ボックスが (光線ではなく) 線分と交差するかどうかを教えてくれるメソッドが必要なだけです。交点は必要ありません。
ボックスは 2 つの対角によって定義され、線分は始点と終点によって次のように定義されます。
私は多くの調査を行ってきましたが、理解できる、または少なくとも使用できるコード (できれば C# または Java) を見つけることができませんでした。仕事をするライブラリではなく、メソッドが必要です...
私の問題は、100% 正確である必要があり、セグメントがボックスに触れている (つまり、単一のポイントを共有している) 場合、false を返さなければならないことです。たとえば、セグメントがボックスのエッジの 1 つまたはコーナーを通過する場合、それらは交差しません。
ありがとう
collision-detection - AABB または OBB 疑いを使用した衝突検出
私はこれを使っていくつかの実装をしたいと思っています。しかし、いくつか疑問があります。de AABB の問題は、オブジェクトの軸を揃える必要があることです。そうしないと、フレームごとに bbox を再計算する必要があります。そうですか? その再計算は高価ですか?精度についてはどうでしょうか。bbox を細分化するコリジョン ツリーを作成できますか? AABB とどのように連携しますか?
OBB はオブジェクトの回転に向けられていますよね? ゲームが初期化される前に、ツリーを構築する必要があります。実装がはるかに難しく、少し高価であると読みましたが、精度が大幅に向上しました。しかし、オブジェクトがゲーム内で回転する場合、bbox はその回転を「自動的に」再計算しますか?
ゲームで最も使用されるのはどれですか?その理由は?
前もって感謝します :)
python - Python:最高の粒子の自己衝突/三角形衝突アルゴリズム
私はPythonでBlender用のこのパーティクルエンジンに取り組み始めています:http ://www.youtube.com/watch?v = uoK4QV3jg58&feature = channel_video_title
すべてのデータは私のスクリプトによって処理されます。Blenderはビジュアルのためだけにあります。今のところ、私の問題は、上のビデオで、すべてのパーティクルの各パーティクル間の距離を計算して、それらが互いに衝突しているかどうかを検出することです。
私はについて読み始めています:
- 八分木
- kdTree
- BVHTree
- AABBtree
- ...などなど
Kdtreeは、最も近いネイバーを検索するのに非常に効率的であるように見えますが、静的クラウドのみを検索します。私のパーティクルは常に移動するため、反復ごとにkdTreeを再生成する必要があり、多くのプロセスを消費すると思います。私は多くのゲームがAABBツリーを使用していることを読みました。少し迷ってしまいました…何を選べばいいのかわかりません。私が欲しいのは:
- 非常に大量の粒子(25万以上)間の衝突を検出します
- リアルタイムである必要はありません(とにかく250000個のパーティクルでは実際には不可能です)。200万個のパーティクルに対してフレームあたり20分は私にとって問題ではありません。
- 私の粒子は常に球です
- パーティクルとポリゴンオブジェクト間の衝突を検出します
- 必要な距離計算を減らすためのアルゴリズム(遠くにある場合でも、互いにすべてのパーティクルまたはポリゴンを計算するなどの回避)
- パーティクルは動的であり、ポリゴンオブジェクトは動的または静的にすることができます。
誰かが私に最良の推測が何であるか、そして私がPythonのドキュメントとその例をどこで見つけることができるかを教えてくれるなら。
java - 射影ベクトルを使用した基本的な AABB 衝突
私は過去数日間、ベクトルについて調べたり、検索したりしてきましたが、まだ数学について理解することができません..
私は 2 つの AABBを持っています。衝突時に、メソッドが Vector を返し、それを位置 Vector に追加して、オブジェクトを境界に戻すことができます。
これが私の現在のコードです:
(位置ベクトルは AABB の中心です)
(自明ですが、ここに collideBoolean(Sprite other) のコードもあります)
私の現在のコードは多かれ少なかれ機能します..しかし、「その他」と衝突している(この)オブジェクトは、「その他」の最も近いコーナーに向かって押し出されます。
私は本当に近いと思います。確かに、別の目には目がくらむほど明白なものになるでしょうが、私はそれを完全に理解することはできません. どんな助けでも大歓迎です!
ありがとう、
編集:
これをcollide(Sprite other)メソッドの最後に追加すると機能しますが、私が望むほどきれいではありません。また、「他の」ボディに 1 つの軸だけに沿って移動する場合は正常に機能しますが、ボディを斜めに押し込むと、シェイプの内側に入り、ランダムに投げ出されます。
これはおそらく、ステップごとに移動するピクセルが多すぎるためです。ただし、衝突をスイープ テストする必要があります。
(このコードは、投影ベクトルを調べて、どのコンポーネントが大きいかを確認します。次に、0 が最大のコンポーネントになります。これは、最短パスに沿って形状からのみ投影していることを意味します)
編集 2
Ishtar の回答の実装により、状況は良好に見えました。しかし、小さなオブジェクトを幅の広いオブジェクトと衝突させた場合、中心付近の衝突は正確に修正されますが、コーナーに近づくと形状に沈み込みます。
このような:
編集 3
現在の衝突コード:
c++ - min_elementエラー
私はC++コーダーではないので、簡単かもしれません。
Pointクラスのベクトルがあり、AABB長方形を見つけたい:
- min x-min y
- 最小x-最大y
- 最大x-最小y
- max x-max y
最小値と最大値を保存するforループ(xに1回、yに1回)を実行し、各反復の値をいくつかのifで更新しました。
しかし、私はstdまたはboostにもっと賢いものがあると確信しています。
たとえば、私はちょうど試しました:
しかし、私は次のような奇妙なエラーが発生しています
エラー:'std :: cout << std :: min_element [with _FIter = __gnu_cxx :: __ normal_iterator >>、_Compare = bool()(const ofPoint&、const ofPoint&)](((DrawerWidget)this)-> DrawingWidget :: points.std :: vector <_Tp、_Alloc> :: begin with _Tp = ofVec3f、_Alloc = std :: allocator、((DrawerWidget *)this)-> DrawingWidget :: points.std: :vector <_Tp、_Alloc> :: end with _Tp = ofVec3f、_Alloc = std :: allocator、_compareX)'</ p>
min_elementを<<のどこかに置いた場合も同様のエラーが発生します
performance - より高速な交差テスト (AABB-AABB または AABB-triangle)
一般的にどちらの交差テストが速いですか? 別の軸に沿ったバウンディング ボックス? または、軸に沿った三角形のバウンディング ボックス。
私は AABB-AABB を仮定しましたが、さまざまな意見を聞いています。
lua - スイープ-AABBとAABBの衝突テストが機能しない
このページに示されているように、GomezのSwept-AABBとAABBの衝突検出アルゴリズムをLuaに移植しようとしていますが、動作させることができません。それは、他の不正確さの中でも、ほとんどどこでも出力時間がゼロに等しい「衝突」を検出します。私は何か間違ったことをしていますか?
編集:u0dに値を割り当てるif条件のいずれもトリガーされないように、3つの軸すべてについて、さらにテストを行うようです。
graphics - 任意のピクセルベースの描画のバウンディングボックスを計算します
任意のピクセルの連続した描画(たとえば、HTML5キャンバス上)を考えると、単にすべてのピクセルを見て最小/最大x / y値を記録するよりも効率的な、軸に沿ったバウンディングボックスを見つけるためのアルゴリズムはありますか?
bounding-box - メッシュを回転させた後、このAABBを変換して、再びフィットするようにします
私はインターネットで見つけたAABBのこのクラスを持っていて、メッシュが動くときに機能しましたが、メッシュを回転させるともちろん機能しなくなります。また、変換機能があることに気付いたので、これが私がしなければならないことだと思いますメッシュを回転させた後に機能するように使用しますが、マトリックスが少し新しく、使用方法がわかりません。
また、追加データとして、海軍のゲームであるため、Y-axixでメッシュを回転させたいだけです。
回答ありがとうございます。
actionscript-3 - Away3D で 2 つのバウンディング ボックス間の衝突を確認しますか?
Away3D で簡単な衝突検出を行う必要があります。away3d.bounds.AxisAlignedBoundingBoxクラスを見つけましたが、バウンディング ボックスとベクターの間の衝突しか確認できないようです。
2 つの境界ボックス間の衝突を確認する方法はありますか?