वास्तव में एक भौतिकी इंजन क्या है?


57

एक प्रोग्राम को इनपुट लेना चाहिए, इसे प्रोसेस करना चाहिए और आउटपुट देना चाहिए। तो क्या वास्तव में एक भौतिकी इंजन इनपुट के रूप में लेता है और आउटपुट के रूप में प्रदान करता है?


36
शब्दावली के बहुत से लोग सवाल करते हैं। बुनियादी सवालों को कम करने की ज़रूरत नहीं है क्योंकि वे बुनियादी हैं।
MichaelHouse

16
एक प्रोग्राम का वर्णन कुछ इस तरह से है कि "इनपुट लेना चाहिए, इसे प्रोसेस करना चाहिए, और आउटपुट देना चाहिए" यह एक बेतुका सरलीकृत और कम करने वाला तरीका है जिसके बारे में सोचना बेकार है। सोचें कि आप प्रश्न का उत्तर कैसे देंगे "एक प्रोग्राम को इनपुट लेना चाहिए, उसे प्रोसेस करना चाहिए और आउटपुट देना चाहिए। तो क्या वास्तव में कोई गेम इनपुट के रूप में लेता है और आउटपुट के रूप में प्रदान करता है?", आप इसका उत्तर दे सकते हैं लेकिन यह सोचने का एक उपयोगी तरीका नहीं है। खेल।
जैक एडले

10
@JackAidley मैं आपकी बात देख रहा हूं, लेकिन वास्तव में, एक गेम बहुत कुछ ऐसा है: इनपुट: कीस्ट्रोक और माउस / जॉयस्टिक मूवमेंट, आउटपुट: स्क्रीन पर मजेदार छवियां और वक्ताओं से मनोरंजक ध्वनियां। यह सरलीकृत है, हाँ, लेकिन यह समझने में मदद करता है कि एक "गेम" क्या कम्प्यूटेशनल है, और मेरे अनुभव में भी कोड आर्किटेक्चर, एसेट डिज़ाइन, प्रोजेक्ट मैनेजमेंट आदि के बारे में सोचने का एक अत्यंत उपयोगी तरीका है (लेकिन एकमात्र तरीका नहीं है)।
wjl

जवाबों:


58

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

भौतिकी सिमुलेशन का इनपुट आम तौर पर गुणों के साथ वस्तुओं ("निकायों") का एक संग्रह होता है (जैसे कि वे कठोर या नरम, उनके द्रव्यमान, आकार और इतने पर) और साथ ही उन निकायों पर कार्य करने वाले बलों का संग्रह।

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


6

इनपुट यह गति, द्रव्यमान और समय, आउटपुट नई गति है। कभी-कभी रोटेशन / कोणीय गति एक इनपुट और आउटपुट भी है।

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

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


1
मैं यह बताना चाहता हूं कि वायु प्रतिरोध वास्तव में भौतिकी इंजनों की एक सामान्य विशेषता है। कोई भी खेल जो गिरती हुई वस्तुओं के लिए एक टर्मिनल वेग लागू करता है, वह वायु प्रतिरोध को मॉडलिंग करता है।
पैट्रिक रॉबर्ट्स

@PatrickRoberts टर्मिनल वेलोसिटी वास्तव में वैसा नहीं है जैसा मैं वायु प्रतिरोध का उल्लेख करते समय सोच रहा था। यह कहना पसंद होगा कि पोंग में एक भौतिकी इंजन है जो कि गतिज प्रभावों को मॉडल करता है।
पीटर

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

4

आमतौर पर एक भौतिकी इंजन का उपयोग हर संभव परिदृश्य के लिए विशिष्ट एनिमेशन डिजाइन किए बिना उनके वातावरण के सापेक्ष एक यथार्थवादी तरीके से व्यवहार करने के लिए किया जाता है।

विशेष रूप से एक भौतिकी इंजन गुणों के एक समूह (द्रव्यमान, जोड़ों आदि) के साथ एक मॉडल लेगा और इसे मापदंडों के एक सेट के अनुसार खेल में प्रस्तुत करेगा।

इसका एक प्रारंभिक उदाहरण रैगडोल इंजन (उदा। अवास्तविक) में था, जिसने इस तरह से मॉडलिंग की कि लंगड़ा शरीर चरणों से नीचे गिर जाए।

वर्तमान प्रौद्योगिकी में भौतिकी इंजन प्रायः एआई, इन-गेम यूआई, कटस्कैन जेनरेशन आदि के साथ-साथ एक समग्र गेम डिग्न पैकेज में बारीकी से एकीकृत होंगे।

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

जैसा कि अन्य उत्तरों में उल्लेख किया गया है, ड्राइविंग या फ्लाइट सिमुलेशन जैसे कुछ वर्गों या गेम में भौतिकी इंजन गेम खेलने के लिए मौलिक हो सकता है और जैसे कि ऑन-स्क्रीन एनीमेशन ड्राइविंग मुख्य इनपुट होगा। हालाँकि आम तौर पर इस शब्द का इस्तेमाल एक सामान्य उद्देश्य उपकरण के लिए किया जाता है, जो कि ज़मीन से निर्मित एक बहुत ही विशिष्ट सिम्युलेटर के बजाय, डेवलपर की ओर से प्रश्न में संदर्भ के संदर्भ के बहुत विशिष्ट ज्ञान या विश्लेषण की आवश्यकता के बिना विभिन्न स्थितियों पर लागू किया जा सकता है। एक विशिष्ट आवेदन के लिए।


4

एक भौतिकी इंजन "दुनिया" (जो भी इंजन के संदर्भ में इसका मतलब है) में वस्तुओं की गति का अनुकरण करने के लिए जिम्मेदार है । आजकल ज्यादातर फिजिक्स इंजन ऐसा करने के लिए न्यूटनियन यांत्रिकी का उपयोग करते हैं, क्योंकि वे अनुकरण करने के लिए अपेक्षाकृत सरल होते हैं और अधिकांश प्रयोजनों के लिए "सटीक पर्याप्त" होते हैं जब तक कि आप एक स्पेस सिम नहीं कर रहे हैं।

सिद्धांत रूप में, एक "शुद्ध" भौतिकी इंजन तीन इनपुट लेगा:

  • दुनिया की स्थिति (वस्तुएं, उनके स्थान, और उनके वेग) अंतिम "टिक" के रूप में (समय में अंतिम समय जो इंजन को मॉडल करना था)
  • आखिरी टिक हुए कितना समय बीत चुका है
  • पिछले टिक के बाद से दुनिया में विभिन्न वस्तुओं पर काम कर रहे बलों की एक सूची

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

व्यवहार में, भौतिकी इंजन जरूरी नहीं कि "शुद्ध" हो । वस्तुओं को बनाने और नष्ट करने की आवश्यकता होती है, और कभी-कभी उन्हें उन तरीकों से इधर-उधर ले जाने की आवश्यकता होती है जो भौतिकी इंजन के नियमों की अनुमति नहीं देंगे। यह कभी-कभी इंजन के बाहर भी किया जा सकता है, लेकिन कभी-कभी यह अंदर किया जाता है, और ऐसा करने के लिए, इंजन को अधिक इनपुट की आवश्यकता होती है। लेकिन ऊपर बताए गए तीन इनपुट मूल बातें कवर करते हैं।

उदाहरण के लिए, मान लीजिए कि आपको जॉयस्टिक का उपयोग करके किसी खेल में एक चरित्र को स्थानांतरित करने की आवश्यकता है। यदि आप एक भौतिकी इंजन का उपयोग नहीं कर रहे हैं, तो यह बहुत सीधा है: जब आप देखते हैं कि उपयोगकर्ता जॉयस्टिक को आगे बढ़ा रहा है, तो आप उसके अनुसार वस्तु को स्थानांतरित करते हैं। भौतिकी इंजन के साथ, आप ऑब्जेक्ट को सीधे स्थानांतरित नहीं करते हैं: आप इसके लिए एक बल लागू करते हैं, जिस दिशा में आप ऑब्जेक्ट को जाना चाहते हैं उसी के अनुसार, और इंजन को वास्तव में इसे स्थानांतरित करने दें

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

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


1

एक भौतिकी इंजन मूल रूप से भौतिकी निकायों का एक सिम्युलेटर है।

इनपुट

यह आपको एक शरीर (या कई लोगों) बनाने की अनुमति देता है जो इसके भौतिक गुणों जैसे कि द्रव्यमान, आकार, घनत्व, आदि को निर्दिष्ट करता है ...

यह आपको भौतिकी दुनिया के गुणों को भी परिभाषित करने की अनुमति देता है जहां अनुकरण होता है (जैसे गुरुत्वाकर्षण)।

अंत में यह आपको बलों को लागू करने या निकायों के बीच जोड़ों को बनाने की अनुमति देता है।

उत्पादन

एक बार जब आप इन सभी चीजों को परिभाषित करते हैं तो आप सिमुलेशन शुरू कर सकते हैं और भौतिकी इंजन आपको बताएगा कि हर शरीर को अगले टाइमस्टेप पर रखा जाएगा (जो आमतौर पर आपके खेल में अगले फ्रेम के अनुरूप होता है)। और अगले एक, और इतने पर ...

आप स्प्राइट्स को स्क्रीन पर चलते देखते हैं क्योंकि हर फ्रेम गेम इंजन फिजिक्स इंजन से पूछता है

अब यह शरीर कहाँ है?

और गेम इंजन ग्राफिक्स प्रतिनिधित्व को तदनुसार अद्यतन करता है।

विचार

मैं आमतौर पर भौतिकी इंजन को एक घोषणात्मक तरीके से भौतिकी कानूनों को लागू करने के लिए एक उपकरण की तरह देखना पसंद करता हूं ।

यह लिखने के लिए कोड लिखने के बजाय सही है कि कौन सी गणना यह निर्धारित करने के लिए की जानी चाहिए कि एक निकाय अगले टाइमस्टेप पर कहां होगा, मैं केवल भौतिक विज्ञान दुनिया का वर्णन करता हूं, जिसमें निकायों की विशेषताओं को स्थापित किया जाता है (और भौतिकी दुनिया की) और मैं भौतिकी इंजन का जवाब देता हूं मेरे लिए यह सवाल है।


आपका 'विचार' खंड वास्तव में (मेरे लिए) बिल्कुल स्पष्ट नहीं है। यदि आप इसे और अधिक स्पष्ट और ठोस / व्यावहारिक बनाने के लिए सुधार करते हैं (उदाहरण के लिए आपके द्वारा देखे गए, निर्मित, इत्यादि वास्तविक प्रणाली उदाहरण प्रदान करते हैं), तो मैं आपको एक +1 दूंगा।
code_dredd

@ray: आपके सुझाव के लिए धन्यवाद। मैं उस ASAP को ठीक कर दूँगा!
लुका अनगेलेटी

ऐसा करने के बाद मुझे टिप्पणी करने के लिए सुनिश्चित करें और इसे जल्दी मत करो। यह बाद में दूसरों के लिए उपयोगी होना चाहिए।
code_dredd
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.