संक्षेप में: एक विश्वसनीय घना जंगल एक प्रदर्शन बॉस-लड़ाई है: हजारों हाई-पॉली पेड़, स्तरित पारदर्शिता, और क्षितिज तक फैले इंस्टेंस। आप इसे एक अनुशासित LOD चेन से जीतते हैं जो एक इम्पोस्टर (कैमरे की ओर मुख वाला बिलबोर्ड जो किसी भी कोण से 3D पेड़ की नकल करता है) पर समाप्त होती है, आक्रामक इंस्टेंसिंग और कलिंग, और कुछ शेडिंग तरकीबें ताकि सस्ते दूर के पेड़ अपने आप को धोखा न दें। यह लेख पूर्ण मेश से बिलबोर्ड तक की पूरी चेन, ऑक्टाहेड्रल इम्पोस्टर तरकीब, और भारी अनुकूलित जंगल को मृत न दिखने देने के तरीके पर चलता है।
यहां हर पेड़ कैमरे से अलग दूरी पर है, इसलिए हर एक की लागत अलग होनी चाहिए। सस्ते जंगल की कला यह है कि पॉलीगन केवल पास वालों पर खर्च करो और बाकी को विश्वसनीय ढंग से नकली बना दो।
मूल विचार: दूरी के अनुसार भुगतान करो
5 मीटर दूर एक पेड़ और 500 मीटर दूर एक पेड़ की एक ही लागत नहीं होनी चाहिए। एक LOD चेन पास में पूर्ण विवरण खर्च करती है और दूरी के साथ क्रमिक रूप से सस्ते प्रतिनिधित्व, एक सपाट बिलबोर्ड पर समाप्त होती है, ताकि जंगल बढ़ने पर कुल लागत सपाट रहे।
पूरा खेल कैमरा जिन पेड़ों को मुश्किल से हल कर पाता है उनके लिए पूरी कीमत देने से इनकार करना है। पास में, एक पेड़ अलग-अलग पत्ती कार्ड्स के साथ एक पूर्ण मेश है; दूर से, यह मुट्ठी भर पिक्सल है जिन्हें एक सपाट छवि पूरी तरह से पुनरुत्पादित करती है। एक LOD (level-of-detail) चेन इसे औपचारिक बनाती है: घटती लागत के साथ एक ही पेड़ के कई संस्करण, स्क्रीन आकार के अनुसार अदला-बदली, ताकि दस हजार पेड़ों के जंगल की लागत लगभग वही हो जो विस्तार से दिखता है बजाय पूर्ण गुणवत्ता पर हर पेड़ के योग के। इसके बिना, घनत्व आपके फ्रेम समय को रैखिक रूप से जमीन तक स्केल करती है; इसके साथ, आप उसी बजट के लिए पेड़ों की संख्या को बहुत अधिक धकेल सकते हैं।
LOD चेन, कदम-दर-कदम
LOD0 पत्ती कार्ड्स के साथ पूर्ण मेश (पास); LOD1–2 घटी हुई ज्यामिति और सरलीकृत पत्तियां (मध्य); LOD3 कुछ कार्ड्स या एक कार्ड; अंतिम LOD एक इम्पोस्टर/बिलबोर्ड (दूर)। हर कदम मोटे तौर पर लागत को आधा कर देता है जबकि अदला-बदली अदृश्य रहती है।
एक विशिष्ट वनस्पति LOD चेन कुछ इस तरह चलती है: LOD0, अपने सभी पत्ती कार्ड्स के साथ पूर्ण-विवरण मेश, खिलाड़ी के ठीक बगल के पेड़ों के लिए; LOD1–LOD2, घटी हुई तने की ज्यामिति और कम, बड़े पत्ती कार्ड्स, मध्य भूमि के लिए; LOD3, नाटकीय रूप से सरलीकृत कार्ड क्लस्टर; और एक अंतिम इम्पोस्टर: मूल रूप से एक सपाट छवि: दूर की हर चीज के लिए। कारीगरी संक्रमण दूरियों और ब्लेंड में है, ताकि अदला-बदली उछले नहीं। डिथर्ड या क्रॉस-फेडेड LOD संक्रमण स्विच को छिपाते हैं; गलत दूरी पर एक कठोर उछाल वह टेल-टेल है जो भ्रम को तोड़ता है। अपने वास्तविक कैमरे के अनुसार दूरियां ट्यून करो, डिफॉल्ट के नहीं।
इम्पोस्टर: किसी भी कोण से 3D की नकल
एक इम्पोस्टर (ऑक्टाहेड्रल इम्पोस्टर) पेड़ को दर्जनों कोणों से एक एटलस में पूर्व-रेंडर करता है, फिर बिलबोर्ड के रूप में निकटतम कैप्चर किए गए दृश्य को दिखाता है। सपाट बिलबोर्ड के विपरीत, कैमरे के इसके चारों ओर घूमने पर यह सही दिखता है: सस्ता, लेकिन 3D-जैसा।
चेन का दूर का सिरा वह जगह है जहां सबसे बड़ी बचत रहती है, और इम्पोस्टर वह चतुर तरकीब है जो उन्हें स्वीकार्य बनाती है। एक साधारण बिलबोर्ड (कैमरे की ओर मुड़ी एक सपाट छवि) सामने से अच्छी लगती है लेकिन जब आप चलते हैं तो अप्राकृतिक रूप से चपटी हो जाती है और खिसकती है। एक ऑक्टाहेड्रल इम्पोस्टर पेड़ को एक गोले के चारों ओर व्यवस्थित कई दृष्टिकोणों से पूर्व-रेंडर करके, उन्हें एक टेक्सचर एटलस में पैक करके, और वर्तमान कैमरा दिशा के निकटतम किसी भी कैप्चर किए गए कोण को प्रदर्शित करके (निकटतम कुछ के बीच ब्लेंड करते हुए) इसे हल करता है। परिणाम लागत के एक अंश पर किसी भी कोण से एक वास्तविक 3D पेड़ के रूप में पढ़ा जाता है, इसीलिए इम्पोस्टर विश्वसनीय दूर के जंगलों की रीढ़ हैं। उन्हें एक बार बेक किया जाता है और आकर्षित करने के लिए लगभग कुछ भी नहीं लगता।
ग्राउंड लेयर इंस्टेंस काउंट को तेजी से गुणा करती है। अंडरब्रश को पेड़ों के समान अनुशासन चाहिए: इसे इंस्टेंस करो, इसे LOD करो, और इसे कठोरता से कल करो: 80 मीटर पर एक फर्न को बिल्कुल नहीं खींचना चाहिए।
इंस्टेंसिंग और कलिंग
दोहराए गए पेड़ों को इंस्टेंस के रूप में खींचो ताकि हजारों की लागत कुछ ड्रॉ कॉल हो, और आक्रामक रूप से कल करो: स्क्रीन के बाहर जो है उसे फ्रस्टम-कल करो और छोटी चीजों को डिस्टेंस-कल करो। इंस्टेंसिंग CPU लागत ठीक करती है; कलिंग आपको अदृश्य के लिए भुगतान करने से रोकती है।
पूर्ण LOD के साथ भी, दस हजार पेड़ों को व्यक्तिगत वस्तुओं के रूप में जमा करना CPU को दफना देता है। इंस्टेंसिंग एक पेड़ की सभी प्रतियों को कुछ ड्रॉ कॉल में ढहा देती है, जो एक वास्तविक जंगल के लिए गैर-परक्राम्य है, और यह वही है जो स्कैटर को नेटिव इंजन इंस्टेंसेस में बेक करना आपको देता है। इसके ऊपर, निर्दयता से कल करो: फ्रस्टम कलिंग दृश्य के बाहर सब कुछ छोड़ देती है, और डिस्टेंस कलिंग एक निश्चित सीमा से परे नोटिस करने के लिए बहुत छोटी जमीन की गंदगी और नन्हीं वनस्पति को हटा देती है। विशेष रूप से घास और अंडरब्रश की कठोर और पास की कल दूरियां होनी चाहिए, क्योंकि वे पेड़ों की तुलना में तेजी से इंस्टेंस काउंट को गुणा करते हैं। एक वर्कफ्लो जो घनत्व पेंट करता है फिर इंस्टेंस्ड मेशों में बेक करता है (जैसे Numivo का) इंजन को ठीक वह बैच्ड और कल-योग्य रूप सौंपता है जिसकी एक घने जंगल को आवश्यकता है।
सस्ते जंगल को जीवित रखना
भारी अनुकूलन एक जंगल को स्थिर और मृत दिखा सकता है: पास के LOD पर सूक्ष्म हवा, इंस्टेंसेस के बीच रंग और स्केल भिन्नता, और शेडिंग से इसका मुकाबला करो जो दूर के इम्पोस्टर को सपाट कार्डबोर्ड के रूप में पढ़ने से रोकती है।
इस सारी दक्षता का जोखिम एक जंगल है जो शानदार तरीके से चलता है और निर्जीव महसूस होता है। तीन सस्ते स्पर्श इसे वापस लाते हैं: हवा: पास के LOD पर वर्टेक्स एनिमेशन ताकि पास की वनस्पति चले, भले ही दूर के इम्पोस्टर स्थिर रहें (कोई भी 300 मीटर पर एक स्थिर पेड़ पर ध्यान नहीं देता)। भिन्नता: प्रति-इंस्टेंस स्केल, घुमाव, और एक टिंट यादृच्छिक करो ताकि आंख पुनरावृत्ति न पकड़े; समान पेड़ कॉपी-पेस्ट का टेल-टेल हैं। और इम्पोस्टर पर शेडिंग देखभाल: उनकी रोशनी बेक करो ताकि जब सूर्य का कोण बदले तो वे स्पष्ट कार्डबोर्ड में सपाट न हों। अपना बचाया हुआ फ्रेम समय इन पास के विवरणों पर खर्च करो, जहां खिलाड़ी वास्तव में देखता है, और अनुकूलित जंगल अनुकूलित न किए गए जितना जीवंत महसूस होता है: कई गुना तेजी से चलते हुए।
चुराने योग्य क्षेत्रीय संख्याएं
- लागत सिद्धांत: दूरी के अनुसार भुगतान: एक दूर का पेड़ पास वाले जितनी लागत नहीं होनी चाहिए
- LOD चेन: पूर्ण मेश → घटा हुआ → कार्ड क्लस्टर → इम्पोस्टर, हर एक ~लागत को आधा कर देता है
- इम्पोस्टर = एटलस में पूर्व-रेंडर किए गए कोण → किसी भी दृश्य से 3D-जैसा बिलबोर्ड
- दोहराव को इंस्टेंस करो (कुछ ड्रॉ कॉल) + छोटी दूर की वनस्पति को कठोर-कल करो
- जीवित रखो: पास-LOD हवा + प्रति-इंस्टेंस भिन्नता + बेक्ड इम्पोस्टर शेडिंग
मिनी-FAQ
बिलबोर्ड बनाम इम्पोस्टर: क्या अंतर है? एक बिलबोर्ड कैमरे की ओर मुड़ी एक सपाट छवि है और जब आप चारों ओर घूमते हैं तो सपाट हो जाती है। एक इम्पोस्टर कई कोण संग्रहीत करता है और सही एक दिखाता है, इसलिए यह 3D में बना रहता है। जिस भी चीज के चारों ओर खिलाड़ी परिक्रमा करता है या पास से गुजरता है, इम्पोस्टर का उपयोग करो; साधारण बिलबोर्ड केवल वास्तव में दूर, स्थिर पृष्ठभूमि के लिए अच्छे हैं।
एक पेड़ को कितने LOD स्तर चाहिए? आम तौर पर तीन से चार साथ एक इम्पोस्टर। अधिक स्वचालित रूप से बेहतर नहीं है: हर स्तर एक ऑथरिंग और मेमोरी लागत है। हर अदला-बदली को एक छोटा अगोचर कदम बनाने के लिए पर्याप्त लक्ष्य है, अधिकतम नहीं।
क्या Nanite इसे अप्रचलित बनाता है? यह ज्यामिति पक्ष को बदलता है: Nanite पारंपरिक LOD के बिना घने मेश विवरण को संभालता है, लेकिन पारदर्शिता (पत्ती कार्ड्स), इंस्टेंसिंग अनुशासन, और कलिंग अभी भी मायने रखते हैं, और इम्पोस्टर दूर की दूरियों के लिए अभी भी उपयोगी हैं। सिद्धांत जीवित रहते हैं; उपकरण स्थानांतरित होता है।
जंगल के प्रदर्शन को अक्सर क्या मारता है? ओवरलैपिंग पारदर्शी पत्ती कार्ड्स से ओवरड्रॉ, और अनकल्ड ग्राउंड वनस्पति। पत्ती कार्ड्स को कसो, अंडरब्रश को पास कल करो, और सब कुछ इंस्टेंस करो: वह त्रयी पेड़ मेशों को छूने से पहले भी बजट का अधिकांश हिस्सा वापस पा लेती है।
एक घना जंगल रेंडर करने के लिए सबसे दंडात्मक चीजों में से एक है और सही करने के लिए सबसे संतोषजनक चीजों में से एक। LOD चेन बनाओ, इम्पोस्टर को दूरी ले जाने दो, निर्दयता से इंस्टेंस और कल करो, और अपनी बचत पास में हवा और भिन्नता पर खर्च करो, और आपके पास एक जंगल होगा जो क्षितिज तक फैला हो और अपना फ्रेमरेट बनाए रखे।

