2012-12-09 34 views
5

Tôi quan tâm đến việc cố gắng tạo ra các chất lỏng thực tế (nước), cho trò chơi 2D. Trò chơi này tương tự như Terraria. Tôi đã nghe nói về cách bạn có thể tát một loạt các hạt va chạm trên hiện trường và tạo ra nó và thì đấy, nước diễn xuất thực tế.Tilemap Vật lý chất lỏng thực tế 2D

Terraria sử dụng nước dựa trên gạch, mà tôi không phải là người hâm mộ của .. Tôi muốn một cái gì đó nâng cao hơn.

Tôi đã nghĩ đến việc sử dụng vật lý 3D đạn (box2d có giới hạn tôi sẽ nhấn). Đối với các hiệu ứng hạt không va chạm, tôi đang nghĩ đến việc sử dụng một thứ gì đó như SPARK, vì tôi nghĩ điều đó sẽ mang lại cho tôi tốt nhất của cả hai thế giới.

Vấn đề tôi đang suy nghĩ, là mỗi khối là 16x16, do đó, trên một cảnh 1600x900, có khoảng 5 nghìn ô.

Vì vậy, tôi cần phải nói với công cụ vật lý rằng các ô này là có thể va chạm được. Tất nhiên, có những khoảng trống được coi là không thể va chạm được.

Có ai có ý tưởng về điều này không? Ngôn ngữ là C++, tôi nghi ngờ đó là có liên quan mặc dù.

CHỈNH SỬA: tôi nghĩ mình sẽ phải đi vào hang động và sử dụng nước dựa trên lưới. Tôi cho rằng, trong hạt nhìn lại chỉ làm cho mọi thứ trở nên khó khăn hơn nhưng đối với những gì đạt được?

Trả lời

1

Câu hỏi của bạn là về chất lỏng lát gạch, nhưng dường như bạn thực sự đang hỏi về phương pháp tiếp cận dựa trên hạt.

Nếu đúng như vậy, những gì bạn đang tìm kiếm là "Smoothed Particle Hydrodynamics", hoặc SPH, là một kỹ thuật rất phổ biến cho mô phỏng chất lỏng 2D và 3D trong các tình huống thời gian thực. Có, về cơ bản nó chỉ là một hệ hạt, với mỗi hạt phản ứng với các lực trong môi trường của bạn (trọng lực, va chạm, vv) một cách hợp lý (toán học ổn định), kết hợp với một ràng buộc rằng chúng phải ở một khoảng cách nhất định. ngoài để chất lỏng không thể nén được. Bạn có thể làm cho các hạt như điểm, nếu bạn có đủ, hoặc bạn có thể sử dụng chúng như là một nguồn để tạo ra một bề mặt (ví dụ bằng cách sử dụng hình khối, mặc dù trong 2D tôi sẽ không lo lắng về điều đó) .

http://en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics

Nó có lợi thế là tương đối dễ dàng để mã, và thực sự để tăng tốc trên GPU. Thật vậy, tôi nghĩ rằng họ có thể là một cách tiếp cận tốt hơn so với thử một số cách tiếp cận dựa trên gạch, và bạn nhận được một số kết quả thú vị hơn, chẳng hạn như phun đá lên, sóng đá chống lại các cạnh của đối tượng, vv. quá khó để có được một cái gì đó làm hài lòng làm việc, tôi muốn cho nó một đi.

+0

Hmm .. Tôi đoán bạn đang làm cho tôi quay lại với điều này, hehe. Bạn có thể xây dựng được không? Bạn đã không cho tôi ý tưởng làm thế nào để làm cho các hạt va chạm với sơ đồ. Ngoài ra, những loại thư viện sẽ có điều này? Không đời nào tôi có thể tự mình thực hiện bài toán này, nhất là khi những người khác có thể làm tốt hơn. – user148459

+0

Ngoài ra, lựa chọn thay thế cho SPH là gì? Hãy nhớ rằng, đây là một trò chơi 2D, không phải là một mô phỏng hạt, do đó, SPH cảm thấy như overkill ... – user148459

+0

Nó có lẽ là một trong những cách tiếp cận đơn giản nhất nếu bạn muốn chất lỏng thực tế. Nếu bạn nghĩ rằng đó là quá mức cần thiết, có thể không có nhiều lựa chọn thực sự giống như chất lỏng. – JasonD

Các vấn đề liên quan