एक गोलाकार ग्रह और उसके क्षेत्रों को कैसे लोड किया जाए?


15

मैं आंशिक रूप से ग्रहों की खोज से बना एक गेम डिजाइन कर रहा हूं। मैं उनके लिए छद्म यादृच्छिक पीढ़ी का उपयोग करना चाहता हूं, एक परिभाषित बीज से पुन: उत्पन्न करना, जब मुझे हर विवरण को स्टोर करने के बजाय उन्हें लोड करना होगा, जो बहुत भारी होगा। तो मैं बस यादृच्छिक बीज और किसी भी खिलाड़ी द्वारा किए गए संशोधनों को एक फ़ाइल में संग्रहीत करूंगा।

खिलाड़ी को कक्षा से ग्रह को देखने में सक्षम होना चाहिए (विवरण के बहुत कम स्तर के साथ, फिर जमीन पर नीचे जाएं, धीरे-धीरे उस क्षेत्र के विवरण के स्तर को बढ़ाता है जहां वह उतर रहा है, और दूसरे पक्षों पर उतार रहा है) ग्रह, जो खिलाड़ी के देखने के क्षेत्र के बाहर जाते हैं।

अगर मुझे इसे प्लेन ग्राउंड पर करना होता, तो मैं इसे आसानी से स्क्वायर चंक सिस्टम के साथ करता। लेकिन यहाँ समस्या यह है कि ग्रह हैं - लगभग - गोले।

तो एक सटीक बिंदु के चारों ओर जमीन के विवरण (राहत और ग्राउंडेड ऑब्जेक्ट) को लोड करने का सबसे अच्छा तरीका क्या होगा?
मैं पहले से ही दो समाधानों पर है, लेकिन दोनों में एक कमजोर बिंदु है:

1. चौकोर चक्कों में गोलाकार काटना।

चौकोर हिस्सा विधि

एक बार खिलाड़ी मैदान के काफी करीब होने के बाद, मुझे बस उसकी स्थिति से निकटतम वर्गों के विवरण में सुधार करना होगा।
यदि यह पर्याप्त नहीं है, तो मैं अभी भी प्रत्येक वर्ग को उप-वर्गों में काट सकता हूं जब खिलाड़ी मैदान पर हों या वास्तव में मैदान के करीब हों।

लेकिन जैसा कि आप तस्वीर पर देख सकते हैं, एक समस्या है अगर खिलाड़ी एक ध्रुव पर उतरने की कोशिश करता है: वर्ग बहुत पतली आयताकार हो जाते हैं, या अंतिम पंक्ति के लिए त्रिकोण भी होते हैं, और इसके अलावा इस तथ्य के लिए कि वे लोड करने के लिए कई होंगे, पीढ़ी विकृत दिखाई देगी।

2. एक icosahedron से शुरू।

icosahedron विधि

यहाँ, मैं खिलाड़ी की स्थिति के आसपास त्रिभुज टेसलेशन को बढ़ा सकता था जब वह पास हो रहा हो।

लेकिन मुझे नहीं पता कि खिलाड़ी की स्थिति की तुलना में पास के त्रिकोणों का पता कैसे लगाया जाए। मैंने सुना है कि कार्टेशियन निर्देशांक उस मामले में उपयोगी हो सकते हैं, लेकिन मुझे नहीं पता कि उनका उपयोग कैसे किया जाए।


मैं इसके लिए C ++ / OpenGL का उपयोग कर रहा हूं, इसलिए यहां उत्पन्न करने और लोड करने की मुख्य बात सतह की राहत और रंग / बनावट का प्रतिनिधित्व करने वाले कोने हैं।


इससे पहले कि मैं लिखना शुरू करूं, क्या आपकी दुनिया एक क्षेत्र है? क्या आप एक गोले पर एक ग्रिड लगाने की कोशिश कर रहे हैं, जहां प्रत्येक ग्रिड में एक फ़ाइल को सहेजे गए गुण हैं?
एलेक टीले

@AlecTeal मैं एक ग्रह की नकल करने की कोशिश कर रहा हूं। तो यह विश्व स्तर पर एक क्षेत्र है। और मुख्य समस्या यह है कि खिलाड़ी किसी भी बिंदु पर, एक ध्रुव पर या भूमध्य रेखा पर मैदान में उतरने की कोशिश कर सकता है।
Aracthor

2
इसलिए .... क्या आपने "गोलाकार विश्व खेल इंजन" की खोज की है क्योंकि वहां कार्यान्वयन का भार है। वे काम क्यों नहीं करते? इसके अतिरिक्त यही कारण है कि हमारे पास क्यूब मैप्स हैं, वे इस कारण से एक क्षेत्र के लिए किसी भी टोपोलॉजिकल मैनिफोल्ड होमोमोर्फिक पर मानक चार्ट हैं!
एलेक टीले

1
क्वाड क्षेत्र विकल्प का भी मूल्यांकन करने का सुझाव
dnk drone.vs.drones

maths.kisogo.com/index.php?title=Notes:Spherical_coordinates प्रारंभिक मसौदा। चित्रों की जरूरत है और समाप्त किया जाना है।
एलेक टील

जवाबों:


5

ठीक है, इसलिए मैंने इसे यहाँ लिखा:

http://www.maths.kisogo.com/index.php?title=Notes:Spherical_coordinates

(मुझे गणित-मार्कअप की आवश्यकता थी और यह वास्तव में काफी लंबा है)


दस्तावेज लगाना

दस्तावेज़ कई गुना की धारणा को शुरू करने से शुरू होता है, यह कई गुना है, जहां इसके टुकड़े "होमियोमॉर्फिक" हैं (मूल रूप से: आर के रूप में एक ही) n ^ (R ^ 2) x / y विमान है, जैसा कि आप कर सकते हैं जानना)

एक चार्ट कुछ (संभवतः सभी को कवर करता है, हालांकि एक क्षेत्र के मामले में यह कई गुना बढ़ सकता है)।

लेख में मैं कोणों को संरक्षित करने वाले क्षेत्र के लिए 4 चार्ट विकसित करता हूं, यही है कि वे नियमित दूरी रखते हैं।

जैसा कि आप एक क्षेत्र पर अंक के लिए निर्देशांक दे वास्तव में काफी मुश्किल है! हम इसके बजाय क्या करते हैं (हालांकि उदाहरण में एक सर्कल पर) प्रत्येक बिंदु को फॉर्म (i, x, y) का एक निर्देशांक देते हैं जहां मैं एक क्षेत्र के लिए 1 और 6 के बीच की संख्या है, एक सर्कल के लिए 1 और 4। यह चार्ट संख्या है।

X और y उस चार्ट पर कोणों का संदर्भ देते हैं (या यदि यह एक चक्र है तो x)।

एक गोले के 6 चार्ट ऊपर / नीचे गोलार्ध, बाएं / दाएं और सामने / पीछे गोलार्ध हैं।


निर्देशांक

अब आप evey बिंदु को एक "अच्छा" समन्वय दे सकते हैं जो अच्छी तरह से व्यवहार किया जाता है। गणितीय शब्दों में, चार्ट के डोमेन "खुले" नक्शे हैं, इसका मतलब है कि कुछ सकारात्मक संख्या मौजूद है जैसे कि प्रत्येक बिंदु के चारों ओर एक गेंद भी सेट में है। उदाहरण के लिए रेंज (0,1) (वह सेट जिसमें x होता है यदि 0 <x <1) खुला है, किसी भी p को (0,1) में ले लें (उदाहरण के लिए 0.001) तो एक संख्या है (उदाहरण के लिए 0.0005) 0.001 के 0.0005 के भीतर किसी भी बिंदु (0,1) में भी है।

इसका मतलब यह है कि आप चार्ट के माध्यम से निर्देश पारित कर सकते हैं।

अब हमारे द्वारा विकसित चार्ट में ओवरलैप की 45 डिग्री है। इसका मतलब है आप निर्देशांक (i, एक्स, वाई) आप सुरक्षित रूप से फार्म के अंक निर्दिष्ट कर सकते हैं पर एक सुविधा है (मैं, x + a, y + ख) जब तक aऔर b(डिग्री में) -45 और +45 बीच हैं

फॉर्म का कोई भी बिंदु (i, x + a, y + b) बिना समस्या के "सामान्य" 3-आयामी स्थान में आसानी से बदल सकता है।


कार्यान्वयन

अब आपके पास एक क्षेत्र पर किसी चीज़ के लिए निर्देशांक संग्रहीत करने का एक तरीका है, और इन निर्देशांक के साथ क्षेत्रों के बड़े swaths को निरूपित करते हैं, वे भी निर्देशांक की तरह व्यवहार करते हैं, वे उदाहरण के लिए खुले हैं (जो एक समस्या है यदि आप इसके बजाय 2 कोणों का उपयोग करते हैं)

आप अब पूरी तरह से "कैसे एक नियमित क्षेत्र बनाने के लिए" जवाब छोड़ सकते हैं क्योंकि आपको बस 6 विमानों को करना है, और सुनिश्चित करें कि उनमें से किनारों को संरेखित करें (जो कि तुच्छ है) और परिणाम है:

आप निर्देशांक का उपयोग करने के लिए आसान के साथ एक अच्छा क्षेत्र होगा

कोई प्रश्न कृपया टिप्पणी करें, मैंने थोड़ा पूर्व ज्ञान ग्रहण करने की कोशिश की है। मैं लोगों को पढ़ाने के लिए भी नया हूं


@Alec_Teal मैं आपके उत्तर पर हूँ क्योंकि आपने इसे पोस्ट किया है, यह समझने के लिए जटिल और कठिन है (मैं बहुत गणित के फार्मूले का उपयोग नहीं कर रहा हूँ) लेकिन मुझे लगता है कि मुझे समझना होगा ... क्या आपका तरीका वास्तव में क्यूब-आधारित से अलग है जैसा कि ऊपर वर्णित है? मुझे समझ में नहीं आया कि क्या आपके "चार्ट" वर्ग अनुमान या कुछ और हैं ...
13

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

@Alec_Teal मैंने इसे मान्य किया, लेकिन मुझे अभी भी नहीं लगता कि मुझे सब कुछ मिला है। लेकिन चलो एक चैट रूम में इस चर्चा को जारी रखें ।
Aracthor

13

जैसा कि आप पहले ही दिखा चुके हैं, इस समस्या के कई समाधान हैं, लेकिन कोई भी 100% आदर्श नहीं है। गोलाई मुश्किल है।

घन आधारित

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

(यह क्या एलेक टीले और डीएनके ड्रोन है ।vs.drones ऊपर टिप्पणियों में वर्णन कर रहे हैं)

एक घन के आधार पर क्षेत्र विभाजित

( इस पोस्ट से छवि जो LoD के लिए क्यूबिक प्रतिनिधित्व का वर्णन करती है )

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

विशिष्ट मानचित्रण दृष्टिकोण को ग्नोमोनिक प्रक्षेपण कहा जाता है , और इसमें अभी भी एक घनत्व बेमेल समस्या है जैसा कि आप ऊपर की छवि में देख सकते हैं। घन चेहरे के केंद्रों की तुलना में घन कोनों के पास अधिक घना है। यदि एकरूपता महत्वपूर्ण है, तो आप इसे सही मैपिंग फ़ार्मुलों के साथ कम कर सकते हैं, लेकिन यह आमतौर पर मैपिंग को उल्टा करना कठिन बनाता है।

एकरूपता में सुधार के लिए मैपिंग फ़ंक्शन का उपयोग करना

सभी मामलों में, आपको अभी भी कोनों में कोणीय विकृति होगी, जहां 90 डिग्री के कोण के साथ चार वर्गों का एक साधारण ग्रिड चौराहा 120-डिग्री कोण के साथ 3 rhombuses की बैठक बन जाता है।

विंशतिफलक आधारित

मेरा व्यक्तिगत पसंदीदा aproach icosahedral संस्करण होगा जिसे आपने वर्णित किया है, क्योंकि यह शिखर कोणीय विरूपण को यथासंभव छोटा बनाता है। जहाँ त्रिकोणीय ग्रिड में 60 त्रि-कोण कोणों पर छह त्रिभुज मिलेंगे, वहीं icosahedron vertices में 5-त्रिभुज बैठक 72-डिग्री कोण पर होती है। इसलिए हर एक को घन उदाहरण में वर्गों की तुलना में कम विरूपण है।

यह क्यूब संस्करण के वर्गों के रूप में काफी परिचित क्षेत्र नहीं है, जो शायद इसलिए लोकप्रिय नहीं है। इसके माध्यम से काम करने में थोड़ा अधिक गणित लगता है।

पास के बिंदुओं की पहचान करना उतना मुश्किल नहीं है जितना कि यह दिखाई दे सकता है। किसी भी icosahedron- आधारित जियोडेसिक क्षेत्र को एक नियमित त्रिकोणीय ग्रिड पर समतल किया जा सकता है:

एक नियमित त्रिकोणीय ग्रिड पर समतल भूतापीय tessellations एक त्रिकोणीय ग्रिड पर एक icosahedron का नेट

और एक नियमित त्रिकोणीय ग्रिड को एक वर्ग ग्रिड की तरह माना जा सकता है, जैसा कि यहां चर्चा की गई है

त्रिकोणीय-वर्ग ग्रिड समरूपता

एक बार जब आप यह निर्धारित कर लेते हैं कि आप किस आइकोसहेड्रॉन का चेहरा देख रहे हैं (जो कि आइकोसैहाइडल जाली के खिलाफ एक रेकॉस्ट के साथ किया जा सकता है - मुझे उस हिस्से को सरल बनाने के लिए किसी भी चतुर गणितीय तरीके का पता नहीं है), परिचित का उपयोग करके परिवेश को भरा जा सकता है ग्रिड ट्रैवर्सल। :)

संपादित करें:

यदि आप क्लास-आई जियोडेसिक का उपयोग करते हैं, तो आप अपने ग्रहों को पाँच आयताकार चार्टों में स्तर चोंच / बनावट / ऊँचाई के लिए कुशलतापूर्वक जमा कर सकते हैं, छह वर्ग चार्टों के समान जो आप घन-आधारित संस्करण के भंडारण के लिए उपयोग करेंगे:

एक भू-आकृति को आयताकार चार्ट में खोलना

(यह एक और जवाब में फजी लॉजिक द्वारा उठाए गए चिंता को संबोधित करने में मदद कर सकता है। यह संभव भी है लेकिन कक्षा-दो के भू-विज्ञान के लिए थोड़ा अधिक जटिल है। मैंने कक्षा-तृतीय की जांच नहीं की है)

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


1
यहाँ कुछ अच्छा सामान है। मैं +1 करूंगा लेकिन बाद में एक उत्तर लिखने की मेरी योजना है (जब मैं भी उत्तर दूंगा तो मतदान के शुरुआती चरणों से बाहर रहने की कोशिश करूंगा)। मेरी एकमात्र टिप्पणी यह ​​होगी कि यह दृष्टिकोण सतह के मॉडलिंग की तुलना में क्षेत्रों को प्रस्तुत करने के लिए बेहतर है
एलेक टीले

बस आप जिज्ञासु हैं, मैंने अब अपना जवाब समाप्त कर दिया है।
एलेक टीले

4

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

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

क्वाड-स्फ़ेयर में पिंच पॉइंट्स हैं लेकिन पर्याप्त टेसेलेशन के साथ आप उन्हें किसी भी तरह नहीं देख पाएंगे। तब आप बनावट को मैप कर सकते हैं और डीएलओडी को प्रभावी ढंग से लागू कर सकते हैं जैसे कि प्रत्येक क्षेत्र (छोटा) एक वर्ग ग्रिड है जिसमें थोड़ी समस्या है। यह एक icosasphere की तुलना में लागू करने के लिए सरल है और गणना और संसाधनों दोनों में अधिक कुशल होगा।

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


0

मैं प्रोग्रामिंग का कोई विशेषज्ञ नहीं हूं, लेकिन आप किसी तरह की जांच कर सकते हैं। जब आप एक सुरक्षा चौकी के माध्यम से साफ हो जाते हैं, तो निश्चित रूप से एनीमेशन के साथ, ग्रह की सतह लोड हो सकती है, और इसके विपरीत।


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