8kB में एक एनिमेटेड फ़िल्म कैसे बनाई जाए
- नवंबर 2022 में, 8 किलोबाइट के भीतर रियल-टाइम एनिमेशन बनाने की चुनौती शुरू की गई।
- लक्ष्य था अच्छी गुणवत्ता वाले ग्राफ़िक्स, एनिमेशन, निर्देशन, कैमरा वर्क और संगीत को शामिल करना।
- अप्रैल 2023 में, कई महीनों के काम के बाद "The Sheep and the Flower" को पूरा करके जारी किया गया।
अवलोकन
- अंतिम परिणाम एक Windows executable है, जिसमें सभी दृश्य तत्व GPU पर रियल-टाइम में गणना किए जाने वाले GLSL shaders का उपयोग करते हैं।
- रेंडरिंग में ray marching तकनीक का उपयोग किया गया, और shaders को Shader Minifier टूल से छोटा किया गया।
- संगीत OpenMPT और 4klang synthesizer का उपयोग करके बनाया गया, और वाद्ययंत्रों को procedural तरीके से वर्णित किया गया तथा नोट सूची को compress किया गया।
- कोड C++ में लिखा गया और Leviathan framework का उपयोग compiler flags और initialization शुरू करने के लिए किया गया।
- अंतिम output को Crinkler से compress किया गया।
सृजन की शुरुआत
- एक पूर्व सहकर्मी द्वारा बहुत पहले बनाया गया "Capoda" नाम का वीडियो साझा किए जाने से प्रेरित होकर यह प्रोजेक्ट शुरू हुआ।
- यह प्रोजेक्ट 8kB के लिए उपयुक्त कहानी के साथ size coding का एक अच्छा उदाहरण बन सकता था।
- 64kB को लक्ष्य बनाने से अलग इस नई चुनौती ने उत्साह पैदा किया।
दो त्रिभुजों से दुनिया को रेंडर करना
- पूरी स्क्रीन को ढकने वाला एक आयत (दो त्रिभुज) बनाया जाता है, और GLSL भाषा में लिखा गया GPU प्रोग्राम (shader) चलाकर हर pixel और frame के लिए रंग की गणना की जाती है।
- दृश्य को signed distance field के रूप में व्यक्त किया जाता है, और ray marching का उपयोग करके इस distance field को pixels में बदला जाता है।
निर्देशन
- सीमित characters और animation के साथ कहानी सुनाने और भावनाएँ व्यक्त करने के तरीकों पर विचार किया गया।
- कहानी के लिए अनावश्यक तत्वों को हटाकर detail, direction, editing और संगीत के साथ synchronization पर ध्यान केंद्रित किया गया।
- भावनाएँ पहुँचाने के लिए camera work और storytelling तकनीकों का उपयोग किया गया।
विकास प्रक्रिया
- source code में बहुत से hardcoded constants शामिल हैं, और हर constant को कई iterations के बाद तय किया गया।
- तेज़ feedback loop के लिए shaders को runtime पर दोबारा compile किया गया।
- animation और camera control के काम के लिए एक उपयोगी player की आवश्यकता थी।
संगीत
- कहानी के अनुरूप संगीत में विभिन्न हिस्सों और खास समयों पर transitions की आवश्यकता थी।
- 4klang synthesizer का उपयोग करके संगीत रचा गया, और जगह बचाने के लिए data को compress किया गया।
एनिमेशन & synchronization
- डेमो में सब कुछ हर frame पर दोबारा evaluate किया जाता है, और यह लगभग 25 manual camera shots से बना है।
- हर shot बनाते समय यह बताया जाता है कि camera के हर parameter का समय के साथ कैसे बदलाव होता है।
टेक्स्चर & सामग्री
- पारंपरिक renderer के विपरीत, 3D textures को रियल-टाइम में गणना करके उपयोग किया जाता है।
- traffic signs जैसे textures कई functions को जोड़कर बनाए जाते हैं।
आँखें
- विकास के शुरुआती चरण में आँखें बेजान और निर्जीव लगती थीं, लेकिन storytelling tool के रूप में वे महत्वपूर्ण थीं।
- आँखों में परावर्तित रोशनी जोड़कर उनमें जीवंतता लाई गई।
पोस्ट-प्रोसेसिंग
- अंतिम visual touch और कहानी का माहौल तय करने के लिए color grading, gamma correction, vignetting, FXAA filter आदि का उपयोग किया गया।
compression
- data को स्टोर करने के बजाय code का उपयोग करके data generate करने का तरीका अपनाया गया।
- Crinkler compression tool का उपयोग करके executable को self-extracting बनाया गया।
minimization
- shader source code को जितना संभव हो उतना छोटा बनाने के लिए Shader Minifier tool का उपयोग किया गया।
- shader code को minimize और compress करने के लिए Shader Minifier में नई सुविधाएँ जोड़ी गईं।
भेड़ और फूल के बीच युद्ध
- क्या आपको लगता है कि भेड़ और फूल के बीच का युद्ध महत्वपूर्ण नहीं है? "The Little Prince" में उल्लेखित यह विषय कहानी का एक महत्वपूर्ण हिस्सा है।
निष्कर्ष
- इस तरह के डेमो बनाने के लिए आवश्यक उन्नत तकनीकों और पहले से मौजूद शोध पर यह काम आधारित है।
- उम्मीद है कि नई सुविधाएँ दूसरों को इससे भी बेहतर डेमो बनाने में मदद करेंगी।
- 8kB श्रेणी 4kB की तुलना में अधिक संभावनाएँ देती है, और आशा है कि यह लोकप्रिय होगी।
GN⁺ की राय
- यह प्रोजेक्ट तकनीकी सीमाओं को पार करके रचनात्मकता से शानदार परिणाम बनाने का एक उदाहरण है।
- 8kB जैसी अत्यंत सीमित जगह में पूरी की गई यह एनिमेशन programming, algorithm optimization और artistic expression के संयोजन को दिखाती है।
- Shader Minifier जैसे tools का विकास और Crinkler compression tool का उपयोग software engineering और data compression के क्षेत्र में नवाचारी दृष्टिकोण को रेखांकित करता है।
1 टिप्पणियां
Hacker News की राय
मूल रचनाकार की राय:
Sloot Digital Coding System का उल्लेख:
"Sloot lives!!!"कहकर Sloot Digital Coding System का संदर्भ दिया गया।demoscene वीडियो पर राय:
demoscene तकनीक का विश्लेषण:
moutonफ़्रेंच मेंभेड़का अर्थ है, औरmuttonशब्द वहीं से निकला है।.kkrieger गेम की याद:
.kkriegerकी याद दिलाता है।.kkriegerको एक दिलचस्प कृति बताया गया।Cosmos Laundromat की सिफारिश:
Cosmos Laundromatदेखने लायक है।फ़िल्म पर सकारात्मक प्रतिक्रिया:
रचनात्मकता की प्रशंसा:
Razor 1911 की यादें:
Razor 1911नाम सुनकर शुद्ध nostalgia महसूस होने की बात कही गई।demoscene category की जानकारी: