भौतिकी इंजन के लिए सलाह की जरूरत है


12

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

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

दूसरा, मुझे पता है कि भौतिक विज्ञान का अनुकरण करना बहुत अधिक गहन है, इसलिए मैं CUDA या OpenCL का उपयोग करना चाहूंगा। अब मैं OpenCL की ओर झुक रहा हूं, क्योंकि यह NVIDIA और ATI चिपसेट दोनों पर काम करेगा। आप लोग क्या सुझाव देते हैं?

PS: मैं इसे C ++ में लिनक्स पर लागू करूंगा।

जवाबों:


10

यहाँ बताया गया है कि कैसे मैंने एक भौतिकी इंजन लिखना सीखा, इसके सभी मुफ्त और अत्यधिक सिफारिश योग्य:

  1. डेविड Baraff के दस्तावेजों को खासकर शारीरिक रूप से आधारित मॉडलिंग के लिए एक परिचय

  2. ब्रिगेडियर विन्सेन्ट मिरीच की थीसिस इम्पल्स-आधारित डायनामिक सिमुलेशन ऑफ़ रिगिड बॉडी सिस्टम्स

  3. कैसिक / बुलॉक "ए प्रैक्टिकल डायनामिक्स सिस्टम" एसआईजीआरएपीएच 2003, एडिट : लिंक जोड़ा गया

उन पत्रों का जिक्र निक पोर्सिनो (लुकासआर्ट्स) के एक अन्य महान लेख में किया गया था जिसमें से एक रत्न-पुस्तक रत्न 4 "राइटिंग अ वर्लेट-बेस्ड फिजिक्स इंजन" है। यह मुक्त नहीं है, लेकिन इसके लायक हर पैसा है।

अन्य इंजनों पर भी एक नज़र डालें, यहाँ बुलेट भौतिकी इंजन का स्रोत है ।

CUDA / OpenCL के कार्यान्वयन के बारे में: इसे पहले सीपीयू पर चलाएं, यह काफी जटिल है :)

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

जैसे ही आपके पास एक सरल इंजन चल रहा है, मेरी सलाह है: परीक्षण-परिदृश्य बनाएं जहां आप दूसरे इंजन के परिणाम के साथ अपने इंजन के परिणाम की तुलना करते हैं। इससे मुझे बहुत सी त्रुटियां खोजने में मदद मिली और यह आपके इंटरफ़ेस को बेहतर करेगा; दोनों इंजनों में एक ही शरीर पर 1 सेकंड के लिए समान बल की अपील करने जैसा कुछ।

अंतिम लेकिन कम से कम नहीं: जब आप शुरू करते हैं तो टकराव को अनदेखा करें, पहले एक स्थिर सिमुलेशन पर ध्यान दें।


एक महान जवाब की तरह लग रहा है, लेकिन आप इसे थोड़ा प्रारूपित करना चाह सकते हैं।
कम्युनिस्ट डक

प्रतिक्रिया के लिए धन्यवाद। मैं मानता हूं कि मैं एक प्रतिस्पर्धी इंजन नहीं बना पाऊंगा, लेकिन इसके साथ मेरा मुख्य लक्ष्य सीखने का हिस्सा है।
आदिवासिअल

1
@ कम्युनिस्ट बतख ने संकेत के लिए धन्यवाद, मैं पक्ष में नया था और मैं मानता हूं कि मैं प्रारूप विकल्पों की जांच करने के लिए बहुत आलसी था, इसे ठीक कर दिया :)
Maik Semder

1
लिंक को कासिक के पेपर में जोड़ा गया, उम्मीद है कि यह सही है :)
रे डे

5

माईक सही है, बराक के कागजात एक उत्कृष्ट शुरुआत है, लेकिन क्रिस हेकर्स को कठोर शरीर की गतिशीलता पर लिखना न भूलें: http://chrishecker.com/Rigid_Body_Dynamics !

इसके अलावा "[..] पर आपकी सलाह आपके इंजन को दूर फेंक देगी" पूरी तरह से सच है। लेकिन आप बहुत कुछ सीखेंगे!

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

लेकिन अवगत रहें: CUDA पर शुरुआत करना आसान है, फिजिक्स सिमुलेशन पर शुरुआत करना थोड़ा कठिन है, लेकिन दोनों का संयोजन काफी चुनौतीपूर्ण है!


आप बिलकुल सही कह रहे हैं, यह एक और महान संसाधन है जिसका उल्लेख किया जाना चाहिए, क्रिस हेकर के पेपर के लिए +1
Maik Semder

4

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

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

ज्यादा CUDA / OpenCL नहीं जानते (हालाँकि मैं हमेशा ऐसा करना चाहता था) लेकिन आपको Takahiro Harada के काम की जाँच जरूर करनी चाहिए।

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