Tại sao Động cơ Vật lý sử dụng lề va chạm?


7

Khi sử dụng công cụ vật lý trong trò chơi (như Bullet), bạn thường cần xác định lề va chạm cho từng đối tượng. Tôi là người mới bắt đầu phát triển trò chơi và tôi không hiểu mục đích của việc va chạm.

Hiểu biết cơ bản của tôi là nếu bạn có hai vật thể, mỗi vật có lề va chạm được đặt thành 0,01, thì sẽ phát hiện ra một vụ va chạm khi hai lề va chạm chạm vào nhau, sao cho khoảng cách giữa hai vật thực sự là 0,02.

Nhưng tại sao không chỉ đặt lề va chạm thành 0 và khiến phát hiện va chạm khi bề mặt thực tế của hai vật thể va chạm? Đây là cách vật lý hoạt động trong thực tế.

Một đoán là như sau. Nếu một khối lập phương có biên độ 0,01 thì sẽ phát hiện va chạm bất cứ khi nào một phần của vật thể khác tồn tại trong khoảng từ 0 đến 0,01 từ bề mặt của vật thể. Điều này khiến phòng mô phỏng bị lỗi, do đó nếu nó "bỏ lỡ" điểm khi đối tượng vượt qua lề va chạm của khối lập phương (vì bước mô phỏng dài), thì vẫn còn thời gian để phát hiện va chạm khi đối tượng di chuyển gần hơn về phía bề mặt của khối lập phương, trong phạm vi 0,01. Mặt khác, nếu lề bằng 0 và sự va chạm bị bỏ qua bởi mô phỏng, bạn có thể gặp tình huống hai vật thể rắn chiếm cùng một không gian, điều này có thể gây ra vấn đề.

Điều này có đúng không? Hoặc là có một lý do khác?

Cảm ơn!


Bạn có chắc chắn nó hoạt động hoàn toàn theo cách đó trong thực tế? Chúng ta có thể làm cho các cạnh sắc nét vô hạn sau đó? Trường hợp một khuôn mặt hoàn toàn không có đường tròn giữa nó và các mặt liền kề? Hoặc làm thế nào về việc tạo một đoạn đường trong thực tế có thể bị va chạm với nó không có âm lượng?
Louis Langholtz

Tôi hiểu quan điểm của bạn về cách vật lý dường như hoạt động ở cấp độ cổ điển và tôi đồng ý rằng nó có ý nghĩa. Chỉ là tôi nghĩ rằng thực tế cũng có thể chứng minh một mô hình tròn bán kính đỉnh.
Louis Langholtz

Câu trả lời:


10

Có ba lý do lề xung đột có thể tồn tại trong mô phỏng vật lý.

  1. Như bạn đã đề xuất, lề va chạm cung cấp cho động cơ vật lý một số chỗ bị lỗi trong việc phát hiện các liên hệ và giải quyết các liên hệ, trước khi thâm nhập thực tế. Điều này giúp cho sự xuất hiện của chủ nghĩa hiện thực khi các vật thể không nhìn rõ trên mặt đất, v.v ... Có những sắc thái ở đây để tính ngưỡng khi các ràng buộc tiếp xúc áp dụng ổn định Baumgarte trong quá trình giải quyết để giúp các cơ thể tách biệt.

  2. Như DMGregory lưu ý, lề va chạm có thể được thêm vào các mặt phẳng hoặc hình tam giác để cung cấp độ dày tùy ý cho các nguyên thủy mỏng về mặt toán học, biến chúng thành một khối.

  3. Có lẽ quan trọng hơn là nhiều công cụ phát hiện va chạm sử dụng thuật toán Gilbert, Johnson Johnson Keerthi (GJK) để thực hiện phát hiện va chạm lồi lồi. Thuật toán này hiệu quả khi thực hiện phát hiện va chạm giữa các cặp rời nhau - ngay cả khi chúng rất gần nhau. Thời điểm hai hình dạng lồi thực sự trùng nhau, chi phí của thuật toán GJK tăng lên đáng kể. Hơn nữa, để tạo một điểm liên lạc hiệu quả, Thuật toán mở rộng Polytope (EPA) phải được chạy, điều này thậm chí còn tốn kém hơn. Kết quả là nhiều động cơ vật lý (Havok, Bullet) tạo ra một lớp vỏ bao quanh thân lồi, thường được đặt tên là một cái gì đó như lề va chạm hoặc vỏ lồi .

Erwin Coumans, tác giả của câu trả lời một số câu hỏi ở đây với một cái nhìn tổng quan dưới đây:

GJK không tính toán độ sâu thâm nhập theo mặc định. Bạn có thể thêm một lề cho các hình dạng va chạm, cho phép bạn sử dụng GJK để tính toán độ sâu thâm nhập nông (không sâu hơn các lề được thêm vào của 2 đối tượng liên quan). Đối với hình cầu, bạn có thể sử dụng bán kính đầy đủ làm lề và sử dụng điểm dưới dạng hình. Miễn là không có sự chồng chéo (không có lề) khi GJK chấm dứt, bộ giải đơn giản (johnson hoặc 'hình học / voronoi' có thể được sử dụng làm điểm tiếp xúc trong không gian thế giới. Để thâm nhập sâu hơn, hãy sử dụng EPA (mở rộng thuật toán polytope) hoặc lấy mẫu độ sâu dồn nén theo nhiều hướng, sử dụng ánh xạ hỗ trợ.


2
Thêm vào đó, tôi cũng đã nghe nói về việc thêm một lề cho các thử nghiệm va chạm / giao nhau với các mặt phẳng / hình tam giác mà không có thông tin bên trong / bên ngoài, trong đó nếu không có lề thì khối lượng quan tâm sẽ vô cùng mỏng. Do các giới hạn của độ chính xác trong các số điểm cố định hoặc dấu phẩy động, điểm có thể biểu thị gần nhất trên quỹ đạo có thể không thực sự nằm "trên" bề mặt, ngay cả khi một giải pháp chính xác tồn tại cho các số thực có độ chính xác vô hạn. Thêm một lề trong trường hợp này giúp tránh âm bản giả do lỗi làm tròn bằng cách làm dày âm lượng (tương tự điểm 1, nhưng vì một lý do khác)
DMGregory

@DMGregory Cảm ơn, tôi đã cập nhật câu trả lời để bao gồm điểm hữu ích đó.
Steven
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.