คำแนะนำเครื่องยนต์ฟิสิกส์ที่สามารถจำลองเกมพูลได้อย่างถูกต้อง? [ปิด]


13

ฉันทำเกมเหมือนเกมพูล เกมนี้ต้องการการสะท้อนกลับที่ถูกต้อง (หรือแม่นยำมาก) ฉันลองBox2DและBullet Physicsแต่พวกเขาทั้งคู่มีปัญหานี้

ภาพประกอบ

หากมีกำแพงอยู่ด้านบนของภาพนี้คาดว่าเส้นสีแดงจะเป็นลูกบอลจริงในเกมพูล แต่เครื่องยนต์มักจะแสดงเส้นทางสีเขียว โดยเฉพาะอย่างยิ่ง

  1. สิ่งนี้เกิดขึ้นหลังจากลูกบอลเคลื่อนที่ช้า ๆ ชนกับกำแพง
  2. บางครั้งลูกบอลที่เคลื่อนที่เร็วจะช้าลงในทันที

ฉันกำลังค้นหาเอ็นจิ้นฟิสิกส์ซึ่งสามารถจำลองเกมพูลได้อย่างถูกต้องมากที่สุดโดยไม่มีปัญหาเหล่านี้ ฉันขอคำแนะนำได้ไหม? ตอนนี้ฉันกำลังขุดNewton Game Dynamicsแต่ฉันไม่แน่ใจว่าเอ็นจิ้นจะแสดงสิ่งที่ฉันต้องการ ฉันกำลังพิจารณาPhysXเป็นรุ่นทดลองต่อไปและต้องทำด้วยตัวเองถ้าไม่มีอะไรทำงาน แต่เห็นได้ชัดว่ามันใช้เวลานานมากดังนั้นฉันหวังว่าฉันจะไม่ทำอย่างนั้น ฉันจะได้รับการชื่นชมมากถ้าคุณประหยัดเวลาของฉัน และแน่นอนว่าการแก้ปัญหาด้วย Box2D / Bullet Physics ก็ยินดีเช่นกัน

ฉันทำงานกับ C / C ++ / Objective + C บน iOS


ฉันแนบการกำหนดค่าของฉันกับ Box2D

กำแพง

  • รูปร่างกล่องแบบคงที่
  • เชิงเส้น / เชิงมุมทำให้หมาด ๆ = 0.1
  • การซ่อมแซม = 1.0
  • แรงเสียดทาน = 100
  • ความหนาแน่น = 10
  • bullet = เท็จ
  • หมุนคงที่ = เท็จ
  • ขนาดเฉื่อย = 1.0

ลูก

  • รูปร่างทรงกลมแบบไดนามิก
  • เชิงเส้น / เชิงมุมทำให้หมาด ๆ = 0.1
  • การซ่อมแซม = 1.0
  • แรงเสียดทาน = 100
  • ความหนาแน่น = 20
  • bullet = จริง
  • หมุนคงที่ = เท็จ
  • ขนาดเฉื่อย = 1.0

3
โอกาสที่เครื่องยนต์จะไม่ผิด แต่คุณไม่ได้ตั้งค่าคุณสมบัติหรือทำสิ่งใดผิด
The Duck Communist


ฉันทดสอบด้วยความหนาแน่น 1 และแรงเสียดทาน 0.0 ~ 0.1 มันยังคงเกาะอยู่
Eonil

คำตอบ:


8

โซลูชั่นมากมาย

  1. สำหรับ Box2D ตั้งค่าb2_velocityThresholdในb2Settings.hไฟล์ ในกรณีของฉันฉันตั้งค่า0.0fและใช้งานได้! มวลแรงเสียดทานการทำให้หมาด ๆ ไม่เป็นปัญหา ตรวจสอบกระทู้สนทนานี้สำหรับรายละเอียดเพิ่มเติม http://www.box2d.org/forum/viewtopic.php?f=3&t=6906&p=30782#p30782

  2. ใช้เครื่องมือฟิสิกส์อื่น ๆ Newton Game Dynamicsกำหนดค่าให้ทำงานอย่างถูกต้องตามค่าเริ่มต้น อย่างไรก็ตามการใช้นิวตันไดนามิกใน iOS เป็นไปได้ แต่มันค่อนข้างยากกว่าคนอื่น ๆ ฉันใช้การตั้งค่าหลายวันสำหรับ iOS

ฉันยังถามเกี่ยวกับฟอรัม BulletPhysics ฉันจะอัปเดตสิ่งนี้เมื่อฉันมีทางออก

- (แก้ไข) -

มีคุณลักษณะขีด จำกัด บางอย่างใน Bullet แต่ฉันไม่สามารถหาสิ่งเดียวกันb2_velocityThresholdได้

สิ่งนี้ดูคล้ายกัน แต่ใช้งานไม่ได้

btRigidBody->setContactProcessingThreshold(0.0f)

6

Box2D จะทำสิ่งที่คุณต้องการ แต่คุณต้องตั้งค่าคงที่ (เด้ง) สำหรับการติดตั้งกับผนังและลูกบอล สำหรับเกมพูลคุณอาจต้องการเริ่มต้นด้วยการซ่อมแซมที่สมบูรณ์แบบและแรงเสียดทานสูง แต่การทำให้หมาด ๆ เชิงเส้นและเชิงมุมและปรับแต่งจากที่นั่น


ฉันลองกำหนดค่าหลายครั้งในช่วงสองสามวัน แต่มันก็ยังเกิดขึ้น ฉันขอตัวอย่างที่ดีหนึ่งข้อ ...
Eonil

3
ค่าความหนาแน่นและแรงเสียดทานของคุณดูใหญ่มากสำหรับ Box2D

4

เอนจิ้นฟิสิกส์มีเกณฑ์การตีกลับ ฉันไม่รู้ว่าจะทำอย่างไรกับเครื่องยนต์เหล่านั้น แต่ขีด จำกัด ที่ตั้งไว้สูงเกินไปจะทำให้ไม่สนใจผลกระทบภายใต้ความเร็วที่กำหนด ลดเกณฑ์การตีกลับและจะตีกลับที่ความเร็วต่ำ

ฉันรู้ว่าคุณถามถึงเอนจิ้นฟิสิกส์ที่แตกต่างกัน แต่เอ็นจิ้นฟิสิกส์ทั้งหมดที่ฉันรู้จักใช้เด้งขีด จำกัด เด้งเพื่อป้องกันไม่ให้สิ่งของกระวนกระวายใจเมื่อพวกเขานั่งอยู่ด้านบนของกันและกัน ดังนั้นการแนะนำให้เอนจิ้นฟิสิกส์ที่ดีจะต้องต่อต้านเนื่องจากเครื่องยนต์ฟิสิกส์ที่ดีจะมีผลกระทบนี้


0

ฉันมีปัญหานี้และสำหรับฉันทางออกก็คือการซ่อมแซมที่สมบูรณ์แบบ

สำหรับฉันนั่นคือ sqrt 0.5 สำหรับวัตถุทั้งหมด เพราะ sqrt (r1 * r1 + r2 * r2) == 1 ในสถานการณ์ที่สมบูรณ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.