प्रक्रियात्मक ग्रह, ऊँचाई और बनावट


19

मैं वर्तमान में एक OpenGL प्रक्रियात्मक ग्रह जनरेटर पर काम कर रहा हूं। मैं एक अंतरिक्ष यान के लिए इसका उपयोग करने की उम्मीद करता हूं, जो खिलाड़ियों को किसी ग्रह की सतह तक नीचे जाने की अनुमति नहीं देगा, इसलिए मैंने संबंधित कुछ भी नजरअंदाज कर दिया है। फिलहाल मैं VBO के साथ एक क्यूब खींच रहा हूं और एक गोले पर मैप कर रहा हूं।

मैं सबसे अधिक फ्रैक्टल ऊँचाई पैदा करने वाली तकनीकों से परिचित हूँ और पहले से ही अपने मिडपॉइंट विस्थापन के अपने संस्करण को लागू कर चुका हूँ (इस मामले में उपयोगी नहीं जिसे मैं जानता हूँ)।

मेरा प्रश्न यह है कि ऊंचाई को संसाधित करने का सबसे अच्छा तरीका क्या है। मैंने कामवासना को देखा है जो मुझे तुलनीय ऊँचाई / बनावट बनाने की अनुमति देता है, लेकिन जहाँ तक मैं देख सकता हूँ मुझे इस तरह एक जाल उत्पन्न करने की आवश्यकता होगी ।

स्पष्ट छोडकर।

क्या कोई मुझे लेने के लिए सबसे अच्छे मार्ग पर सलाह दे सकता है?

किसी भी निवेश की बहुत सराहना की जाएगी।

जवाबों:


18

सबसे पहले, मुझे यकीन नहीं है कि आप एक ऊंचाई के नक्शे (यानी ज्यामिति विस्थापन) को क्यों लागू करना चाहते हैं यदि लोग भूमि पर नहीं जा पाएंगे, तो यह सामान्य नक्शे या कुछ के लिए अधिक कुशल लगता है।

इसके साथ ही कहा, आप जो चाहते हैं, वह एक मनमानी (x, y, z)से एक (u, v)समन्वय में बदलना है , जो कि तुच्छ है। कोई क्यूबैप की जरूरत नहीं।

वैकल्पिक शब्द

वैकल्पिक शब्द

  1. प्रत्येक (u, v)टेक्सेल में एक ऊंचाई (ऊंचाई RGB = height) और एक स्थिति होती है (x, y, z) = pos।
  2. ढूँढें और स्थिति को सामान्य, NORMAL(x, y, z) = N।
  3. नई क्रिया = pos+N*height।

यह एक उच्च tessellation के साथ बेहतर काम करेगा। libnoiseअपने ऊंचाई के लिए उचित गोलाकार मानचित्रण का भी उपयोग करें , जो कुछ इस तरह दिखाई देगा (लेकिन काले और सफेद):

वैकल्पिक शब्द


2

मैंने खुद कभी यह कोशिश नहीं की है, लेकिन यह गोलाकार परिदृश्य उत्पन्न करने के लिए एक बहुत ही दिलचस्प तरीका है। http://freespace.virgin.net/hugo.elias/models/m_landsp.htm


मैं इस दृष्टिकोण के लिए बहुत खुश पाया github.com/williame/GlestNG
— विल

1

मिडपॉइंट विस्थापन ऊंचाई मानचित्रण शुरू करने के लिए एक अच्छी जगह है। ओपी, आपको क्यों लगता है कि यह नहीं है?

ओपी ग्रह की सतह को क्यूबैप के रूप में मॉडल करना अच्छा है, क्योंकि किसी भी फ्लैट मैप (उदाहरण के लिए व्यापारी प्रक्षेपण) में विकृतियां होने वाली हैं जो बदसूरत और जटिल हैं, गणित।

अगर मैं ओपी होता, तो मैं सबसे पहले बड़े पैमाने पर ग्रह ज्यामिति को भूल जाता। मैं एक शावक बनाऊंगा जहाँ प्रत्येक चेहरा 2 ** N + 1 पिक्सेल (2,3,5,9,17,33 ...) है और प्रत्येक टेक्सेल एक ऊँचाई [0..N) को घेरता है जहाँ 0 की ऊँचाई है अपेक्षित निम्नतम खाई और N ग्रह पर अपेक्षित उच्चतम पर्वत की ऊँचाई है।

मैं तब घन के आठ कोने के लिए यादृच्छिक ऊंचाइयों की गणना करता हूं, और उन्हें घन मानचित्र के छह वर्गों में प्रचारित करता हूं, ताकि प्रत्येक शीर्ष तीन बार दिखाई दे।

जैसा कि मैंने किनारों के मध्य बिंदु के लिए भिन्नात्मक ऊंचाइयों को पुन: उत्पन्न किया है, मैं चेहरे के किनारे के कोने को दूसरे चेहरे पर फैलाना सुनिश्चित करूंगा जो उन्हें साझा करता है।

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

रनटाइम के दौरान, मैं शायद एक क्वाड प्रस्तुत करूंगा जो ग्रह के प्रक्षेपण को स्क्रीन पर कवर करता है, और यह पता लगाने के लिए कि क्या मैं ग्रह से टकराया हूं और कहां मिल रहा हूं, पिक्सेल शेडर में एक एकल किरण-क्षेत्र प्रतिच्छेदन परीक्षण करता हूं। यकीन है कि एक उच्च tessellated क्षेत्र मॉडल rasterizing धड़कता है, और एक अच्छा चिकनी बढ़त भी मिलता है।


1

मिडपॉइंट विस्थापन शोर, पिक्सेल के पूर्ण देशांतर द्वारा स्केल किए गए अधिकतम विस्थापन के साथ एक गोलाकार शोर मानचित्र जल्दी से उत्पन्न कर सकता है। ऊंचाई, ढलान, और सूरज की रोशनी या देशांतर पर ले जाने वाले रंग तालिकाओं का उपयोग ग्रह को स्वचालित रूप से छाया देने के लिए किया जा सकता है।

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