मैं टाइल ग्रिड के लिए नेविगेशन जाल कैसे बना सकता हूं?


18

मैंने वास्तव में अभी तक इसके लिए प्रोग्रामिंग शुरू नहीं की है, लेकिन मैं यह देखना चाहता था कि मैं इस तरह से कैसे करूंगा।

कहो कि मेरे पास टाइल्स का एक ग्रिड है, सभी एक ही आकार के हैं, कुछ ट्रैवर्सेबल हैं और कुछ नहीं हैं। मैं इस ग्रिड से बहुभुज का नेविगेशन जाल कैसे बनाऊंगा?

मेरा विचार गैर-ट्रेस करने योग्य टाइलों को बाहर निकालना और पॉलीगोन बनाने के लिए किनारों से लाइनों का विस्तार करना था ... यही सब मुझे अब तक मिला है। कोई सुझाव?


2
तकनीकी रूप से ग्रिड बहुत हद तक एक नेविगेशन जाल के बराबर है। मुझे संदेह है कि आप वास्तव में ग्रिड और समीपवर्ती वर्गों को अनुकूलित करने का एक तरीका पूछ रहे हैं।
काइलोटन

@ कियलोतन हाँ यही मेरा मतलब है, बस आसन्न बहुभुजों को संयोजित करने का एक तरीका है।
रॉस ने

जवाबों:


28

यहाँ एक तरीके से मैं आरटीएस गेम के लिए नवमेश करते हुए आया हूं। ध्यान दें कि यह होमब्रे है, किसी भी तृतीय-पक्ष उपकरण का उपयोग नहीं किया गया था, मुझे इसे लागू करने और बगफिक्स के बारे में 3 सप्ताह लग गए:

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

परिणाम:

तिलमप नवमेश


1

मेष को आमतौर पर ग्राफ़ के रूप में लागू किया जाता है। यदि आप ग्रिड पर आधारित मानचित्र में पथ-खोज को लागू करना चाहते हैं, तो निम्न कार्य करें:

एक ग्राफ बनाएं जहां प्रत्येक ट्रैवर्सेबल स्क्वायर को एक शीर्ष के रूप में दर्शाया गया है। अनुगामी के रूप में प्रदर्शित आसन्न ट्रैवर्सेबल वर्गों की प्रत्येक जोड़ी के बीच एक किनारा होगा। और आपने कल लिया।


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

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