भौतिकी इंजन की सिफारिश जो सही ढंग से पूल गेम का अनुकरण कर सकती है? [बन्द है]


13

मैं पूल-गेम जैसे गेम बना रहा हूं। इस खेल में सही (या बहुत सटीक) चिंतनशील उछाल की आवश्यकता होती है। मैंने बॉक्स 2 डी और बुलेट फिजिक्स की कोशिश की , लेकिन उन दोनों में यह समस्या है।

चित्रण

यदि इस छवि के शीर्ष पर एक दीवार है, तो पूल-गेम में लाल रेखा एक वास्तविक गेंद का कोर्स है। लेकिन इंजन अक्सर ग्रीन लाइन कोर्स दिखाते हैं। ख़ास तौर पर,

  1. यह धीरे-धीरे चलती गेंद को दीवार से टकराने के बाद होता है।
  2. कभी-कभी एक तेजी से चलती गेंद अचानक धीमी हो जाती है।

मुझे एक भौतिकी इंजन मिल रहा है जो इन समस्याओं के बिना यथासंभव पूल-गेम का अनुकरण कर सकता है। क्या मुझे कुछ सिफारिशें मिल सकती हैं? अब मैं न्यूटन गेम डायनामिक्स को खोद रहा हूं , लेकिन मुझे यकीन नहीं है कि इंजन वह दिखाएगा जो मैं चाहता हूं। मैं अगले परीक्षण के रूप में PhysX इंजन पर विचार कर रहा हूं , और अगर कुछ भी नहीं है तो मुझे अपना बनाना होगा। लेकिन यह स्पष्ट है कि इसमें बहुत लंबा समय लगेगा, इसलिए मेरी इच्छा है कि मैं ऐसा नहीं करूंगा। यदि आप मेरा समय बचाते हैं तो मुझे बहुत सराहना मिलेगी। और हां, Box2D / Bullet Physics के साथ समाधान का भी स्वागत किया जाता है।

मैं iOS पर C / C ++ / Objective + C के साथ काम कर रहा हूं।


मैं Box2D के साथ अपने कॉन्फ़िगरेशन को संलग्न करता हूं।

दीवारों

  • स्थिर बॉक्स आकार
  • रैखिक / कोणीय भिगोना = 0.1
  • पुनर्स्थापन = १.०
  • घर्षण = १००
  • घनत्व = 10
  • गोली = असत्य
  • नियत रोटेशन = असत्य
  • जड़ता का पैमाना = 1.0

बॉल्स

  • गतिशील क्षेत्र आकार
  • रैखिक / कोणीय भिगोना = 0.1
  • पुनर्स्थापन = १.०
  • घर्षण = १००
  • घनत्व = 20
  • गोली = सत्य
  • नियत रोटेशन = असत्य
  • जड़ता का पैमाना = 1.0

3
संभावना है कि इंजन गलत नहीं है, लेकिन आपने कोई संपत्ति निर्धारित नहीं की है या किसी तरह गलत कर रहे हैं।
कम्युनिस्ट डक


मैंने घनत्व 1 और घर्षण 0.0 ~ 0.1 के साथ परीक्षण किया, यह चिपका रहता है।
इऑनिल

जवाबों:


8

कई समाधान।

  1. Box2D के लिए, फ़ाइल b2_velocityThresholdमें सेट करें b2Settings.h। मेरे मामले में, मैंने इसे निर्धारित किया 0.0fऔर इसने काम किया! बड़े पैमाने पर, घर्षण, भिगोना समस्या नहीं थी। अधिक जानकारी के लिए इस चर्चा धागे की जाँच करें। http://www.box2d.org/forum/viewtopic.php?f=3&t=6906&p=30782#p30782

  2. अन्य भौतिकी इंजन का उपयोग करना। न्यूटन गेम डायनेमिक्स ने डिफ़ॉल्ट रूप से इसे सही तरीके से कॉन्फ़िगर किया है। हालाँकि iOS में न्यूटन डायनामिक्स का उपयोग करना संभव है लेकिन यह दूसरों की तुलना में कुछ कठिन है। मैंने कई दिनों तक इसे iOS के लिए कॉन्फ़िगर किया था।

मैं BulletPhysics मंचों पर भी पूछ रहा हूँ। जब मुझे समाधान मिल जाएगा तो मैं इसे अपडेट करूंगा।

- (संपादित करें) -

बुलेट में कुछ थ्रेशोल्ड विशेषताएँ हैं, हालाँकि मैं इसके साथ बिल्कुल वैसा नहीं पाया b2_velocityThreshold

यह समान दिखता है, लेकिन अच्छी तरह से काम नहीं किया।

btRigidBody->setContactProcessingThreshold(0.0f)

6

Box2D वही करेगा जो आप चाहते हैं लेकिन आपको दीवार और बॉल फिक्स्चर के लिए पुनर्स्थापन (उछाल) स्थिरांक सेट करना होगा। एक पूल गेम के लिए आप शायद सही बहाली और उच्च घर्षण लेकिन रैखिक और कोणीय भिगोना के साथ शुरू करना चाहते हैं, और वहां से ट्विक करें।


मैंने कुछ दिनों में कई कॉन्फ़िगरेशन की कोशिश की, लेकिन यह अभी भी होता है। क्या मुझे एक अच्छा उदाहरण मिल सकता है ...?
Eonil

3
Box2D के लिए आपका घनत्व और घर्षण मूल्य बहुत बड़ा है।

4

भौतिकी इंजन में उछाल सीमा होती है। मुझे नहीं पता कि इसे उन दोनों इंजनों में कैसे किया जाता है, लेकिन थ्रेशोल्ड बहुत अधिक होने के कारण यह एक निश्चित वेग के तहत प्रभावों की अनदेखी करेगा। उछाल सीमा को कम करें और यह कम गति से उछलेगा।

मुझे पता है कि आपने एक अलग भौतिकी इंजन के लिए कहा था, लेकिन सभी भौतिकी इंजन मुझे पता है कि जब वे एक-दूसरे के ऊपर बैठे होते हैं तो वस्तुओं को घबराने से बचाने के लिए बाउंस थ्रेसहोल्ड का उपयोग करते हैं। इसलिए एक अच्छे भौतिकी इंजन का सुझाव देना विपरीत होगा क्योंकि किसी भी अच्छे भौतिकी इंजन का यह प्रभाव होगा।


0

मेरे पास यह समस्या थी और मेरे लिए यह समाधान पूर्ण बहाली प्रदान कर रहा था।

तो मेरे लिए जो सभी वस्तुओं के लिए 0.5 का sqrt है। क्योंकि sqrt (r1 * r1 + r2 * r2) == 1 एकदम सही स्थिति में।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.