इस प्रोजेक्ट के बारे में

यह रिपॉजिटरी 3D गाऊसियन स्प्लैटिंग के लिए Unity-आधारित व्यूअर है, जो SIGGRAPH 2023 पेपर "3D Gaussian Splatting for Real-Time Radiance Field Rendering" (केर्बल, कोपानास, लीमकुहलर और ड्रेटाकिस द्वारा) के रीयल-टाइम विज़ुअलाइज़ेशन भाग को लागू करता है। यह प्रशिक्षण स्वयं नहीं करता, बल्कि पहले से प्रशिक्षित गाऊसियन स्प्लैट मॉडल फ़ाइलों का उपभोग करता है, और यह स्पष्ट रूप से बाद के कई गाऊसियन स्प्लैटिंग शोध वेरिएंट के बजाय मूल पेपर पर आधारित है। स्थिति और प्लेटफ़ॉर्म समर्थन लेखक कहते हैं कि दिसंबर 2023 तक कोई महत्वपूर्ण आगे विकास की योजना नहीं है। ज्ञात कार्यशील प्लेटफ़ॉर्म वे हैं जो D3D12, Metal या Vulkan ग्राफ़िक्स API का उपयोग करते हैं: Windows (D3D12 या Vulkan), Mac (Metal) और Linux (Vulkan)। DX11 काम नहीं करता। OpenGL और OpenGL ES समर्थित नहीं हैं, WebGPU अभी व्यवहार्य नहीं है, और मोबाइल समर्थन असंगत है, कुछ iOS और Android डिवाइस गैर-कार्यात्मक बताए गए हैं। कुछ VR डिवाइस कथित रूप से काम करते हैं (HTC Vive, Varjo Aero, Quest 3, Quest Pro), जबकि अन्य जैसे Apple Vision Pro शायद नहीं। उपयोग वर्कफ़्लो projects/GaussianExample फ़ोल्डर को Unity प्रोजेक्ट के रूप में खोलें (Unity 2022.3 के साथ विकसित) और GSTestScene दृश्य लोड करें। GaussianSplat एसेट्स Tools -> Gaussian Splats -> Create GaussianSplatAsset मेनू के माध्यम से बनाए जाते हैं। इनपुट मूल 3DGS पेपर से PLY फ़ाइल (आमतौर पर point_cloud/iteration_*/point_cloud.ply) या Scaniverse SPZ प्रारूप हो सकता है। एक वैकल्पिक cameras.json को साथ या मूल फ़ोल्डरों में रखा जा सकता है। संवाद संपीड़न विकल्प और आउटपुट फ़ोल्डर प्रदान करता है; यहां तक कि "बहुत कम" गुणवत्ता प्रीसेट भी अच्छी तरह से उपयोग योग्य बताया गया है, एक कैप्चर 8MB से कम कुल है। परिणामी एसेट में कई डेटा फ़ाइलें होती हैं। रिपॉजिटरी में कोई स्प्लैट मॉडल शामिल नहीं हैं क्योंकि वे बड़े हैं; मूल पेपर रिपॉजिटरी प्रशिक्षित मॉडल के 14GB ज़िप से लिंक करता है। रेंडरिंग और नियंत्रण गेम ऑब्जेक्ट पर एक GaussianSplatRenderer स्क्रिप्ट अपने Asset फ़ील्ड में बनाए गए एसेट को लेती है। स्क्रिप्ट डेटा को डीबग और विज़ुअलाइज़ करने के लिए नियंत्रण प्रदान करती है, साथ ही गेम कैमरे को एसेट के कैमरा स्थानों में से एक पर ले जाने के लिए एक स्लाइडर भी। रेंडरिंग गेम ऑब्जेक्ट के ट्रांसफ़ॉर्मेशन मैट्रिक्स को ध्यान में रखती है; आधिकारिक मॉडल X के चारों ओर लगभग -160 डिग्री घुमाए गए और Z के चारों ओर मिरर किए गए दिखाई देते हैं, इसलिए नमूना दृश्य ऐसा ट्रांसफ़ॉर्म लागू करता है। अतिरिक्त दस्तावेज़ रेंडर पाइपलाइन एकीकरण और स्प्लैट संपादन को कवर करते हैं। प्रदर्शन नोट्स पेपर के "bicycle" दृश्य के लिए 6.1M स्प्लैट्स 1200x797 पर और मध्यम एसेट गुणवत्ता (282MB एसेट) के साथ, लेखक Windows पर NVIDIA RTX 3080 Ti के साथ रिपोर्ट करते हैं: आधिकारिक SBIR व्यूअर 7.4ms (135FPS) पर 4.8GB VRAM का उपयोग करता है, और Unity DX12 या Vulkan पर 6.8ms (147FPS) पर, 4.5ms रेंडरिंग, 1.1ms सॉर्टिंग और 0.8ms स्प्लैट व्यू गणना में विभाजित, 1.3GB VRAM का उपयोग करता है। Mac पर Apple M1 Max के साथ, Unity Metal पर 21.5ms (46FPS) बताया गया है। लोड किए गए एसेट के अलावा, सॉर्टिंग और व्यू-निर्भर डेटा कैशिंग के लिए वर्तमान में प्रति स्प्लैट लगभग 48 बाइट्स GPU मेमोरी की आवश्यकता होती है। लाइसेंसिंग लेखक का कोड MIT लाइसेंस प्राप्त है। थर्ड-पार्टी घटकों में zanders3/json (MIT), थॉमस स्मिथ द्वारा योगदान किया गया GPU सॉर्टिंग कोड "DeviceRadixSort", और @ninjamode द्वारा Unity-VR-Gaussian-Splatting के आधार पर योगदान किए गए VR फिक्स शामिल हैं। README चेतावनी देता है कि मूल पेपर कार्यान्वयन का लाइसेंस इसके प्रशिक्षण सॉफ़्टवेयर को शैक्षिक, शैक्षणिक और गैर-व्यावसायिक उपयोग तक सीमित करता है, व्यावसायिक उपयोग के लिए INRIA से लाइसेंस की आवश्यकता होती है; उपयोगकर्ताओं को अलग से विचार करना चाहिए कि उनकी PLY फ़ाइलें कैसे बनाई गईं।