Heightmaps
एक ऊंचाई के साथ, आप प्रत्येक शीर्ष (आमतौर पर 2 डी बनावट) के लिए केवल ऊंचाई घटक को संग्रहीत करते हैं और पूरे क्वाड के लिए केवल एक बार स्थिति और रिज़ॉल्यूशन प्रदान करते हैं। परिदृश्य ज्यामिति ज्यामिति shader या हार्डवेयर tessellation का उपयोग करके प्रत्येक फ्रेम से उत्पन्न होती है। टक्कर का पता लगाने के लिए परिदृश्य डेटा को स्टोर करने के लिए हाइटमैप सबसे तेज़ तरीका है।
पेशेवरों:
अपेक्षाकृत कम मेमोरी उपयोग : आपको केवल एक मान प्रति शीर्ष और कोई सूचक नहीं संग्रहीत करने की आवश्यकता है। कथित विवरणों को बढ़ाने के लिए विस्तार नक्शे या शोर फिल्टर का उपयोग करके इसे और बेहतर बनाना संभव है।
अपेक्षाकृत तेजी से : ऊंचाई के लिए ज्यामिति shader छोटे और तेजी से चलता है। हालांकि यह ज्यामिति इलाके जितना तेज़ नहीं है।
त्रिभुज आधारित 3 डी त्वरण के बिना सिस्टम पर, किरण मार्चिंग ऊंचाई इलाके को रेंडर करने का सबसे तेज़ तरीका है। यह पुराने खेलों में स्वर ग्राफिक्स के रूप में संदर्भित किया गया था।
डायनेमिक LOD / इलाके : कैमरे से दूरी के आधार पर उत्पन्न जाल के रिज़ॉल्यूशन को बदलना संभव है। यह स्थानांतरण ज्यामिति का कारण होगा यदि रिज़ॉल्यूशन बहुत दूर (लगभग 0:40) पर गिरता है, लेकिन इसका उपयोग दिलचस्प प्रभावों के लिए किया जा सकता है।
आसान इलाक़ा निर्माण / निर्माण : हाइटमैप्स आसानी से मिश्रित ध्वनि फ़ंक्शंस द्वारा बनाए जा सकते हैं जैसे कि फ्रैक्टल पेरलिन नॉइज़ और हाइटमैप एडिटर्स तेज़ और उपयोग में आसान होते हैं। दोनों दृष्टिकोण संयुक्त हो सकते हैं। वे एक संपादक के साथ काम करना भी आसान है।
कुशल भौतिकी : स्मृति में एक से चार पदों पर (आमतौर पर) एक क्षैतिज स्थिति मानचित्र होती है, इसलिए भौतिकी के लिए ज्यामिति लुकअप बहुत तेज होते हैं।
विपक्ष:
एक्स / वाई समन्वय के अनुसार सटीक एक ऊंचाई : आमतौर पर जमीन में छेद नहीं हो सकता है या चट्टानों को ओवरहैंड किया जा सकता है।
कम नियंत्रण : आप प्रत्येक बिंदु की सटीक ऊंचाई को नियंत्रित कर सकते हैं यदि ग्रिड आकार बनावट के निर्देशांक से मेल खाता है।
कलाकृतियाँ : यदि एक उप-चतुर्थ को परिभाषित करने वाले चार कोने एक ही तल पर नहीं हैं, तो दो कोने के बीच का विभाजन दिखाई देगा। यह आमतौर पर किनारों पर खड़ी चट्टानों पर होता है जो कार्डिनल दिशा का पालन नहीं करते हैं।
हाइटमैप अब तक इलाके के प्रतिपादन का सबसे कुशल तरीका है और कई नए खेलों में उपयोग किया जाता है जो उन्नत इलाके सुविधाओं पर निर्भर नहीं होते हैं और बड़े बाहरी क्षेत्र होते हैं। विकिपीडिया के पास उन कार्यक्रमों की एक सूची है जो ऊँचाई का उपयोग करते हैं , लेकिन मुझे यकीन नहीं है कि अगर इसका मतलब है कि वे उन्हें केवल संसाधनों के रूप में या प्रतिपादन के लिए भी उपयोग करते हैं, तो यहां कुछ गेम हैं जिनका उपयोग करने की संभावना है:
जस्ट कॉज़ 2: क्षेत्र चौकोर क्षेत्रों में लोड किए गए हैं और इलाके में कोई छेद नहीं हैं। डेमो में, किनारों के साथ फैला हुआ त्रिकोण के साथ एक गहरा छेद होता है जहां आमतौर पर एक इमारत होगी। (यह क्षेत्र सामान्य रूप से दुर्गम है, लेकिन डेमो की कुछ सीमाओं को हटाने के लिए मोड हैं ...)
सिम्स 2 ( हो सकता है ): पड़ोस के इलाके को ऊंचाई के रूप में लोड किया गया है, लेकिन ऐसे छेद हैं जहां बहुत सारे (निर्माण स्थल) रखे गए हैं। यदि आप बहुत से चट्टानों का निर्माण करते हैं, तो विशिष्ट कलाकृतियां हैं, और यह एक घर में एक तहखाने को जोड़ने के लिए और (बरामदे के नीचे की चट्टान को छिपाने के लिए) काफी थकाऊ है।
वाल्व के स्रोत इंजन का खेल: आयताकार ब्रश (स्थिर स्तर ज्यामिति) उनके चेहरे पर ऊंचाई वाले इलाके हो सकते हैं। इन खेलों में, सामान्य क्वर्की अक्सर अन्य ब्रश या प्रॉप्स के साथ छिपे होते हैं।
यह सुनिश्चित करने के लिए असंभव है कि शेड्स को देखे बिना क्योंकि हर ऊंचाई वाले इलाके को जाली के रूप में प्रस्तुत किया जा सकता है।
voxels
Voxel इलाके एक 3D ग्रिड में प्रत्येक बिंदु के लिए इलाके डेटा संग्रहीत करता है। यह विधि हमेशा सार्थक सतह विवरण के लिए सबसे अधिक भंडारण का उपयोग करती है, भले ही आप विरल ऑक्ट्रेसेस जैसे संपीड़न विधियों का उपयोग करें।
(शब्द "वोक्सल इंजन" का उपयोग अक्सर पुराने 3 डी गेम में आम तौर पर किरण मार्चिंग ऊंचाई ऊंचाई की एक विधि का वर्णन करने के लिए किया जाता था। यह खंड केवल वैक्सील डेटा के रूप में संग्रहीत इलाके पर लागू होता है।)
पेशेवरों:
सतत 3 डी डेटा : अयस्क नसों की तरह छिपे हुए इलाके सुविधाओं के बारे में निरंतर डेटा को संग्रहीत करने के लिए वोक्सल्स बहुत ही कुशल तरीका है।
संशोधित करने में आसान : असम्पीडित स्वर डेटा को आसानी से बदला जा सकता है।
उन्नत इलाके विशेषताएं : ओवरहैंग बनाना संभव है। सुरंगें निर्बाध हैं।
दिलचस्प इलाके पीढ़ी : Minecraft शोर कार्यों और पूर्वनिर्धारित इलाके सुविधाओं (पेड़, काल कोठरी) के साथ grad ओवरले करके ऐसा करता है। ( अधिक जानकारी के लिए Notch के ब्लॉग में Terrain Generation, भाग 1 पढ़ें । 05.8.2011 के अनुसार कोई भाग 2 नहीं है।)
विपक्ष:
धीमा : voxel डेटा रेंडर करने के लिए, आपको या तो एक किरण ट्रेसर का उपयोग करना होगा या एक मेष की गणना करनी होगी , उदाहरण के लिए मार्चिंग क्यूब्स (कलाकृतियों होंगे)। पड़ोसी voxel जाल पीढ़ी के लिए स्वतंत्र नहीं हैं और शेड अधिक जटिल हैं और आमतौर पर अधिक जटिल ज्यामिति का उत्पादन करते हैं। उच्च LOD के साथ वेंडेल डेटा का प्रतिपादन बहुत धीमा हो सकता है।
विशाल भंडारण आवश्यकताओं : भंडारण voxel डेटा बहुत मेमोरी का उपयोग करता है । यह अक्सर वीआरएएम में voxel डेटा लोड करने के लिए व्यावहारिक नहीं है, क्योंकि आपको आधुनिक हार्डवेयर पर भी, इसकी भरपाई के लिए छोटे बनावट का उपयोग करना होगा।
यह उन खेलों के लिए स्वरों का उपयोग करने के लिए व्यावहारिक नहीं है जो कि विकृत इलाकों जैसे स्वर सुविधाओं पर भरोसा नहीं करते हैं, लेकिन यह कुछ मामलों में दिलचस्प खेल यांत्रिकी की अनुमति दे सकता है। पुराने खेलों में वॉक्सल इंजन अधिक आम हैं , लेकिन इसके नए उदाहरण भी हैं:
Atomontage engine : Voxel रेंडरिंग।
कीड़े 4: "पॉक्सल्स" का उपयोग करता है। विकिपीडिया के अनुसार यह स्वर और बहुभुज का मिश्रण है।
Minecraft: रैम में इलाके का प्रतिनिधित्व करने के लिए voxel का उपयोग करता है, ग्राफिक्स बहुभुज ग्राफिक्स हैं। यह ज्यादातर सॉफ्टवेयर की गणना है।
टेरारिया: 2 डी स्वरों के लिए एक उदाहरण। मैं नहीं जानता कि यह कैसे प्रस्तुत करता है।
भौतिकी के साथ संयुक्त स्वर : खेल नहीं। लेकिन यह विनाशकारी क्षमता को अच्छी तरह दिखाता है।
Voxatron : मेनू और HUD सहित लगभग सभी ग्राफ़िक्स के लिए voxels का उपयोग करने वाला खेल।
meshes
बहुभुज मेष भंडारण और भंडारण क्षेत्र का सबसे लचीला और सटीक तरीका है। वे अक्सर उन खेलों में उपयोग किए जाते हैं जहां सटीक नियंत्रण या उन्नत इलाके सुविधाओं की आवश्यकता होती है।
पेशेवरों:
बहुत तेज़ : आपको केवल शीर्ष शेकर में सामान्य प्रक्षेपण गणना करनी होगी। एक ज्यामिति shader की जरूरत नहीं है।
बहुत सटीक : सभी निर्देशांक प्रत्येक शीर्ष के लिए व्यक्तिगत रूप से संग्रहीत किए जाते हैं, इसलिए उन्हें क्षैतिज रूप से स्थानांतरित करना और महीन विवरण के साथ स्थानों में मेष घनत्व में वृद्धि करना संभव है।
कम मेमोरी प्रभाव : इसका मतलब यह भी है कि मेष को आमतौर पर एक हेममैप से कम मेमोरी की आवश्यकता होगी, क्योंकि कम छोटी विशेषताओं वाले क्षेत्रों में कोने अधिक विरल हो सकते हैं।
( विकिपीडिया पर त्रिकोणीय अनियमित नेटवर्क देखें )।
कोई कलाकृतियां नहीं : मेष को इस रूप में प्रस्तुत किया गया है, इसलिए इसमें कोई चमक या अजीब दिखने वाली सीमाएं नहीं होंगी।
उन्नत इलाके विशेषताएं : छिद्रों को छोड़ना और ओवरहैंग्स बनाना संभव है। सुरंगें निर्बाध हैं।
विपक्ष:
खराब गतिशील एलओडी : केवल प्री-कॉम्पटेड मेश के साथ ही संभव है। जब पुराने डेटा को नए सिरे से मैप करने के लिए अतिरिक्त डेटा के बिना स्विच करने पर यह "कूदता" होगा।
संशोधित करना आसान नहीं है : एक क्षेत्र के अनुरूप होने वाले कोने ढूंढना जो संशोधित होना चाहिए, धीमा है।
टक्कर का पता लगाने के लिए बहुत कुशल नहीं : ऊंचाई और voxel डेटा के विपरीत, एक निश्चित स्थान के लिए मेमोरी पता आमतौर पर सीधे गणना नहीं की जा सकती है। इसका मतलब यह है कि भौतिकी और खेल तर्क जो सटीक सतह ज्यामिति पर निर्भर करते हैं, वे संभवतः अन्य भंडारण प्रारूपों की तुलना में धीमी गति से चलेंगे।
बहुभुज इलाके अक्सर उन खेलों में उपयोग होते हैं जिनमें बड़े खुले क्षेत्र नहीं होते हैं या सटीक और अधिकता की कमी के कारण ऊंचाई वाले इलाके का उपयोग नहीं कर सकते हैं। मेरे पास सूची नहीं है, लेकिन मुझे पूरा यकीन है
हर 3 डी ज़ेल्डा और
हर 3 डी मारियो खेल
इसे इस्तेमाल करो।
अन्य विधियाँ
पूरी तरह से shader पाइपलाइन में एक भूभाग बनाना संभव है। यदि एल्गोरिथ्म केवल खंड / पिक्सेल शेडर में चलता है, तो विस्तार वस्तुतः असीमित हो सकता है जबकि स्मृति प्रभाव लगभग शून्य है। जब कैमरा मूल प्रतिपादन सतह को काटता है तो स्पष्ट डाउनसाइड आकार और समस्याओं पर लगभग कोई नियंत्रण नहीं होता है। यह अभी भी अंतरिक्ष के खेल में उपयोगी है जहां खिलाड़ी किसी ग्रह की सतह के साथ बातचीत नहीं करते हैं। इस तरह के इलाके के साथ पैरामीटर एनिमेशन सबसे अच्छा काम करते हैं।
बाकी गेम इंजन के लिए इसका उपयोग करने के लिए ग्राफिक्स कार्ड से उत्पन्न इलाके ज्यामिति को डाउनलोड करना संभव है, लेकिन मुझे नहीं पता कि इसका प्रदर्शन कैसा है या अभी तक ऐसा किया गया है।
निष्कर्ष
ऐसी कोई विधि नहीं है जो हर परिदृश्य के लिए अच्छी तरह से काम करती है, लेकिन एक निश्चित कार्य के लिए किसी एक को चुनना काफी आसान है:
यदि आपको इलाके की सतह में ओवरहैंग या छेद की आवश्यकता नहीं है और भौतिकी या गतिशील इलाके का उपयोग करने के लिए हाइटमैप सबसे अच्छा समाधान है। वे स्केलेबल हैं और अधिकांश खेलों के लिए अच्छी तरह से काम करते हैं।
मेष में सबसे अधिक सटीकता होती है और यह ओवरहैंग, छेद और सुरंगों का वर्णन कर सकता है। यदि आपके पास जटिल भूभाग है जो अक्सर नहीं बदलता है, तो उनका उपयोग करें।
कई जटिल विशेषताओं के साथ बहुत गतिशील इलाके का वर्णन करने के लिए वोक्सल्स अच्छे हैं। उन्हें सीधे रेंडर करने से बचें क्योंकि उन्हें बड़ी मात्रा में मेमोरी और प्रोसेसिंग की आवश्यकता होती है।
यदि आप इलाके के साथ बातचीत नहीं करते हैं या बहुत विस्तृत ग्राफिक्स की आवश्यकता है, तो अन्य विधियाँ उपरोक्त में से किसी से भी बेहतर हो सकती हैं। वे आम तौर पर केवल बहुत विशिष्ट परिदृश्यों के लिए काम करते हैं।
एक से अधिक से विशेषताओं को प्राप्त करने के लिए विभिन्न तरीकों को संयोजित करना संभव है, उदाहरण के लिए एक चट्टान की चौड़ाई संरचना को बढ़ाने के लिए एक ऊंचाई के साथ जाल इलाके को tessellating द्वारा।
डायनेमिक टेरेन जेनरेशन का भारी उपयोग किया जाता है प्रक्रियात्मक अंतरिक्ष सिमुलेशन और कुछ वास्तव में पिछले वर्षों में उन्नत हो गए हैं । इन परियोजनाओं के मंचों में विषय पर कुछ संसाधन होने चाहिए।