Các trường khoảng cách của thế giới là gì và chúng có thể áp dụng để phát hiện va chạm như thế nào?


12

Tôi đã xem xét một số phương pháp hiệu quả để phát hiện va chạm trong một cảnh có cả đối tượng tĩnh và động khi tôi bắt gặp "trường khoảng cách".

Tôi đã cố gắng tìm kiếm và hiểu khái niệm này, nhưng tôi chỉ có thể tìm thấy những bài báo được viết bằng ngôn ngữ rất phức tạp. Ai đó có thể giải thích bằng từ dễ dàng các trường khoảng cách là gì và làm thế nào chúng có thể được sử dụng để phát hiện va chạm?


ý bạn là bản đồ khoảng cách?
LearnCocos2D

Câu trả lời:


13

Trường khoảng cách ( hoặc biến đổi khoảng cách hoặc bản đồ khoảng cách ) là một cấu trúc có lưới trong đó mỗi ô trong lưới biểu thị khoảng cách ngắn nhất từ ô đó đến một ô với một số thuộc tính khác. Thông thường, "tài sản khác" là một loại ô ranh giới, chẳng hạn như một bức tường mà người chơi không thể vượt qua, hoặc bề mặt của lưới.

Trường khoảng cách có rất nhiều ứng dụng. Bạn có thể tưởng tượng, ví dụ, làm thế nào chúng có thể được sử dụng để thực hiện hướng dẫn di chuyển (bằng cách tạo bản đồ khoảng cách đến các đối tượng nguy hiểm hoặc mong muốn và quyết định di chuyển trọng số của chúng).

Tuy nhiên, bạn đặc biệt hỏi về va chạm. Sử dụng các trường khoảng cách để thực hiện phát hiện va chạm giữa hai đối tượng chuyển động có thể nhanh chóng trở nên kém hiệu quả, vì việc xây dựng lại các trường khoảng cách có thể trở nên rất chậm khi phạm vi của trường phát triển (đặc biệt là trong 3D, mặc dù các phương pháp cải thiện thời gian tạo là một lĩnh vực nghiên cứu ).

Do đó, va chạm trường khoảng cách được sử dụng chủ yếu để phát hiện va chạm của vật thể động với vật tĩnh. Thường xuyên nhất, tôi đã thấy điều này được thực hiện để phát hiện sự va chạm của các vật thể bằng vải (hoặc biến dạng khác) với các vật thể cố định khác trong cảnh .

Một cách thô bạo, điều này được thực hiện bằng cách sử dụng trường khoảng cách đã ký cho đối tượng tĩnh trong đó một dấu (thường âm) biểu thị một ô bên trong lưới và một ô khác (rõ ràng là dương) biểu thị một ô bên ngoài lưới. Các hạt của lưới vải có thể được chuyển thành không gian cục bộ của lưới tĩnh và các vị trí "trước" và "sau" của hạt trong bước mô phỏng vải đã cho có thể được kiểm tra theo trường khoảng cách để xác định xem dấu hiệu có thay đổi không (và do đó một vụ va chạm xảy ra). Đây là phương pháp được thảo luận trong bài báo năm 2003 về mô phỏng vải này , ví dụ.

Lưu ý rằng tôi sẽ không đề xuất sử dụng các trường khoảng cách làm phương pháp phát hiện va chạm duy nhất của bạn. Họ có thể khá hiệu quả cho những gì họ giỏi, nhưng họ không giỏi về mọi thứ. Cách tốt nhất để đạt được phát hiện va chạm hiệu quả là thường xuyên sử dụng nhiều phương pháp, theo thứ bậc, với độ chính xác ngày càng tăng khi bạn đi qua hệ thống phân cấp.


5

Trường khoảng cách là gì?

Trong hình học và đồ họa máy tính và cũng được sử dụng trong xử lý hình ảnh, trường khoảng cách (nói một cách đơn giản), là nhãn trên mỗi ô (pixel trong xử lý hình ảnh) với khoảng cách của đối tượng đa giác gần nhất hoặc pixel có thuộc tính đặc biệt trong xử lý hình ảnh .

Nói cách khác, đó là nhãn cho mỗi ô có giá trị của một đối tượng gần nhất có thuộc tính đặc biệt được xác định bởi bản đồ. Các đối tượng khác nhau tùy thuộc vào ứng dụng.

nhập mô tả hình ảnh ở đây

Hình trên chứa bản đồ Khoảng cách cho các pixel biên. Lưu ý cách mỗi pixel chứa khoảng cách đến pixel biên gần nhất. Khoảng cách được tính bằng khoảng cách Manhattan.

Có nhiều cách khác nhau để tính khoảng cách, các cách tiếp cận điển hình bao gồm:

Làm thế nào nó được áp dụng trong phát hiện va chạm?

Bằng cách duy trì bản đồ khoảng cách cho các đối tượng trong cảnh, bạn có thể kiểm tra xem hai đối tượng có va chạm hay không dựa trên khoảng cách đó. Thật không may duy trì bản đồ như vậy là tốn kém. Và điều này thường được sử dụng trong các đối tượng tự giao nhau như mô phỏng vải là bản đồ khoảng cách có thể được duy trì và cập nhật hiệu quả hơn do bản chất của đối tượng.


Tại sao điều này có thể được thực hiện "hiệu quả hơn" trong các đối tượng tự giao nhau?
lucidbrot
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.