Thuật toán phát hiện va chạm pha hẹp


10

Có ba giai đoạn phát hiện va chạm.

  1. Broadphase : Nó lặp giữa tất cả các objec có thể tương tác, dương tính giả được cho phép, nếu nó sẽ tăng tốc vòng lặp.

  2. Narrowphase : Xác định xem chúng có va chạm hay không, và đôi khi, làm thế nào, không có dương tính giả

  3. Giải quyết : Giải quyết va chạm.

Câu hỏi tôi đang hỏi là về hẹp. Có nhiều thuật toán, khác nhau về độ phức tạp và độ chính xác.

  1. Giao lộ Hitbox : Đây là thuật toán a-posteriori, có độ phức tạp thấp nhất, nhưng cũng không quá chính xác,

  2. Giao điểm màu : Giao điểm Hitbox cho từng pixel, a-posteriori, pixel hoàn hảo, không chính xác về thời gian, độ phức tạp cao hơn

  3. Định lý trục tách : Điều này được sử dụng thường xuyên hơn, chính xác cho các hình tam giác, tuy nhiên, a-posteriori, vì nó không thể tìm thấy cạnh, khi lấy khung cuối cùng trong tài khoản, nó ổn định hơn

  4. Chiếu tia tuyến tính : Thuật toán A- prori , hữu ích cho vật lý bán thực tế, tìm điểm giao nhau, thậm chí chính xác hơn SAT, nhưng phức tạp hơn

  5. Nội suy Spline : A-prori, thậm chí chính xác hơn các tia tuyến tính, thậm chí nhiều độ đồng bộ hơn.

Có lẽ còn nhiều điều nữa mà tôi đã quên. Câu hỏi là, khi nào thì tốt hơn là sử dụng SAT, khi tia, khi spline và liệu có gì tốt hơn không.

Câu trả lời:


6

Hai thứ bạn đang thiếu mà ngay lập tức nổi bật với tôi là GJK và MPR.

GJK là một thuật toán để tìm điểm gần nhất của hai đa giác lồi. Với một chút công việc phụ, bạn có thể sử dụng nó để tìm các điểm sự cố cho các đối tượng giao nhau và từ đó tính toán một đa tạp va chạm. Điều này được thực hiện thông qua việc cắt đa giác, giống như khi sử dụng SAT, nhưng GJK giúp bạn tiết kiệm một số bước (vì bạn đã có điểm gần nhất).

MPR (Minkowski Portal Refinement) là một thuật toán khác, tương tự như GJK (cả hai đều sử dụng khoảng trắng Minkowski). Nó không thể tìm thấy điểm gần nhất giữa các đối tượng không giao nhau như GJK, nhưng nó có rất nhiều thuộc tính đẹp khác cho các trò chơi và là cách sử dụng để có được một đa tạp liên lạc.

MPR là một trong những trò chơi phổ biến hơn. Nó rất hiệu quả, ổn định về số lượng và dễ thực hiện.

Các pha hẹp khác được sử dụng nhiều hơn trong các trò chơi chuyên biệt. Các trò chơi đua xe thường sử dụng phương pháp đúc tia như mô hình hóa lốp xe thực tế và thực hiện hành vi thực tế (hoặc thậm chí chỉ là vui vẻ) bằng cách sử dụng mô hình va chạm truyền thống và mô hình độ phân giải. Các nền tảng cũng thường sử dụng va chạm và vật lý tùy biến cao, vì vật lý "giống như Mario" ưa thích không được mô hình hóa bằng các thuật toán vật lý truyền thống. Bạn cũng sẽ thường thấy các phương pháp va chạm và vật lý khác nhau đối với chất lỏng và như vậy, mặc dù tôi biết ít hơn về các phương pháp đó.

Xem:


3

Tôi muốn nói, Kiểm tra trục tách của nó , không phải là Định lý.

Bạn sẽ sử dụng SAT trên các đa giác không di chuyển (2D), mặc dù bạn có thể mở rộng nó để đối phó với chuyển động tuyến tính tương đối.

http://elancev.name/oliver/2D%20polygon.htmlm#tut3

Đừng sử dụng GJK trong 2D, tôi thấy nó thực sự chậm hơn so với việc đơn giản là ép buộc SAT.

Một kỹ thuật khác mà bạn có thể sử dụng là Sự khác biệt của Minkowski, thu nhỏ một đối tượng xuống một điểm và 'phát triển' đối tượng kia bằng hình dạng của đối tượng đầu tiên. Sau đó, bạn kiểm tra đối tượng kết hợp với điểm dễ hơn rất nhiều - điều này cho bạn khoảng cách thâm nhập và bình thường. Tôi thấy công cụ này về mặt khái niệm rất hữu ích để tiếp cận các vấn đề phát hiện va chạm mới; dễ hình dung hơn SAT.

Để di chuyển và xoay đa giác (và đa diện), bạn có thể sử dụng Tiến bộ bảo thủ để tìm thời gian và điểm tiếp xúc chính xác.

http://www.cContuptphysics.com/BONSContinuptCollisionDetection.pdf

Bạn có thể đọc thêm về các kỹ thuật này trong bài đăng trên blog này mà tôi đã viết một lúc trước:

http://www.wildbunny.co.uk/blog/2011/04/20/collision-detection-for-dummies/

Mong rằng sẽ giúp!

Chúc mừng, Paul.


2
Định lý trục phân tách: một trục tồn tại dọc theo đó các hình chiếu của hai đối tượng lồi tách rời nhau nếu các đối tượng rời rạc. Một thử nghiệm trục tách: đưa định lý đã nói ở trên vào thực tế, tôi đoán vậy.
Eric

0

Điều này thực sự phụ thuộc vào loại trò chơi bạn có. Mỗi phương pháp trên có sự đánh đổi riêng.

Tuy nhiên, SAT là tiêu chuẩn khá trong kinh nghiệm của tôi đối với những người nói chung về vật lý chung, Ex. Box2D sử dụng nó rộng rãi (Angry Birds và nhiều game khác sử dụng Box2D).

Biến thể của giao điểm màu trộn với giao lộ SAT hoặc Hitbox được sử dụng trong các trò chơi như Sonic, Megaman với kết quả tốt.

Tôi không biết nhiều về # 4 và # 5.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.