Lời khuyên cần thiết cho một động cơ vật lý


12

Gần đây tôi đã bắt đầu một dự án, xây dựng một công cụ vật lý. Tôi đã hy vọng bạn có thể cho tôi một số lời khuyên liên quan đến một số tài liệu và / hoặc công nghệ tốt nhất cho việc này.

Trước hết, tôi đã thấy rằng Game-Vật lý-Phát triển động cơ rất được khuyến khích cho nhiệm vụ trong tay, và tôi tự hỏi liệu bạn có thể cho tôi ý kiến ​​thứ hai không. Tôi có hiểu không? Ngoài ra, trong khi duyệt Amazon, tôi đã tình cờ tìm thấy Game Engine Architecture và vì tôi muốn xây dựng công cụ vật lý của mình cho các trò chơi, tôi nghĩ rằng đây có thể là một ứng dụng đọc tốt.

Thứ hai, tôi biết rằng vật lý mô phỏng rất chuyên sâu về tính toán nên tôi muốn sử dụng CUDA hoặc OpenCL. Bây giờ tôi đang nghiêng về OpenCL, vì nó sẽ hoạt động trên cả chipset NVIDIA và ATI. Các bạn đề nghị gì?

PS: Tôi sẽ thực hiện điều này trong C ++ trên Linux.

Câu trả lời:


10

Đây là cách tôi học để viết một công cụ vật lý, tất cả đều miễn phí và rất khuyến khích:

  1. Các bài viết của David Baraff cụ thể Giới thiệu về mô hình hóa dựa trên vật lý

  2. Mô phỏng động lực học dựa trên hệ thống cơ thể cứng nhắc của Brian Vincent Mirtich

  3. Kacic / Bullock "Một hệ thống động lực thực tế" SIGRAPH 2003, EDIT: Đã thêm liên kết .

Những bài báo đã được đề cập trong một bài viết tuyệt vời khác của Nick Porcino (LucasArts) trong một trong những cuốn sách đá quý Gems 4 "Viết một công cụ vật lý dựa trên Verlet". Nó không miễn phí, nhưng giá trị của nó từng xu.

Ngoài ra, hãy xem các động cơ khác, đây là nguồn cho Bullet Vật lý .

Về triển khai CUDA / OpenCL: làm cho nó chạy trên CPU trước, đủ phức tạp :)

Hãy lưu ý rằng rất có thể bạn sẽ vứt bỏ động cơ của mình sau một thời gian, vì quá khó để tạo ra một động cơ vật lý tích hợp tốt và ổn định với một danh sách tính năng cạnh tranh của riêng bạn, tuy nhiên đó là một trải nghiệm học tập tuyệt vời!

Ngay khi bạn có một công cụ đơn giản đang chạy, lời khuyên của tôi là: tạo các kịch bản thử nghiệm trong đó bạn so sánh kết quả của công cụ của mình với kết quả của một công cụ khác. Điều này giúp tôi tìm thấy rất nhiều lỗi và nó sẽ cải thiện giao diện của bạn; một cái gì đó giống như tạo ra một lực tương tự trong 1 giây ở cùng một cơ thể trong cả hai động cơ.

Cuối cùng nhưng không kém phần quan trọng: Bỏ qua các va chạm khi bạn bắt đầu, trước tiên hãy tập trung vào một mô phỏng ổn định.


Trông giống như một câu trả lời tuyệt vời, nhưng bạn có thể muốn định dạng nó một chút.
Vịt Cộng sản

Cảm ơn phản hồi. Tôi đồng ý rằng tôi sẽ không thể tạo ra một công cụ cạnh tranh, nhưng mục tiêu chính của tôi với điều này là phần học tập.
adivasile

1
@ Vịt Cộng sản cảm ơn vì gợi ý, tôi mới đến bên và tôi thừa nhận tôi quá lười để kiểm tra các tùy chọn định dạng, đã sửa nó :)
Maik Semder

1
Đã thêm liên kết vào giấy của Kacic, hy vọng đó là đúng :)
Ray Dey

5

Maik đã đúng, các bài báo của Baraff là một khởi đầu tuyệt vời, nhưng đừng quên Chris Heckers viết về động lực học cơ thể cứng nhắc: http://chrishecker.com/Rigid_Body_DOUNDics !

Ngoài ra lời khuyên của anh ấy về "[..] bạn sẽ ném động cơ của bạn đi" là hoàn toàn đúng. Nhưng bạn sẽ học được rất nhiều!

Về phần CUDA / OpenCL trong câu hỏi của bạn: Nếu bạn biết CUDA thì việc chuyển sang OpenCL trở nên rất dễ dàng. Trước tiên tôi khuyên bạn nên học CUDA, vì có rất nhiều hướng dẫn tốt, mã ví dụ và thư viện tính toán ngoài kia. Ví dụ:

Nhưng hãy lưu ý: Bắt đầu với CUDA thì dễ, bắt đầu với mô phỏng vật lý thì khó hơn một chút, nhưng kết hợp cả hai là một thử thách khá lớn!


bạn hoàn toàn đúng, đó là một tài nguyên tuyệt vời khác phải được đề cập, +1 cho bài viết của Chris Hecker
Maik Semder

4

Tôi cũng bắt đầu với Baraff nhưng bây giờ nó hơi cũ. Những gì bạn cần là người giải quyết lặp và imo giấy tốt nhất trên đó là Dyanmics lặp đi lặp lại của Erin Catto . Bạn có tất cả những gì bạn cần trong đó để thực hiện động cơ vật lý của bạn. Bạn có thể đào sâu một chút vào luận án tiến sĩ của Erleben nếu bạn cần thêm chi tiết (như khớp và nhiều công cụ toán học hơn), nhưng đó là khá nhiều. Tôi ước rằng tôi đã tìm thấy nó từ đầu - đi qua diễn đàn Bullet một chút, có rất nhiều thông tin trong đó (có thể là quá nhiều).

Đối với những cuốn sách, nhiều cuốn sách đáng thất vọng, nhưng tôi khuyên bạn nên sử dụng Vật lý dựa trên Hoạt hình của Kenny Erleben hoặc Trò chơi Vật lý Ngọc trai.

Không biết nhiều CUDA / OpenCL (mặc dù tôi luôn muốn làm điều đó) nhưng bạn chắc chắn nên kiểm tra công việc của Takahiro Harada.

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.