Động cơ vật lý mềm 2D?


9

Xin chào, gần đây tôi đã học được thư viện đồ họa SFML và muốn sử dụng hoặc tạo một hệ thống vật lý 2D cơ thể không cứng nhắc để sử dụng với nó. Tôi có ba câu hỏi:

Định nghĩa của cơ thể cứng nhắc trong Box2d là

Một khối vật chất mạnh đến mức khoảng cách giữa hai bit vật chất trên khối này là hoàn toàn không đổi.

Và đây chính xác là những gì tôi không muốn vì tôi muốn tạo ra các cơ thể đàn hồi, biến dạng, dễ gãy và kết nối lại. 1. Có bất kỳ động cơ vật lý 2D đơn giản nào, nhưng với những loại đặc điểm ngoài kia không? tốt nhất là miễn phí hoặc mã nguồn mở?

2. Nếu không tôi có thể sử dụng box2d và làm việc với nó để tạo ra nó ngay cả khi nó dựa trên cơ thể cứng nhắc?

3. Cuối cùng, nếu có một công cụ vật lý đơn giản như thế này, tôi có nên tiếp tục với việc tạo ra một công cụ mới không, chỉ đơn giản là để trải nghiệm và nâng cao kiến ​​thức toán học vật lý?Tôi cảm thấy như nó sẽ giúp ích nếu tôi muốn sửa đổi mã của một công cụ hiện có hoặc tạo ra một trò chơi với vật lý thực sự độc đáo.

Cảm ơn!


1
Có công cụ này được gọi là JelloPhysics (C #), nhưng trang web dường như ngừng hoạt động. Có một video ở đây: youtube.com/watch?v=SvqY_pgA6DU
bummzack

Câu trả lời:


6

Bạn có thể sử dụng các hệ thống cơ thể cứng nhắc để tạo ra cơ thể mềm mại và động lực học chất lỏng. Lý do vật lý đằng sau nó? Vâng, về cơ bản, các nguyên tử là những cơ thể nhỏ cứng nhắc. Tất nhiên điều này không hoàn toàn đúng, nhưng để đơn giản, bạn có thể xem chúng như vậy. Và cơ thể mềm mại rõ ràng được làm từ các nguyên tử.

Vậy, làm thế nào để bạn tạo ra "cơ thể mềm" bằng cách sử dụng một công cụ cơ thể cứng nhắc như Box2D?

Kỹ thuật thiết yếu là liên kết các điểm trong cơ thể bạn với nhau bằng các khớp. Ví dụ: nếu bạn kết nối các đầu của một danh sách các đường với nhau bằng các khoảng cách (có nghĩa là khoảng cách giữa hai khớp phải không đổi), nó sẽ hoạt động gần giống như một mảnh vải.

Nhưng đó chỉ là một mô tả sơ bộ. Rất nhiều "công việc cơ bản" với Box2D đã được thực hiện bởi ewjordan, một trong những nhà phát triển cổng Java của Box2D. Đây là một điểm khởi đầu tốt: http://www.box2d.org/forum/viewtopic.php?f=8&t=1978


Một hỗn hợp của lò xo căng / nén là cần thiết để giữ "hình dạng" của cơ thể mềm, cũng như tính toán âm lượng để giữ cho nó toàn bộ.
Jonathan Connell

Có, nhưng tất cả những điều đó thực sự được thực hiện thông qua các khớp, nếu chúng ta đang nói về Box2D. Chắc chắn anh ta sẽ phải tự thay đổi hành vi của họ, nhưng đó là nơi anh ta phải bắt đầu. Ví dụ, đối với các hiệu ứng âm lượng không đổi trong các đốm giống như Gish, JBox2D có ConstantVolumeJoint.
TravisG

Vâng, tôi không quen thuộc với Box2D, tôi chỉ biết một số đồng nghiệp đã sử dụng PhysX để mô phỏng bong bóng ^^
Jonathan Connell

1

Thuật ngữ bạn đang tìm kiếm là vật lý cơ thể mềm.

Wikipedia có một danh sách hay. Tất cả đều là 3D AFAICS, nhưng nên tốt.

Ngoài ra kiểm tra câu hỏi SO này .

Một cuốn sách tuyệt vời (cơ thể cứng nhắc, nhưng tất cả các toán học và vật lý đều có ở đó, nó cũng là 3D, nhưng không quan trọng để chuyển sang 2D) là Phát triển Công cụ Vật lý Trò chơi . Nó thực hiện một hệ thống dựa trên hạt trước khi di chuyển lên các vật thể cứng và va chạm.


1

Một cách đơn giản để mô phỏng các cơ thể mềm mại là kết nối các cơ thể nhỏ cứng với các khớp đàn hồi. Sau đó, phần khó khăn là tinh chỉnh các tham số của mô hình của bạn và ánh xạ kết cấu vào mô hình bên dưới.

Bài đăng trên blog sau đây cung cấp cách triển khai một quả bóng biến dạng với công cụ cocos2d: http://2sa-studio.blogspot.com/2014/05/soft-body-with-cocos2d-v3.html


ghi có vào bản vẽ gỡ lỗi cocos2d ;-)
sd.us
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.