আমি টাইল গ্রিডের জন্য কীভাবে নেভিগেশন জাল তৈরি করতে পারি?


18

আমি আসলে এটির জন্য এখনও প্রোগ্রামিং শুরু করি নি, তবে আমি কীভাবে যাইহোক এটি কীভাবে করব তা দেখতে চেয়েছিলাম।

বলুন আমার কাছে টাইলসের গ্রিড রয়েছে, একই আকারের সমস্ত, কিছু ট্র্যাভারেবল এবং কিছু না। এই গ্রিড থেকে বহুভুজগুলির নেভিগেশন জাল তৈরি সম্পর্কে আমি কীভাবে যাব?

আমার ধারণাটি ছিল অ-ট্র্যাভারেবল টাইলস নিয়ে যাওয়া এবং বহুভুজগুলি তৈরি করার জন্য সেখান থেকে প্রান্তগুলি প্রসারিত করা ... এটাই আমি এ পর্যন্ত পেয়েছি। কোন পরামর্শ?


2
প্রযুক্তিগতভাবে গ্রিডটি নেভিগেশন জালের তুলনায় বেশ সমান। আমার সন্দেহ হয় আপনি প্রকৃতপক্ষে গ্রিড এবং coalesce সংলগ্ন স্কোয়ারগুলি অনুকূল করতে একটি উপায় জিজ্ঞাসা করছেন।
কাইলোটন

@ কাইলোটান হ্যাঁ এটাই আমার অর্থ হ'ল সংলগ্ন বহুভুজ একত্রিত করার একমাত্র উপায়।
রস হেজে

উত্তর:


28

আরটিএস গেমের জন্য নবমেশ করার সময় আমি যে পদ্ধতিগুলি নিয়ে এসেছি তার মধ্যে একটি। মনে রাখবেন এটি হোমব্রিউ, কোনও তৃতীয় পক্ষের সরঞ্জাম ব্যবহার করা হয়নি, এটি প্রয়োগ করতে এবং বাগফিক্স করতে আমার প্রায় 3 সপ্তাহ লেগেছিল:

  1. বাধা টাইলসকে রূপরেখায় রূপান্তর করতে মার্চিং স্কোয়ার অ্যালগরিদম ব্যবহার করুন । মনে রাখবেন মানচিত্রের প্রান্তগুলিও একটি বাহ্যরেখা এবং এটিও অন্তর্ভুক্ত করা দরকার।
  2. ডগলাস-পিউকার অ্যালগোরিদম (নীচের চিত্রের বেগুনি রেখা) ব্যবহার করে রূপরেখার পয়েন্টের সংখ্যা হ্রাস করুন
  3. ডেলাউন ট্রায়াঙ্গুলেটে সমস্ত পয়েন্ট ফিড করুন (সর্বাধিক অভিন্ন ত্রিভুজ পেতে)
  4. খালি অঞ্চলগুলিতে এবং মানচিত্রের প্রান্তগুলিতে অতিরিক্ত পয়েন্ট যুক্ত করুন (আরও বেশি নবমেশ পেতে)
  5. রূপরেখার সাথে মেলে ধরতে ডেলাউনাইয়ের দ্বারা উত্পাদিত বাধার রূপরেখা এবং ফ্লিপ বহুভুজগুলি দেখুন। - প্রায়শই ডেলাউনয়ে আপনার বাহ্যরেখাগুলি (লাল) এর সাথে মেলে না এমন ত্রিভুজগুলি (ধূসর) রাখতে পারে, তারপরে আপনাকে সেগুলি সনাক্ত এবং ফ্লিপ করতে হবে। এগুলি আবার বহুভুজের সাথে সংযুক্ত করে এটিকে রূপরেখায় ভাগ করুন এবং ম্যানুয়ালি এটিকে ত্রিভুজ করুন এখানে চিত্র বর্ণনা লিখুন
  6. অন্তর্নিহিত ক্লিপ বাধা - বাধার মধ্যে থাকা বহুভুজগুলি সরান (উপরের চিত্রটিতে গোলাপী)
  7. আপনার যেমন প্রয়োজন তেমন ত্রিভুজ এবং শীর্ষ কোণের মধ্যে কানেক্টিভিটি ডেটা পূরণ করুন - এটি আপনার নবমেশ।

ফলাফল:

টাইলম্যাপ নবমেশ


1

মেশগুলি সাধারণত গ্রাফ হিসাবে প্রয়োগ করা হয়। আপনি যদি গ্রিডের ভিত্তিতে মানচিত্রে পাথ সন্ধানের প্রয়োগ করতে চান তবে নিম্নলিখিতটি করুন:

এমন একটি গ্রাফ তৈরি করুন যেখানে প্রতিটি ট্র্যাভারেবল বর্গক্ষেত্রটি একটি শীর্ষবিন্দু হিসাবে উপস্থাপিত হয়। শিখর হিসাবে উপস্থাপিত সংলগ্ন ট্র্যাভার্সেবল স্কোয়ারগুলির প্রতিটি জুটির মধ্যে একটি কিনারা থাকবে। এবং তুমি করে ফেলেছ.


1
সাধারণত নভেমেশগুলি কার্যকরভাবে প্রয়োগ করা হয় না। নবমেশের উদ্দেশ্য (এবং, আমি কল্পনা করি যে, এখানে প্রশ্নকর্তা এমনকি তাদের প্রশ্ন জিজ্ঞাসা করার কারণটি) গ্রাফটিকে নীচে ন্যূনতম প্রয়োজনীয় সংখ্যায় বহুভুজের (সাধারণত ত্রিভুজ) অপ্টিমাইজ করা যা উভয়ের সংখ্যা হ্রাস করতে সর্বাধিক দরকারী স্পেস ছড়িয়ে দেয় একটি ভাল পথ খুঁজে পেতে প্রয়োজনীয় পদক্ষেপগুলি এবং জালটিকে সংজ্ঞায়িত করতে মেমরির পদক্ষেপের প্রয়োজন। একটি কাঁচা বাস্তবায়ন উভয়ই আরও এক টন মেমরি খাবে এবং মূল্যবান এআই প্রসেসিংয়ের সময় নষ্ট করবে।
গুরুগাদুরজেন

আপনি সঠিক. অবশ্যই ডেসিমেশন (বহুভুত হ্রাস) একটি যুক্তিসঙ্গত এবং পছন্দসই অপ্টিমাইজেশন। এটি ঠিক যে আপনি যখন অপের প্রশ্নটি পড়েন তখন আপনি বুঝতে পারেন যে তিনি কেবল গ্রিডকে গ্রাফে পরিণত করতে চান।
উলফডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.