मुझे भौतिकी इंजन में छोटी वस्तुओं को कैसे संभालना चाहिए?


13

मैं पासा फेंकने के लिए एक 3 डी भौतिकी इंजन बना रहा हूं। अब तक एक पासा 1x1x1m है और गुरुत्वाकर्षण 9.82 m / s ^ 2 रहा है। यह निश्चित रूप से यथार्थवादी नहीं लगता क्योंकि पासा हर तरह से प्रतिक्रिया देगा जो थोड़ा धीमा दिखता है।

इसे ठीक करने के लिए मैंने सभी आकारों को बदलने की कोशिश की ताकि पासा एक तरफ से लगभग 0.02 मी। इसके बदले में मेरा उलटा द्रव्यमान और उलटा जड़त्व मैट्रीस बहुत बड़े मूल्य प्राप्त करते हैं जो संख्यात्मक अस्थिरता का कारण बनते हैं।

इससे निपटने का सबसे अच्छा मार्ग क्या है? क्या मैं स्केल ऊपर रख सकता हूं ताकि एक पासा 1x1x1 हो और सिर्फ बड़े पैमाने पर या अभिनय बलों के आकार को बदल दें? या मुझे कुछ और ट्विस्ट करना चाहिए?

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


मैं यहां कोई विशेषज्ञ नहीं हूं, लेकिन, बिना किसी कोड के, हम कैसे जान सकते हैं कि समस्या क्या है? मैं शायद गलत हूं, हालांकि, बॉक्स 2 डी में भी यही मुद्दे हैं।
जकोरा

1
(सभी अपवित्रों को देखकर, इन चीजों को कोड करने का एक पारंपरिक तरीका होना चाहिए, और लोगों को यह पता लगता है कि आपको क्या समस्या है। मुझे लगता है कि मैं गलत था।)
jcora

1
हां मुझे लगा कि इसे संभालने का एक पारंपरिक तरीका हो सकता है। जैसा कि मैंने देखा कि यह एक कोड समस्या नहीं है, बल्कि संख्यात्मक परिशुद्धता के साथ एक मुद्दा है। मेरी समस्या को हल करने के लिए कोड स्निपेट नहीं है, बल्कि मैं इस मुद्दे पर एक दृष्टिकोण के बारे में व्याख्या कर रहा हूं।
मिकेल होजस्ट्रम

क्या आपका मतलब फ्लोटिंग पॉइंट प्रिसिजन है?
जकोरा

एक अर्थ में हाँ। जड़ता मैट्रिक्स का व्युत्क्रम जो मैं टकराव से निपटने में उपयोग करता हूं उसे बहुत बड़े मूल्य मिलते हैं। यह वास्तव में बीमार नहीं है क्योंकि धुरी-तत्वों को बड़े मूल्य मिलते हैं और बहुत अधिक जोड़ नहीं होता है, लेकिन किसी तरह संख्यात्मक परिशुद्धता के साथ एक समस्या होनी चाहिए क्योंकि सिमुलेशन जल्दी से नियंत्रण से बाहर निकलता है।
मिकेल होजस्ट्रम

जवाबों:


1

आप ऐसा कर सकते हैं

  • गुरुत्वाकर्षण निरंतर बढ़ाएँ? खेल अक्सर 2 * 9.81 मीटर / सेकेंड 2 का उपयोग करते हैं। मुझे यह याद नहीं है कि मैं यह कहाँ पढ़ता हूँ, लेकिन गेम बेकार-कामुक इकाइयों का उपयोग नहीं करते हैं। जो भी कॉन्स्टेंट सही लगता है (गेम को मज़ेदार बनाएं)। यथार्थवादी स्थिरांक का उपयोग करने से भौतिकी धीमी और फ्लोटी लगती है।
  • अनुकरण को तेज गति से चलाएं। यदि आप एक निश्चित टाइमस्टेप का उपयोग कर रहे हैं, तो यह एनीमेशन की दर को बढ़ा देगा।
  • उच्च परिशुद्धता फ़्लोट्स का उपयोग करें?

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

1
खेल अक्सर दोहरे गुरुत्वाकर्षण का उपयोग करते हैं? कौन कहता है?
गेमडे-एर

मैं दर या सटीकता नहीं बदल सकता लेकिन मैं गुरुत्वाकर्षण बदलने की कोशिश करूँगा।
मिकेल होजस्ट्रम

गुरुत्वाकर्षण को निरंतर बदलते रहने से पासा आम तौर पर तेजी से आगे बढ़ता है, जिससे यह आभास होता है कि सब कुछ छोटे स्तर पर है। यह व्यवहार को और अधिक चिड़चिड़ा बनाता है, भले ही फ्रेम-त्वरण के बीच को संभालने के लिए माइक्रोकोलियनों के साथ। मुझे लगता है कि मुझे बस इसे
ट्विक

4

यदि आपको छोटे संख्यात्मक मानों से परेशानी हो रही है, तो मेरा सुझाव है कि आप बस सब कुछ नीचे कर दें। तुम भी "असली" मापक इकाइयों का उपयोग नहीं कर सकते हैं, लेकिन सिर्फ इंजन के अंदर समझ बनाने वाली कुछ "सामान्य" इकाइयां हैं।

पहला विकल्प, स्केलिंग डाउन की आवश्यकता होगी कि आप आधार माप इकाई के रूप में मिलीमीटर या सेंटीमीटर का उपयोग करें। आपके घन के आयाम सटीक होने के नुकसान से ग्रस्त होंगे, फिर।

दूसरा समाधान मूल रूप से एक ही बात है, लेकिन तब आपको वास्तविक इकाइयों के बारे में सोचने की आवश्यकता नहीं होगी।

इसके अलावा, आप सिर्फ क्यूब के द्रव्यमान को क्यों नहीं बदलते हैं?


चूंकि मेरे पास एकमात्र बल जनरेटर है जो गुरुत्वाकर्षण / त्वरणमापी आधारित बदलते द्रव्यमान में व्यवहार को नहीं बदलता है। आपके सुझाव का उपयोग अन्य तरीकों से किया जा सकता है, हालांकि (शायद यही आपका मतलब है) छोटी वस्तुओं को बड़ा द्रव्यमान देते हुए, उनके व्युत्क्रम द्रव्यमान को एक के करीब बनाते हैं और इस प्रकार संख्यात्मक अस्थिरता को कम करते हैं। यह वही मुद्दे देता है जो सिर्फ गुरुत्वाकर्षण स्थिरता को बढ़ाते हैं।
मिकेल होजस्ट्रम 12


0

मैंने सोचा कि मुझे समस्या का अंतिम समाधान साझा करना चाहिए। जैसा कि सुझाया गया है कि गुरुत्वाकर्षण का स्तर लगातार बढ़ता जा रहा है, जिससे पासा तेजी से आगे बढ़ता है और इससे सही पैमाने का आभास होता है। हालांकि, इसने माइक्रोबॉयनिंग के मुद्दों को बढ़ा दिया। मैंने माइक्रोकोलियन्स को जोड़ा जिसने समस्या को कम कर दिया, हालांकि इसे पूरी तरह से हल नहीं किया। ध्यान दें कि यह केवल "छोटी" वस्तुओं के लिए एक समस्या बन जाती है, अगर आप उल्टा मुद्दा बना रहे हैं और बहुत बड़ी वस्तुओं (स्पेसशिप या ऐसा कुछ) का अनुकरण करना चाहते हैं, तो आपको किसी भी माइक्रोबायॉन्गिंग समस्याओं का सामना नहीं करना पड़ेगा और इसके साथ संघर्ष कर सकते हैं वह समाधान।

इसलिए मुझे पता चला कि गुरुत्वाकर्षण का उच्चतम स्तर मेरे पास बहुत अधिक "माइक्रोबायोनिज़िंग" के बिना हो सकता है। फिर मैंने फोन पर एक साधारण शेक-डिटेक्शन का उपयोग किया, जिसने एक्सीलरोमीटर रीडिंग से बड़े बदलावों का जवाब दिया और ऐसे शेक का पता चलने पर सभी वस्तुओं पर आवेगों को लागू किया। यह सही नहीं है, लेकिन जब यह पासा तेजी से आगे बढ़ेगा, जब फोन हिल जाएगा तो यह "छोटे" पासे का आभास देगा। यह थोड़ा हैक है लेकिन इसे करना होगा :) यहां एक्शन में इंजन का एक क्लिप है।

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