कैसे एक 3 डी perlin शोर समारोह इलाके उत्पन्न करने के लिए प्रयोग किया जाता है?


20

मैं ऊंचाई मान उत्पन्न करने के लिए 2d पर्लिन शोर फ़ंक्शन का उपयोग करके अपने सिर को चारों ओर लपेट सकता हूं लेकिन मुझे समझ में नहीं आता है कि 3 डी पर्लिन शोर फ़ंक्शन का उपयोग क्यों किया जाएगा। नॉच के ब्लॉग, http://notch.tumblr.com/post/3746989361/terrain-generation-part-1 में , उन्होंने Minecraft पर इलाके की पीढ़ी के लिए एक 3 डी पर्लिन शोर फ़ंक्शन का उपयोग करने का उल्लेख किया। क्या किसी को पता है कि यह कैसे किया जाएगा और यह क्यों उपयोगी होगा? यदि आप x, y और z मान पास कर रहे हैं, तो इसका मतलब यह नहीं है कि आपके पास पहले से ही ऊँचाई है?

जवाबों:


19

ऊंचाई के नक्शे के लिए 2 डी पेर्लिन शोर अच्छा है, लेकिन इस मामले में ऐसा लगता है कि वह ऊंचाई के नक्शे का उपयोग नहीं कर रहा है। इसके बजाय उसके पास एक 3 डी ग्रिड है, जहां कोई भी सेल खाली हो सकती है। यह गुफाओं और ऐसे संरचनाओं की अनुमति देता है, जहां जमीन की ऊंचाई दिए गए 2 डी स्थान के लिए एक भी मूल्य नहीं है।


14

"ग्राउंड हाइट" के नमूने के बजाय, मैंने शोर मूल्य को "घनत्व" के रूप में माना, जहां 0 से कम कुछ भी हवा होगी, और 0 से अधिक या उससे अधिक कुछ भी ग्राउंड होगा।

सीधे शब्दों में कहें, हर जगह के लिए जहां एक ब्लॉक हो सकता है, एक शोर फ़ंक्शन का मूल्यांकन किया जाता है, और अगर यह> 0 है, तो एक ब्लॉक रखा गया है। पायदान के शोर समारोह को पानी के स्तर से उसके मूल्य में ऊंचाई जोड़कर तिरछा किया जाता है, यही कारण है कि निचले क्षेत्र ज्यादातर ठोस होते हैं (ऊंचाई बड़ी नकारात्मक है, इसलिए ऊंचाई + शोर नकारात्मक भी है) और उच्च क्षेत्र ज्यादातर खाली हैं (ऊंचाई बड़ी सकारात्मक है, इसलिए ऊंचाई + शोर सकारात्मक भी है)।

संभवतः यह तय करने के लिए कुछ अतिरिक्त कीमिया हैं कि किस तरह का ब्लॉक उत्पन्न होता है, और गुफाओं को तराशने के लिए। लेकिन मुझे लगता है कि यह सीधे इस शोर समारोह से संबंधित नहीं है।

यह भी ध्यान दें कि यह विधि Notch के लिए काम करती है क्योंकि Minecraft में एक स्वर-आधारित भूभाग है। यदि आप बहुभुज-आधारित दुनिया में उस बंद को खींचने की कोशिश करते हैं, तो बस शोर समारोह का नमूना पर्याप्त नहीं होगा। आपको नमूने को एक सतह में बदलने के लिए कुछ एल्गोरिथ्म का उपयोग करना होगा, और बहुभुज बनाने होंगे जो इस सतह को अनुमानित करते हैं। ऐसा ही एक एल्गोरिथ्म क्यूब्स मार्च कर रहा है


8

अगर इलाके को गुफा नेटवर्क और ओवरहांग की जरूरत हो तो 3 डी शोर अनिवार्य हो जाता है।

घनत्व की जानकारी से एक आइसोसर्फफेस निकालने के लिए, 2 सबसे लोकप्रिय तकनीकें हैं मार्चिंग क्यूब्स (एमसी), और नई दोहरी कंटूरिंग (डीसी)। चुनी गई विधि के आधार पर आवश्यक डेटा संरचना काफी अलग है।

जैसा कि पहले उल्लेख किया गया है, Geiss का GPU रत्न 3 लेख, GPU पर MC terrains को समझने और लागू करने के लिए एक बहुत ही शिक्षाप्रद प्रारंभिक बिंदु है (ध्यान दें कि उसका MC दृष्टिकोण पूरी तरह से GPU पर चलता है और इसके लिए कम से कम SM4 - GS- सक्षम एक की आवश्यकता होती है)।

क्योंकि MC voxels पर घनत्व डेटा केवल voxel के किनारों पर रह सकता है, क्लासिक MC तेज किनारों की विशेषताओं को संरक्षित किए बिना वॉल्यूम को समोच्च कर सकता है। डीसी इस खामी को सहन नहीं करता है क्योंकि घनत्व की जानकारी को 3 डी बिंदु (क्यूईएफ मिनिमाइज़र) के रूप में व्यक्त किया जाता है, जो प्रत्येक कोने पर वोकेल प्लस साइन के अंदर कहीं भी बिछाता है।

दूसरी ओर, MC स्व-प्रतिच्छेदन चेहरों से पीड़ित नहीं होता है क्योंकि सभी उत्पन्न त्रिकोण उनके संबंधित स्वरों में संलग्न होते हैं, जबकि डीसी को उत्पन्न चेहरों के बीच चौराहों को रोकने के लिए अतिरिक्त संगणना की आवश्यकता होती है। डीसी लेखकों ने इस मुद्दे को उनके एल्गोरिथ्म के एक बेहतर संस्करण में संबोधित किया।

http://www.cs.wustl.edu/~taoju/research/interfree_paper_final.pdf

http://www.cs.berkeley.edu/~jrs/meshpapers/SchaeferWarren2.pdf

यह साथी स्वयं-चौराहों से बचने के लिए उत्तल / अवतल विश्लेषण के आधार पर एक संभावित क्लीनर दृष्टिकोण का भी प्रस्ताव करता है। वह किनारे के अभिविन्यास को संरक्षित करने में मदद करने के लिए बेहतर क्वाड विभाजन नियमों का उपयोग करता है:

http://www2.mae.cuhk.edu.hk/~cwang/pubs/TRIntersectionFreeDC.pdf

क्लासिक एमसी "आउट-ऑफ-बॉक्स" भी नहीं है और अगर अप्रतिबंधित ऑक्ट्रीज़ पर चला जाए तो क्रैक पैचिंग की आवश्यकता हो सकती है। डीसी इस अंतिम मुद्दे से ग्रस्त नहीं है।

यहाँ सबसे अधिक शुद्ध निष्कर्षण तकनीकों का एक बहुत अच्छा और पूर्ण सर्वेक्षण है: http://www.cs.berkeley.edu/~jrs/mesh/

एक ऑक्ट्री / वॉक्सेल दृष्टिकोण आंतरिक रूप से "सीएसजी-फ्रेंडली" है, जो पूरी तरह से "विनाशकारी" गेम स्तर की रणनीति की योजना बनाना आसान बनाता है, लेकिन अगर किसी को एक गेम में यह सब लागू करने की आवश्यकता है, तो ऑक्ट्री की गहराई को भी निराश होना पड़ेगा निर्भर।

यदि पूरा सामान मेमोरी में फिट होता है या सही तरीके से स्ट्रीम किया जाता है, तो डेटा का उपयोग एओ और कंप्यूटिंग भौतिकी / टकरावों के प्रतिपादन के लिए भी किया जा सकता है।


"3 डी शोर अनिवार्य हो जाता है अगर इलाके को गुफा नेटवर्क और ओवरहांग की आवश्यकता होती है।" अनिवार्य? के रूप में, यह गुफाओं और अधिकता उत्पन्न करने का एकमात्र तरीका है? नहीं। मैं 2 डी पेर्लिन के शोर से एक ऊँचाई पैदा कर रहा हूँ और फिर एक और कदम के रूप में गुफाओं और अतिभारों को उकेरता हूं, अधिक प्राकृतिक रूप के लिए। नवोदित युवा खेल डेवलपर्स को यह कहना भ्रामक है कि यह प्रक्रियागत रूप से उत्पन्न दुनिया में गुफाओं और अधिकता उत्पन्न करने का एकमात्र तरीका है।
डोमारिस

5

मेरा अनुमान, उस विशेष उदाहरण में, यह है कि वह किस प्रकार की सामग्री का निर्धारण करने के लिए z मान का उपयोग करता है: शयनकक्ष, पत्थर, गंदगी या हवा।


-3

Minecraft 3 डी इलाके उत्पन्न करने के लिए मार्चिंग क्यूब्स एल्गोरिथ्म का उपयोग करता है। मेरे पास इसके लिए कोई संदर्भ नहीं है, मुझे क्षमा करें। मुझे यकीन नहीं है कि नॉटच किस बारे में बात कर रहे थे जब उन्होंने पेर्लिन शोर समारोह का उल्लेख किया - शायद मार्चिंग क्यूब्स एल्गोरिथ्म के लिए एक बीज। अधिक जानकारी यहाँ:

और एक महान GPU रत्न लेख यदि आप cubes मार्च में रुचि रखते हैं:


2
मार्चिंग क्यूब्स एक स्केलर फ़ील्ड से एक जाल बनाने के लिए एक एल्गोरिथ्म है। इसका मतलब है कि इसके लिए पहले डेटा होना चाहिए, फिर यह डेटा को फिट करने के लिए एक जाल बनाता है। यह डेटा या इलाके पैदा करने के लिए नहीं है।
MichaelHouse

-6
for (int x = 0; x < Width) 
{
  for (int y = 0; y < Depth) 
  {
    for (int z = 0; z < Height) 
    {
      if(z < Noise2D(x, y) * Height) 
      {
        Array[x][y][z] = Noise3D(x, y, z)
      } else {
        Array[x][y][z] = 0
      }
    } 
  } 
} 

2
-1; यहां तक ​​कि आपके द्वारा जोड़े गए स्पष्टीकरण के साथ भी यह एक बहुत बुरा जवाब है, यह स्पष्ट रूप से कोड स्निपेट के उद्देश्य की व्याख्या नहीं करता है और न ही परिणामी डेटा पर इसके अर्थ प्रभाव, और यह उन सवालों के अधिकांश को संबोधित नहीं करता है जो उपयोगकर्ता वास्तव में थे।

Ive कोड को संपादित किया, अब कैसे होगा?
मैक्सिम डीसी

यह बताता है कि इलाके को बनाने के लिए 3 डी शोर का उपयोग कैसे किया जाता है, यह मेरी राय में सही है
मैक्सिम डीसी

फिर अपने उत्तर में इसे समझाएं और उन प्रश्नों को संबोधित करें, जो उपयोगकर्ता के पास थे। अन्यथा यह एक डेडकोड ​​है।
टॉम 'ब्लू' पिडॉक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.