इस प्रोजेक्ट के बारे में
godot-box3d एक GDExtension है जो Box3D, Erin Catto के 3D फिजिक्स इंजन, को Godot 4 में अंतर्निहित PhysicsServer3D के ड्रॉप-इन रिप्लेसमेंट के रूप में एकीकृत करता है। स्टॉक Godot फिजिक्स नोड्स काम करते रहते हैं: आप अपने सीन के बजाय एक प्रोजेक्ट सेटिंग बदलते हैं। इस प्रोजेक्ट को प्रारंभिक और प्रायोगिक बताया गया है, और Box3D स्वयं एक नया इंजन है।
प्रेरणा: लेखक SurfsUp बना रहे हैं, जो Godot में Source-इंजन "SkillSurf" का पुनर्निर्माण है। Surf मैप्स लंबे अवतल trimesh रैंप, उच्च गति वाले कोनों, और ज्यामिति के नीचे head surf के साथ फिजिक्स पर दबाव डालते हैं। Godot का अंतर्निहित फिजिक्स और godot-jolt कथित तौर पर उसके कुछ हिस्सों से जूझते हैं। Box3D की उत्पत्ति Valve के Rubikon-lite से हुई, जो Source 2 का फिजिक्स इंजन है, इसलिए Rubikon-वंश का सॉल्वर आज़माने लायक लगा। Godot के PhysicsServer3D और Box3D के बीच का ब्रिज godot-jolt की आर्किटेक्चर का अनुसरण करता है।
box3d-godot की तुलना में, जो Godot के लिए एक अन्य Box3D बाइंडिंग है: box3d-godot Box3D को Godot के फिजिक्स के साथ-साथ चलने वाले 14 कस्टम नोड्स के रूप में उजागर करता है, जबकि यह प्रोजेक्ट Godot के फिजिक्स को प्रतिस्थापित करता है। इसका मतलब है कि स्टॉक नोड्स और मौजूदा ऐडऑन काम करते रहते हैं, लेकिन Box3D-केवल सुविधाएँ जैसे विस्फोट, जायरोस्कोपिक टॉर्क, सॉल्वर प्रोफाइलिंग, और async स्टेपिंग PhysicsServer3D इंटरफ़ेस के माध्यम से उपलब्ध नहीं हैं। box3d-godot अधिक जॉइंट प्रकार (8 बनाम 3), एक वास्तविक व्हील कंस्ट्रेंट, और अधिक प्लेटफ़ॉर्म (Android, वेब) प्रदान करता है, जबकि यह प्रोजेक्ट हाइटफील्ड्स और VehicleBody3D को रेकास्ट के माध्यम से समर्थन करता है। README बताता है कि यह प्रोजेक्ट वर्तमान में जॉइंट प्रकार, ConeTwist और 6DOF, क्वेरी परिणामों में प्रति-शेप इंडेक्स, प्रोफाइलिंग, और प्लेटफ़ॉर्म पर box3d-godot से पीछे है। दोनों में से किसी को भी प्रोडक्शन-रेडी नहीं बताया गया है।
क्या काम करता है: रिजिड, स्टैटिक, और किनेमेटिक बॉडीज़; शेप्स जिनमें बॉक्स, स्फीयर, कैप्सूल, सिलेंडर, कन्वेक्स पॉलीगॉन, कॉन्केव पॉलीगॉन (trimesh), हाइटमैप, और वर्ल्ड बाउंड्री शामिल हैं; ओवरलैप इवेंट्स, ग्रेविटी/डैम्पिंग ओवरराइड, प्रायोरिटी ऑर्डरिंग, और पॉइंट ग्रेविटी वाले एरियाज़; डायरेक्ट स्पेस स्टेट क्वेरीज़ (रे कास्ट्स, पॉइंट और शेप इंटरसेक्शन, शेप कास्ट्स, collide_shape, rest_info); body_test_motion ताकि CharacterBody3D और move_and_slide() काम करें; वास्तविक कॉन्टैक्ट पॉइंट्स, नॉर्मल्स, और इम्पल्सेस के साथ कॉन्टैक्ट मॉनिटरिंग; प्रति-पेयर कोलिज़न एक्सेप्शन्स; पिन, हिंज, और स्लाइडर जॉइंट्स; ऑटो-डिटेक्टेड फिजिकल कोर्स और worker_count ओवरराइड वाला एक मल्टीथ्रेडेड सॉल्वर, जो वर्कर काउंट्स में डिटरमिनिस्टिक है; और एक टेस्ट प्रोजेक्ट जिसमें डेमो हब, डिटरमिनिस्टिक बेंचमार्क, और 19 हेडलेस रिग्रेशन टेस्ट हैं।
शेष कार्य में सेपरेशन रे शेप्स, ConeTwist जॉइंट्स, Generic6DOFJoint3D (Box3D में प्रति-अक्ष लॉक/लिमिट/मोटर कंस्ट्रेंट नहीं है, इसलिए कोई विश्वसनीय मैपिंग मौजूद नहीं है), SoftBody3D, क्वेरी और कॉन्टैक्ट परिणामों में प्रति-शेप इंडेक्स, सॉल्वर प्रोफाइलिंग, macOS यूनिवर्सल बाइनरीज़ और नोटराइज़ेशन, अधिक प्लेटफ़ॉर्म और आर्किटेक्चर, और परफॉर्मेंस बेंचमार्किंग और ट्यूनिंग शामिल हैं।
व्यवहार संबंधी अंतर प्रलेखित हैं: Area3D trimesh या हाइटमैप बॉडीज़ का पता नहीं लगाता, क्योंकि Box3D कॉन्केव शेप्स डिज़ाइन के अनुसार सेंसर विज़िटर के रूप में कार्य नहीं कर सकते; collide_shape() पेनिट्रेशन डेप्थ के बिना कॉन्टैक्ट पॉइंट्स रिपोर्ट करता है क्योंकि Box3D GJK उजागर करता है; शेप क्वेरीज़ को एक कन्वेक्स क्वेरी शेप की आवश्यकता होती है; और फ्रिक्शन और रेस्टिट्यूशन अलग तरह से संयोजित होते हैं (फ्रिक्शन के लिए sqrt(a*b), रेस्टिट्यूशन के लिए max(a,b), बनाम Godot के min(a,b) और क्लैम्प्ड सम), इसलिए मटेरियल्स को रीट्यून करने की आवश्यकता हो सकती है।
README में एक बेंचमार्क सीन शामिल है जो एक निश्चित सीड से बॉक्सेस को एक निश्चित लैटिस पर गिराता है जब तक 4096 बॉडीज़ मौजूद न हों, जिसे Linux पर Godot 4.7.2.rc के साथ चलाया गया। रिपोर्ट किए गए परिणाम उस विशिष्ट डेंस-बॉक्स वर्कलोड में 16.66 ms पर बॉडीज़, मीडियन स्टेप, p95 स्टेप, पीक स्टेप, और मेमोरी पर Box3D Physics को Jolt Physics, Godot Physics, और Rapier3D से आगे रखते हैं। README स्पष्ट रूप से चेतावनी देता है कि सभी चार बैकएंड 4096 बॉडीज़ से बहुत पहले बजट से बाहर हो जाते हैं, कि यह ओवरलोड के तहत गिरावट को मापता है, और यह कि एक डेंस बॉक्स ढेर रेकास्ट्स, कैरेक्टर कंट्रोलर्स, या जॉइंट्स के बारे में कुछ नहीं बताता, इसलिए इसे रैंकिंग के बजाय एक शुरुआती बिंदु के रूप में लिया जाना चाहिए।
आवश्यकताएँ: Godot 4.3 या नया (टेस्ट प्रोजेक्ट 4.7 को लक्षित करता है)। इंस्टॉलेशन Releases से ऐडऑन ज़िप के माध्यम से है, addons/godot-box3d/ को प्रोजेक्ट में कॉपी करें, फिर Project Settings → Physics → 3D → Physics Engine को Box3D Physics पर सेट करें और रीस्टार्ट करें। सॉल्वर डिफ़ॉल्ट रूप से प्रति फिजिकल कोर एक वर्कर का उपयोग करता है, जिसे physics/box3d/worker_count के माध्यम से ओवरराइड किया जा सकता है। macOS को कार्य-प्रगति पर बताया गया है: केवल Apple Silicon, नोटराइज़्ड नहीं, कंपाइल करने से आगे अप्रयुक्त। Linux और Windows परीक्षित प्लेटफ़ॉर्म हैं। बिल्डिंग CMake का उपयोग करती है, Linux से Windows DLL को क्रॉस-कंपाइल करने के लिए एक MinGW-w64 टूलचेन फ़ाइल के साथ। टेस्टिंग एक हेडलेस स्क्रिप्ट के माध्यम से चलती है जो एक्सटेंशन बनाती है, उसे रजिस्टर करती है, बैकएंड लोड हुआ यह सत्यापित करती है, और 19 रिग्रेशन टेस्ट चलाती है, विफलता या लीक हुए Box3D RID पर नॉनज़ीरो के साथ बाहर निकलती है। योगदान का स्वागत है। MIT लाइसेंस; Box3D MIT है, और प्रोजेक्ट godot-jolt से संरचनात्मक प्रेरणा लेता है, जो भी MIT है।
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.