Có một động cơ vật lý 2d có thể mô hình hóa chất lỏng và khí? [đóng cửa]


20

Tại thời điểm này, nền tảng và ngôn ngữ lập trình không thành vấn đề, tôi chỉ muốn biết liệu có thứ gì đó tồn tại cho việc này không. Bất kỳ trợ giúp được đánh giá cao.


Tôi đã thực hiện một động cơ chất lỏng 2d tùy chỉnh. Tôi đã có thể lấy một ví dụ hoạt động bằng cách sử dụng bài báo này về chất lỏng nhớtmã từ Flui ° D ° emo làm mẫu. Tuy nhiên, chất lỏng không ổn định như tôi muốn và mã có thể sử dụng nhiều tình yêu tối ưu hóa (xử lý đa lõi, thân thiện với bộ đệm, v.v.). Điều tôi muốn là một thư viện đã thực hiện tất cả những điều đó, vì vậy tôi chỉ phải tích hợp nó với Box2d và trò chơi của tôi.
deft_code

Câu trả lời:


8

Nhìn vào những gì Q-Games đã sử dụng cho Pixeljunk Shooter. Đây là một trò chơi 2d với vật lý chất lỏng khá liên quan. Tôi không chắc họ đã sử dụng một công cụ vật lý cây nhà lá vườn hay vật trung gian, nhưng thông tin có lẽ ở đâu đó.


8
Họ đã sử dụng một công cụ nhà, nhưng đã bao gồm các kỹ thuật có thể được áp dụng bằng bất kỳ công cụ vật lý nào với một số mã tùy chỉnh. Họ thực sự đã có một cuộc nói chuyện rất nhiều thông tin về động lực học chất lỏng của họ tại GDC (slide tại đây: gdcvault.com/play/1012447/Go-With-the-Flow-Fluid )
ghost

6

Chà, tôi không nhìn vào điều này, nhưng tôi biết một thực tế là hầu hết mọi động cơ vật lý đều có thể mô phỏng ý tưởng. Box2D, v.v.

Về cơ bản có các hạt nảy xung quanh, ngoài bề mặt và nhau (nhanh hơn cho khí) nhưng cũng tạo cho chúng một lực hấp dẫn không đổi như hiệu ứng (tất cả các chất lỏng đều có cùng, nhưng một số loại khí bạn có thể muốn tăng chậm).

Nếu bạn liên kết các hạt bên ngoài, bạn sẽ có được hình dạng đa giác đại diện cho khối lượng

HOẶC LÀ

nếu bạn chỉ đơn giản vẽ một pixel hoặc đồ họa hạt trên mỗi hạt, bạn có thể đạt được hiệu ứng đám mây cho khối lượng thay thế.


4
Câu trả lời này không phù hợp với các trò chơi thời gian thực ở kích thước thực tế.
Tấn côngHobo

3
Tôi không chắc tại sao bạn lại nói như vậy, vì động lực học chất lỏng thường được mô hình hóa thành các hạt. Ví dụ: xem các video công nghệ nvidia về các hạt chất lỏng trên youtube, chương trình Algodoo (trước đây gọi là Phun) hoặc trò chuyện Q-Games đã nói về trò chơi PixelJunk Shooter của họ (slide tại gdcvault.com/play/1012447/Go-With-the- Dòng chảy chất lỏng ). Trong trường hợp sau, Q-Games cho thấy cách họ xây dựng một đa giác ra khỏi bộ sưu tập các hạt. Tôi nghĩ rằng điều này xác minh rằng câu trả lời này khá hợp lệ cho việc triển khai IMHO theo thời gian thực.
ma

WOWOW tại sao các downvote? Tôi không hoành hành, chỉ muốn biết tại sao. Đó là một kỹ thuật thực tế và được sử dụng.
Joel

"Các hạt nảy xung quanh, ngoài bề mặt và nhau (nhanh hơn cho khí)" nghe có vẻ như bạn đang mô tả chất lỏng ở cấp độ phân tử, và trong khi cách tiếp cận ngây thơ có thể hoạt động với mô phỏng nướng, nó không hoạt động tốt trong các trò chơi thời gian thực. Các hạt vẫn ổn vì loại mô phỏng dài là chính xác, "nảy nảy" có vẻ như nó sẽ hoạt động với các hạt vĩ mô. Bạn cũng đã trình bày sai về cách mô phỏng mật độ.
Tấn côngHobo

Các hạt hoạt động đủ tốt en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics . Đã được sử dụng trong bản demo mới nhất của FLT: như được mô tả trong directtovideo.wordpress.com/2011/05/03/numb-res Việc triển khai này có thể hơi nặng, nhưng các phép tính xấp xỉ đơn giản hơn như trong cuộc nói chuyện GDC của Pixel Junk Shooter sẽ hoạt động tốt.
khoảng trống

6

Thư viện duy nhất tôi có thể đưa ra với các giao dịch cụ thể về chất lỏng là Fluidic . Nó là khá alpha và chỉ có một bản phát hành, mặc dù. Thư viện vật lý Bullet hỗ trợ 'thủy động lực học hạt mịn', một kỹ thuật được sử dụng để mô hình hóa chất lỏng. Mặc dù thư viện hướng đến 3D, bạn có thể áp dụng các ràng buộc cho một trục để làm cho nó hoạt động ở dạng 2D.

Lời khuyên của tôi là, như tôi đã đề cập trong một số nhận xét về các câu trả lời khác, sử dụng một công cụ vật lý tiêu chuẩn như Box2D hoặc Chipmunk và sử dụng một số vòng tròn để mô hình hóa nước (với trọng lực) hoặc khí (không có trọng lực) và kết hợp chúng lại với nhau vào một cơ thể nước hoặc khí. Bạn có thể áp dụng một số ràng buộc trên các cơ thể riêng lẻ để làm cho chúng 'co cụm' lại với nhau để bạn có thể mô phỏng độ nhớt. Hãy xem video này để xem các cơ quan riêng lẻ (được mô phỏng như hình vuông trong video) phối hợp với nhau như thế nào. Lưu ý, tuy nhiên, kỹ thuật được sử dụng trong video này không giống như được đề cập trong đoạn này. Bạn có thể sử dụng video để cảm nhận về cách các vòng tròn tương tác với nhau và cố gắng bắt chước điều này với các ràng buộc có trong thư viện vật lý được sử dụng.

Phần thú vị đến khi bạn muốn kết hợp nhiều vòng tròn vào cơ thể của nước. Giải pháp đơn giản nhất mà tôi có thể đưa ra được bản vẽ từng vòng tròn như một Metaball để họ xuất hiện như một phần của cơ thể lớn hơn. Bạn có thể tìm thấy toán học và một số mã ví dụ đằng sau các cơ quan này ở đây .


Video bạn liên kết đến đang sử dụng nhiều hơn chỉ là nhiều vòng tròn. Ông sử dụng một kỹ thuật được gọi là SPH. Các cổng ngọn lửa của Flui ° D ° emo sử dụng Box2D để tìm va chạm và áp dụng các lực lượng nhưng phương pháp sử dụng SPH tính toán lực lượng không cơ quan cứng nhắc Box2D của.
deft_code

Bạn hoàn toàn chính xác trong vấn đề đó. Video có ý nghĩa minh họa thay vì ví dụ thực hiện. Cảm ơn bạn đã đề cập đến sai lầm của tôi và tôi đã cập nhật câu trả lời để ngăn ngừa những hiểu lầm tiếp theo.
ma

3

Đã vài năm kể từ khi câu hỏi này được đăng, nhưng tôi đã xem qua nó trong khi tìm kiếm, vì vậy tôi nghĩ rằng tôi sẽ cập nhật nó.

Google đã phát hành LiquidFun (mã nguồn mở) cho hệ thống Box2D. Nó có một số hạn chế, nhưng đó là một cách nhanh chóng để bắt đầu với các hạt chất lỏng, cát, vv với hiệu suất khá tốt.

https://github.com/google/l Liquidfun

PixelJunk có một cách tiếp cận tuyệt vời, nhưng đó là một thư viện riêng. Họ đã chia sẻ một mức độ chi tiết đáng kinh ngạc trong bài nói chuyện của họ tại GCD 2010.

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.