ऊँचाई, स्वर, बहुभुज (ज्यामिति) भूभाग


15

हाइटमैप, वेक्सल और बहुभुज (ज्यामिति) इलाकों के संबंध में:

  1. इन तीनों में मुख्य अंतर क्या हैं?
  2. क्या आप वोक्सल्स के साथ एक "चिकनी" इलाक़ा बना सकते हैं, मेरा मतलब है कि क्या आप उदाहरण के लिए वोक्सल्स के साथ एक चिकनी पर्वत प्राप्त कर सकते हैं, या वोक्स क्यूब्स तक सीमित हैं?
  3. प्रदर्शन के लिहाज से, एक विश्व 2000x2000 इकाइयाँ, हाइटमैप इलाक़ा, वोक्सल इलाक़ा या बहुभुज आधारित, ज्यामिति इलाक़ा क्या तेज़ होगा? (यह मानते हुए कि हर संभावनाओं के लिए प्रतिपादन के लिए "उचित" प्रदर्शन लाभ / अनुकूलन है)
  4. क्या इलाके निर्माण के लिए कोई और तकनीक का इस्तेमाल किया जाता है?
  5. प्रत्येक प्रकार का प्रतिनिधित्व करने वाला कोई अच्छा शीर्षक?

पीएस बहुभुज आधारित भूभाग पूरी तरह से फंसा होना चाहिए, कोई चौकोर सामान नहीं।

जवाबों:


30

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 द्वारा।

डायनेमिक टेरेन जेनरेशन का भारी उपयोग किया जाता है प्रक्रियात्मक अंतरिक्ष सिमुलेशन और कुछ वास्तव में पिछले वर्षों में उन्नत हो गए हैं । इन परियोजनाओं के मंचों में विषय पर कुछ संसाधन होने चाहिए।


3
स्रोत इंजन अपने इलाके के लिए ऊंचाई का उपयोग नहीं करता है। वे "विस्थापन" developer.valvesoftware.com/wiki/Displacement
Tetrad

1
यह एक मीठा जवाब है, इस पर एक +3 देगा, अगर यह संभव था। विस्तृत जानकारी के लिए धन्यवाद, बहुत सराहना की।
joltmode

विस्थापन के लिए @ टेट्राड उपलब्ध प्रस्तावों में दो की शक्तियां हैं (बनावट बफ़र्स के लिए एक सामान्य प्रतिबंध), प्रति शीर्ष पर सहेजे गए एकमात्र समन्वय की ऊंचाई है और इलाके की ऊँचाई को टेसेलेटेड क्वैड के रूप में प्रस्तुत किया गया है। विकी यह भी कहता है कि विस्थापन की प्रतिपादन लागत नियमित ज्यामिति की तुलना में कम है। मुझे लगता है कि यह मानना ​​उचित है कि वे अलग-अलग नामों के साथ समान हैं।
तामची

1
@NickWiggill "voxel" का अर्थ पिछले 10 वर्षों में काफी बदल गया है। मैं एक नियमित 3 डी ग्रिड पर मूल्यों के रूप में स्वर की वर्तमान विकिपीडिया परिभाषा के साथ जा रहा हूँ । निर्वासित पर प्रवेश अर्थ में अंतर का उल्लेख है। मैंने इसे स्पष्ट करने के लिए अपने उत्तर में जोड़ा है।
तमसाची

2
साइड नोट: "बहुभुज इलाके" को जीआईएस में " त्रिकोणीय अनियमित नेटवर्क " ("शॉर्ट के लिए टिन") भी कहा जाता है ; और यह आमतौर पर एक ही प्रभावी रिज़ॉल्यूशन के ऊंचाई की तुलना में बहुत कम मेमोरी गहन है, क्योंकि यह गैर-आवश्यक डेटा या उन स्थानों को रिकॉर्ड करने से परेशान नहीं होता है जहां कोई डेटा नहीं है। पहले गोथिक खेल ने इसका इस्तेमाल किया (दूसरों के बारे में निश्चित नहीं)।
मार्टिन सोज्का

8

मैं यह बताना चाहता हूं कि आपके द्वारा उल्लिखित कोई भी शब्द एक-दूसरे के साथ विशेष रूप से अनन्य नहीं हैं - आपके पास एक स्वर आधारित खेल भी हो सकता है, जो ऊंचाई का उपयोग करता था और पॉलीगोन का उपयोग करके प्रदान करता था।

  1. ऊँचाई-नक्शे प्रत्येक विशिष्ट बिंदु पर जमीन की ऊंचाई के दो आयामी प्रतिनिधित्व हैं। उन्हें अक्सर ग्रेसीकल छवियों के रूप में संग्रहीत किया जाता है, जहां चमक उस बिंदु की ऊंचाई का प्रतिनिधित्व करती है। Voxels मूल रूप से एक 3D बिटमैप है। एक स्वर स्थान को प्रस्तुत करने के लिए कई प्रकार की तकनीकों का उपयोग किया जाता है।

  2. आप स्वरों के साथ एक चिकनी इलाक़ा बना सकते हैं, और वे क्यूब्स तक सीमित नहीं हैं। ऐसा ही एक तरीका है एल्गोरिथ्म का उपयोग करना जैसे कि क्यूब्स को मार्च करना , जो एक स्वर के प्रतिनिधित्व को बहुभुज सूची में बदल सकता है।

  3. सबसे कम त्रिकोण वाला व्यक्ति सबसे तेज़: 3 प्रस्तुत करेगा

  4. पेर्लिन शोर जैसे भग्न एल्गोरिदम का उपयोग बहुत सारे परिदृश्य के साथ परिदृश्य बनाने के लिए किया जा सकता है
    विस्तार के है। कुछ स्थायी भंडारण आवश्यकताओं के साथ चिकनी टेरिंस बनाने के लिए नर्सरी जैसी पैरामीट्रिक सतहों का उपयोग किया जा सकता है।

  5. डेल्टा फोर्स एक पुराना गेम है जिसमें वोक्सल्स का इस्तेमाल किया जाता है। Minecraft परिदृश्य (अनिश्चित) का प्रतिनिधित्व करने के लिए voxel भंडारण का उपयोग कर सकता है। शाइनी द्वारा बलिदान एक ऐसा खेल है जो अच्छे प्रभाव के लिए ऊंचाई का उपयोग करता है। परिदृश्य के साथ अधिकांश गेम ज्यामिति इलाकों का उपयोग करते हैं।


1
एक नोट 3 बिंदु पर, जबकि GPU केवल बहुभुज गणना के बारे में परवाह करता है, फिर भी चीजों की ज्यामिति पीढ़ी का पक्ष है। एक स्वर क्षेत्र के लिए ज्यामिति उत्पन्न करना आमतौर पर एक धीमी प्रक्रिया (ब्लॉक / मार्चिंग क्यूब्स दोनों अधिक जटिल प्रक्रियाएं हैं) ऊंचाई वाले इलाके (जो एक सरल प्रक्रिया है), या बहुभुज आधारित (जो स्पष्ट रूप से पहले से ही ज्यामिति डेटा है)। संपादित करें: यह इस बात पर भी निर्भर करता है कि क्या आप इलाके को ख़राब करना चाहते हैं।
माइकल

तीसरे बिंदु के लिए ... खैर, ऊंचाई को अभी भी संसाधित किया जाना है और उसके बाद ही यह ज्यामिति में बनता है, है ना? यह ध्यान में रखते हुए, एक बहुभुज जाल तेजी से एक बालक होगा? क्या आप वोक्सल्स को प्रस्तुत करने के लिए इस्तेमाल की जाने वाली कुछ तकनीकों की ओर इशारा कर सकते हैं?
joltmode

2
आप एक ऊंचाई से जाल उत्पन्न करने के लिए एक ज्यामिति shader का उपयोग कर सकते हैं। इस तरह से आप केवल ऊंचाई और मापदंडों जैसे कि स्थिति और रिज़ॉल्यूशन को स्टोर करते हैं, जबकि ज्यामिति को शेडर पाइपलाइन में प्रत्येक फ्रेम उत्पन्न होता है। यह बहुभुज जाल की तुलना में क्यूब्स और धीमी मार्चिंग से तेज है। हेमपैप्स का लाभ कम मेमोरी खपत है: केवल 1/3 से अधिक एक जाल की आवश्यकता होगी। नकारात्मक पक्ष यह है कि यह उतना लचीला नहीं है (कोई छोटा विवरण नहीं, कोई अधिकता नहीं)। आप उत्पन्न जाल के विस्तार को गतिशील रूप से समायोजित कर सकते हैं, लेकिन यह स्थानांतरण ज्यामिति का कारण बनता है।
तामची

@ तमस्ची, यदि केवल आप ही वह उत्तर प्रदान करते हैं, जो मैं देख रहा था। :)
16

@ मैं देखूंगा कि क्या मैं इस प्रारूप को प्राप्त कर सकता हूं और कुछ और उदाहरण खोज सकता हूं।
तमस्ची
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.