अधिकांश पेर्लिन शोर एल्गोरिदम आपको किसी भी स्थान पर शोर मूल्य को पुनः प्राप्त करने की अनुमति देगा, जैसे कुछ noise(x,y,z)
। यह चंक आधार पर एक चंक पर शोर उत्पन्न करने के लिए काफी तुच्छ बनाता है। आपको केवल चंक स्थिति के बजाय वैश्विक स्थिति को पारित करने की आवश्यकता है।
for(int i = 0; i < CHUNKMAX_X; i++)
for(int j = 0; j < CHUNKMAX_Y; j++)
for(int k = 0; k < CHUNKMAX_Z; k++)
if(isSolid(perlinNoise.get(chunkPosition.x + i,
chunkPosition.y + j,
chunkPosition.z + k))
thisChunk[i,j,k] = new Voxel(solid);
else
thisChunk[i,j,k] = new Voxel(air);
तो आप देख सकते हैं, हम ठोड़ी सीमा के ऊपर इलाके पैदा कर रहे हैं, ठुड्डी की सीमा पर पुनरावृत्ति करके, और यह देखने के लिए जाँच कर रहे हैं कि वैश्विक स्थिति ठोस है या नहीं। यह संभवतः वही पद्धति है जिसका उपयोग आप सामान्य रूप से इलाके उत्पन्न करने के लिए कर रहे हैं।
perlinNoise.get
एक वैश्विक स्थिति लेता है और अपना घनत्व लौटाता है। जहां isSolid
सिर्फ यह देखने के लिए एक साधारण परीक्षा होगी कि क्या ठोस के लिए क्वालीफाई करने के लिए वोक्स "पर्याप्त सघन" है या नहीं।
perlinNoise.get
एक साधारण शोर एल्गोरिथ्म की तुलना में अधिक जटिल हो सकता है। आप अपनी दुनिया में स्वर की गहराई के आधार पर जांच कर सकते हैं। उदाहरण के लिए, यदि आपके द्वारा तय किया गया वोक्स नीचे है, "निरपेक्ष बेस ग्राउंड लेवल" तो यह घनत्व वापस करने के लिए पर्लिन वर्म एल्गोरिथ्म का उपयोग कर सकता है, यदि यह निरपेक्ष बेस से ऊपर है, तो यह आपको देने के लिए एक सामान्य घनत्व फ़ंक्शन का उपयोग कर सकता है। अधिक विविध भूभाग। मैं हालांकि दोनों के बीच कुछ सम्मिश्रण करने की सलाह दूंगा।
विभिन्न पेर्लिन शोर कार्यों का संयोजन बस कुछ है जिसे आपको खेलना है और देखना है कि क्या काम करता है। अपने वातावरण को स्थापित करना सबसे अच्छा है ताकि आप अपने खेल को फिर से लोड करने की आवश्यकता के बिना कुछ मूल्यों को बदल सकें और इलाके को गर्म-गर्म कर सकें। खुश प्रयोग।