Những lợi thế của người giải quyết dựa trên ràng buộc là gì?


7

Tôi là một lập trình viên khá thành thạo và tôi không giỏi môn toán. Tôi đã làm việc trên các mô phỏng vật lý trò chơi trong khoảng 2 năm nay.

Trong một số sách và hướng dẫn mà tôi đã đọc, họ giới thiệu các ràng buộc. Họ tính toán ma trận Jacobian và sử dụng hằng số Baumgarte và tất cả những thứ phức tạp đó.

Ngay cả khi tôi cố gắng thực sự và làm theo logic của họ, tôi luôn cảm thấy lạc lõng. Không phải là toán học hay thuật toán của kỹ thuật quá phức tạp. Nó chỉ là khi những thứ như ma trận Jacobian vào hình ảnh, nó không còn trực quan nữa.

Theo kinh nghiệm của tôi, áp dụng các xung đơn giản để giải quyết va chạm đã cho kết quả khả quan.

Vì vậy, mối quan tâm của tôi là: Tôi đang mất gì khi không sử dụng các ràng buộc? Các tình huống có thể được hưởng lợi từ việc có các ràng buộc là gì? Có thể một số đối tượng phức tạp với các khớp dưới động học nghịch đảo chẳng hạn?

Ví dụ: http://twvideo01.ubm-us.net/o1/vault/gdc09/slides/04-GDC09_Catto_Erin_Solver.pdfhttp://www.bONSphysics.com/ftp/pub/test/physics/auge/IterativeD .pdf

Câu trả lời:


1

Nếu bạn đọc được ghi chú của Catto rằng bạn đã đăng liên kết tới nơi anh ấy nói về việc sử dụng một bộ giải lặp hoạt động dựa trên các xung, thì thực tế có lẽ không khác nhiều so với những gì bạn có thể làm, như bạn nói "áp dụng đơn giản xung động để giải quyết va chạm ". Mặc dù jacobian nghe có vẻ là một ý tưởng toán học phức tạp, nhưng thực tế nó chỉ là một loạt các vectơ mà 1) cho phép bạn đo xem có ràng buộc nào được đáp ứng hay không, và 2) cung cấp cho bạn các hướng hiệu quả nhất để áp dụng các xung để giữ cho ràng buộc được thỏa mãn . Nếu bạn đã áp dụng các xung để thỏa mãn một số ràng buộc thì có lẽ bạn đang làm một cái gì đó tương tự hoặc thậm chí tương đương mà không có ý thức về nó.

Khi xử lý các vật thể cứng 3 chiều và các ràng buộc đa chiều như bản lề, toán jacobian cung cấp một khung để biểu thị các ràng buộc về vận tốc tuyến tính và góc và xuất phát cả các xung tuyến tính và góc để giải các ràng buộc. Nó cũng cung cấp một cách mà bạn có thể ném tất cả các ràng buộc lại với nhau (ví dụ: Đối với một bộ sưu tập các cơ thể có nhiều ràng buộc) và giải quyết chúng đồng thời. Nhưng trong thực tế, và đặc biệt là trong các trò chơi, chúng ta có xu hướng sử dụng các bộ giải lặp ít nhiều là một cách ưa thích để thực hiện một chút thôi thúc ở đây, và một chút ở đó, và cứ thế cho đến khi mọi thứ đều ổn.

Khi bạn nói rằng bạn "áp dụng các xung đơn giản để giải quyết va chạm" có lẽ điều đó có nghĩa là bạn đang hạn chế vị trí nhưng không hạn chế vận tốc? Cách tiếp cận như vậy có thể hoạt động trong một số bối cảnh, nhưng nó ngụ ý rằng bạn chỉ đang áp dụng các xung khi các đối tượng đang thâm nhập? Sẽ thế nào khi một vật thể nằm trên một bề mặt, dưới tác động của trọng lực? Một bộ giải ràng buộc hoạt động trên một ràng buộc vận tốc hoặc gia tốc sẽ cho bạn biết các lực thích hợp và chính xác tại các điểm tiếp xúc cho phép bạn thực hiện ma sát thích hợp và như vậy, trong khi đó, chỉ ở mức độ vị trí sẽ dẫn đến các lực ràng buộc dao động và nhiều hơn nữa không ổn định dưới những thay đổi về tốc độ khung hình. Ví dụ, nếu bạn có một ràng buộc vị trí trong đó xung lực tỷ lệ thuận với mức độ thâm nhập thì trạng thái cân bằng chỉ được đáp ứng tại một điểm cụ thể nơi trọng lực và xung lực triệt tiêu lẫn nhau. Vì vậy, đó có thể là một sự khác biệt quan trọng khác giữa cách tiếp cận của bạn và cách tiếp cận dựa trên ràng buộc, nhưng thật khó để biết nếu không biết thuật toán và miền vấn đề của bạn (các hạt 2d trong mô phỏng thiên thạch trong không gian? Mô phỏng 3d cơ thể người trong mô phỏng tai nạn xe hơi ?)


4

Ví dụ cổ điển cho một hệ thống bị ràng buộc là một con lắc. Giả sử rằng dây của con lắc bị căng, vị trí của bob của con lắc bị giới hạn bởi một vòng tròn. Bạn có thể mô phỏng hệ thống này bằng cách sử dụng các định luật của Newton, tức là, để mô phỏng lực hấp dẫn và lực tác động của sợi dây lên bob. Tuy nhiên, vấn đề với cách tiếp cận này là mô phỏng phức tạp hơn và bob có thể rời khỏi vòng tròn, do vòng lỗi trong quá trình mô phỏng.

Cả hai vấn đề biến mất khi bạn sử dụng một hệ thống bị hạn chế. Bạn không phải đối phó với các lực hạn chế và mô phỏng của bạn được đảm bảo luôn hoàn thành các ràng buộc.


2

Ngoài các câu trả lời hay khác ở trên, việc sử dụng phổ biến các ràng buộc cho sim vật lý là bảo tồn năng lượng. Như đã đề cập về ràng buộc đối với chuyển động tròn của con lắc, có thể lỗi làm tròn có thể dẫn đến một bộ giải khỏi cấu hình đúng đã biết của hệ thống. Tương tự, nếu bạn biết năng lượng nên được bảo toàn, ràng buộc đó có thể đảm bảo rằng bạn không vô tình bắt đầu nhận được năng lượng ma thuật xuất hiện từ hư không. Động học nghịch đảo là một ví dụ tuyệt vời.

Điều đó nói rằng, nó thực sự phụ thuộc vào trường hợp sử dụng của bạn, mà bạn chưa xây dựng. Theo kinh nghiệm của tôi, đó thường không phải là vấn đề trừ khi bạn có các hệ thống bị điều hòa cực kỳ nghiêm trọng làm trầm trọng thêm các lỗi nhỏ theo thời gian và đưa chúng trở lại để tạo ra các lỗi lớn hơn (nghĩ về hiệu ứng cánh bướm của lý thuyết hỗn loạn). Tôi nghi ngờ cơ học trò chơi trung bình của bạn bận tâm với người giải quyết dựa trên ràng buộc trừ khi họ cần độ chính xác cao của các tương tác động học chi tiết. Các bộ giải này phức tạp hơn nhiều để viết và thiết lập chính xác, như bạn có thể thấy từ tất cả các phép toán.

Điểm mấu chốt: trừ khi bạn nghi ngờ sự điên rồ ở cấp độ QWOP có thể xảy ra từ việc thiết lập hệ thống cơ khí của bạn, chỉ cần thêm đủ giảm xóc và kích thước bước đủ nhỏ vào hệ thống của bạn và có thể bạn sẽ ổn với người giải quyết thông thường.

Phần thưởng: Một bản hack giá rẻ nếu bạn lo ngại về sự ổn định về số trong trường hợp của mình nhưng không phải về độ chính xác khoa học (đây hoàn toàn là chơi game) là những sửa đổi nhỏ / bảo tồn có thể được thực hiện định kỳ theo cách không thể nhận thấy bằng mắt mà vẫn giữ được những điều trong kiểm tra nếu lỗi vượt qua một số dung sai. Hoặc thêm một số kiểm tra hacky vào tính toán lực lượng và đảm bảo rằng chúng không vượt qua một số ngưỡng cực đoan thông qua các phép chia bằng số gần bằng 0 (ví dụ: phát sinh từ độ chính xác kém trong phép trừ trong mẫu số).

Đối với bối cảnh, tôi có bằng tiến sĩ toán ứng dụng và đã phát triển gói giải / mô phỏng riêng cho các nhà khoa học.


Cảm ơn bạn rất nhiều vì câu trả lời tuyệt vời. Vâng, bạn đúng khi cho rằng tôi không quan tâm nhiều đến sự ổn định số và bảo tồn năng lượng.
tupcuhamdi

1

Tôi không phải là chuyên gia về chủ đề này, nhưng tôi đã đọc bài thuyết trình và bỏ qua bài báo.

Như Rittich đã nói, bạn có thể áp dụng các tính toán xung động của newtonian trên một hệ thống các con lắc, được ghép bởi các ràng buộc với nhau. Trong trường hợp này, bạn sẽ cần tính toán lực tác dụng lên con lắc bên trong, sau đó là con lắc bên ngoài và các lực giữa chúng cách nhau. Vấn đề này chỉ trở nên cứng hơn, càng nhiều cơ thể có thể tương tác với nhau, ví dụ như một con lắc nguyên tố n.

Với bộ giải dựa trên ràng buộc, bạn có được thông tin cho một cơ thể bao gồm một số ràng buộc, có thể được giải quyết thông qua các phép tính số. Điều đó có nghĩa là, thay vì tính toán vị trí chính xác mỗi khi một lực tác động lên các phần tử, bạn có thể sử dụng các phép tính lặp để ước tính kết quả.

Âm thanh gần đúng có vấn đề, nhưng trong hầu hết các trường hợp, nó không đáng chú ý sau một vài bước lặp.

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.