Đề xuất động cơ vật lý có thể mô phỏng trò chơi bi-a chính xác? [đóng cửa]


13

Tôi đang làm một trò chơi bi-a như trò chơi. Trò chơi này đòi hỏi phải trả lại phản xạ chính xác (hoặc rất chính xác). Tôi đã thử Box2DBullet Vật lý , nhưng cả hai đều có vấn đề này.

Hình minh họa

Nếu có một bức tường trên đầu của hình ảnh này, đường màu đỏ được dự kiến ​​là một quả bóng thực sự trong một trò chơi bi-a. Nhưng các động cơ thường hiển thị khóa học màu xanh lá cây. Đặc biệt,

  1. Điều này xảy ra sau khi một quả bóng di chuyển chậm chạm vào tường.
  2. Đôi khi một quả bóng di chuyển nhanh chóng trở nên chậm hơn đột ngột.

Tôi đang tìm một công cụ vật lý có thể mô phỏng chính xác trò chơi bi-a càng nhiều càng tốt mà không gặp phải những vấn đề này. Tôi có thể nhận được một số khuyến nghị? Bây giờ tôi đang đào Newton Game Dynamics , nhưng tôi không chắc động cơ sẽ hiển thị những gì tôi muốn. Tôi đang xem xét công cụ PhysX như một thử nghiệm tiếp theo và phải tự tạo ra nếu không có gì hoạt động. Nhưng rõ ràng là nó sẽ mất nhiều thời gian, vì vậy tôi ước tôi sẽ không làm điều đó. Tôi sẽ rất cảm kích nếu bạn tiết kiệm thời gian của tôi. Và tất nhiên, giải pháp với Box2D / Bullet Vật lý cũng được hoan nghênh.

Tôi đang làm việc với C / C ++ / Objective + C trên iOS.


Tôi đính kèm cấu hình của mình với Box2D.

Tường

  • hình dạng hộp tĩnh
  • giảm xóc tuyến tính / góc = 0,1
  • bồi thường = 1,0
  • ma sát = 100
  • mật độ = 10
  • viên đạn = sai
  • xoay cố định = sai
  • quy mô quán tính = 1.0

Những quả bóng

  • hình cầu năng động
  • giảm xóc tuyến tính / góc = 0,1
  • bồi thường = 1,0
  • ma sát = 100
  • mật độ = 20
  • viên đạn = đúng
  • xoay cố định = sai
  • quy mô quán tính = 1.0

3
nhiều khả năng là động cơ không sai, nhưng bạn chưa đặt thuộc tính hoặc làm sai bằng cách nào đó.
Vịt Cộng sản


Tôi đã thử nghiệm với mật độ 1 và ma sát 0,0 ~ 0,1, nó tiếp tục bám.
Eonil

Câu trả lời:


8

Một số giải pháp.

  1. Đối với Box2D, đặt b2_velocityThresholdtrong b2Settings.htệp. Trong trường hợp của tôi, tôi đặt nó 0.0fvà nó hoạt động! Khối lượng, ma sát, giảm xóc KHÔNG phải là vấn đề. Kiểm tra chủ đề thảo luận này để biết thêm chi tiết. http://www.box2d.org/forum/viewtopic.php?f=3&t=6906&p=30782#p30782

  2. Sử dụng động cơ vật lý khác. Newton Game Dynamics được cấu hình thực hiện chính xác điều này theo mặc định. Tuy nhiên, sử dụng động lực học Newton trong iOS là có thể nhưng nó hơi khó hơn những thứ khác. Tôi đã sử dụng vài ngày để cấu hình nó cho iOS.

Tôi cũng đang hỏi trên diễn đàn BulletPhysics. Tôi sẽ cập nhật điều này khi tôi có giải pháp.

-- (biên tập) --

Có một số thuộc tính ngưỡng trong Bullet, tuy nhiên tôi không thể tìm thấy chính xác điều tương tự b2_velocityThreshold.

Điều này có vẻ tương tự, nhưng không hoạt động tốt.

btRigidBody->setContactProcessingThreshold(0.0f)

6

Box2D sẽ làm những gì bạn muốn nhưng bạn phải đặt các hằng số phục hồi (nảy) cho các đồ đạc trên tường và bóng. Đối với một trò chơi bi-a, bạn có thể muốn bắt đầu với sự phục hồi hoàn hảo và độ ma sát cao nhưng giảm xóc tuyến tính và góc cạnh, và điều chỉnh từ đó.


Tôi đã thử nhiều cấu hình trong vài ngày, nhưng nó vẫn xảy ra. Tôi có thể lấy một ví dụ hay không ...?
Eonil

3
Mật độ và giá trị ma sát của bạn có vẻ rất lớn, đối với Box2D.

4

Động cơ vật lý có một ngưỡng nảy. Tôi không biết làm thế nào để làm điều đó trong một trong hai động cơ đó, nhưng ngưỡng được đặt quá cao sẽ khiến nó bỏ qua các tác động dưới một vận tốc nhất định. Hạ thấp ngưỡng nảy và nó sẽ nảy ở tốc độ thấp hơn.

Tôi biết bạn đã yêu cầu một công cụ vật lý khác nhau, nhưng tất cả các công cụ vật lý mà tôi biết đều sử dụng ngưỡng nảy để giữ cho các vật thể không bị xáo trộn khi chúng ngồi lên nhau. Vì vậy, đề xuất một động cơ vật lý tốt sẽ phản tác dụng vì bất kỳ động cơ vật lý tốt nào cũng sẽ có hiệu ứng này.


0

Tôi đã có vấn đề này và đối với tôi giải pháp là cung cấp sự phục hồi hoàn hảo.

Vì vậy, đối với tôi đó là sqrt 0,5 cho tất cả các đối tượng. Vì sqrt (r1 * r1 + r2 * r2) == 1 trong tình huống hoàn hảo.

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.