2011-05-22 20 views
13

ऊंचाई ऊंचाई उत्पन्न करने के लिए मैं 2 डी पर्लिन शोर फ़ंक्शन का उपयोग करके अपने सिर को लपेट सकता हूं लेकिन मुझे समझ में नहीं आता कि 3 डी पर्लिन शोर फ़ंक्शन का उपयोग क्यों किया जाएगा। Notch's blog में, उन्होंने Minecraft पर इलाके की पीढ़ी के लिए 3 डी पर्लिन शोर फ़ंक्शन का उपयोग करने का उल्लेख किया। क्या कोई जानता है कि यह कैसे किया जाएगा और यह उपयोगी क्यों होगा? यदि आप x, y पास कर रहे हैं, और z मानों से यह संकेत नहीं मिलता है कि आपके पास पहले से ऊंचाई है?इलाके उत्पन्न करने के लिए 3 डी पेर्लिन शोर फ़ंक्शन कैसे उपयोग किया जाता है?

उत्तर

12

ठीक है, Minecraft खान के बारे में है। तो, नोच ने हल करने की कोशिश की थी: "मैं अपनी दुनिया में छेद/ओवरहैंग कैसे प्राप्त करूं?"

के बाद से 2 डी पर्लिन शोर अच्छा उत्पन्न करता है/पहाड़ियों देख चिकनी, 3 डी पर्लिन शोर अच्छा/चिकनी पहाड़ियों और अपने 3 डी वॉक्सेल ग्रिड में अच्छा छेद उत्पन्न होगा।

कार्यान्वयन here पाया जा सकता है (जबकि यह है कि एक एन आयामी समाधान है)।

अन्य उपयोग-मामलों में एक 3 डी पर्लिन शोर के Z घटक वर्तमान समय पर सेट है। इस तरह आप विभिन्न 2 डी पेर्लिन शोर के बीच एक चिकनी संक्रमण प्राप्त करेंगे और इसका उपयोग द्रव बनावट के लिए आधारभूत रूप के रूप में किया जा सकता है।

+1

लिंक टूट गया है, archive.org शुक्र है 2008 से एक स्नैपशॉट है: http://web.archive.org/web/20081118194515/http://peter.grumpykitty.biz/perlin.html – Tyron

+0

@Tyron धन्यवाद! इसे उत्तर टेक्स्ट – jpaugh

41

लेख का कहना है वास्तव में क्यों वह 3 डी शोर प्रयोग किया है:

मैं एक 2 डी पर्लिन शोर heightmap ... इस्तेमाल किया ... बल्कि सुस्त होने का नुकसान। विशेष रूप से, के लिए इस विधि को किसी भी ओवरहैंग उत्पन्न करने का कोई तरीका नहीं है।

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

+6

हैटर को नफरत होगी! – Brian

4

आप विशेष रूप से फ़ाइलें noise.cpp और map.cpp पर, Minetest स्रोत पर दिखना चाहिए।

+1

में जोड़ा गया प्रोजेक्ट वास्तव में गिटहब - [शोर सीपीपी] (https://github.com/minetest/minetest/blob/master/src/noise.cpp) और [mapgen.cpp] पर होस्ट किया गया है (https://github.com/minetest/minetest/blob/master/src/mapgen_v7.cpp)। – new123456

+0

@ new123456 धन्यवाद! लिंक जोड़ा गया। – jpaugh