অবশেষে, অনেক গবেষণা করার পরে আমি এই সিদ্ধান্তে পৌঁছাতে পারি যে, কেউ কেউ আগে বলেছিল, সর্বজনীন "সেরা" পদ্ধতি নেই। তবে আমার গবেষণা আমাকে নিম্নলিখিত বিষয়গুলির জ্ঞানের দিকে পরিচালিত করেছে:
জাল উপর নির্ভর করে আপনি অবশেষে ব্যবহার করবেন:
- স্পিরিফাইড কিউব: চতুর্ভুজ বাস্তবায়নের সাথে যে কোনও এলওডির পদ্ধতি ঠিক কাজ করবে, আপনাকে কেবল মুখের মধ্যে সীমান্তের মতো বিশেষ ক্ষেত্রে যত্ন নিতে হবে, তবে আপনার চতুষ্কোণীর প্রতি স্তরের প্রতিবেশীর কাছে একটি পয়েন্টার থাকতে হবে।
- অন্য যে কোনও: আমি মনে করি যে রোম (বিডিএএম, সিএবিটিটি বা রুস্টিক হিসাবে নতুন সংস্করণ ২.০ বা অন্য কোনও এক্সটেনশন) ভাল করবে, তবে এই অ্যালগরিদমগুলি সাথে কাজ করা শক্ত, আরও মেমরির প্রয়োজন এবং কিউব সহ অন্যান্য অ্যাপ্রোচগুলির চেয়ে কিছুটা ধীর।
অনেকগুলি LOD পদ্ধতি রয়েছে যা ভালভাবে ফিট করতে পারে তবে আমার ব্যক্তিগত শীর্ষ 5 টি হ'ল:
- অবিচ্ছিন্ন দূরত্ব-নির্ভরশীল এলওডি (সিডিএলওডি)
- জিপিইউ ভিত্তিক জিওমিটি ক্লিপম্যাপস (জিপিইউজিসিএম)
- ছিটেড এলওডি
- ওপেনজিএল জিপিইউ টেসেললেশন সহ রেন্ডারিং টেরেইনস (বই: ওপেনজিএল অন্তর্দৃষ্টি, অধ্যায় 10)
- জ্যামিতিক মিপম্যাপিং
প্রত্যেকে টেরেইনগুলি রেন্ডার করার জন্য একটি অনন্য উপায় সরবরাহ করে, উদাহরণস্বরূপ, সিএডিএলওডের শেডারগুলি (জিএলএসএল বা এইচএলএসএল) ব্যবহার করে খুব সহজ বাস্তবায়ন রয়েছে তবে এটি সিপিইউতে প্রয়োগ করতে সক্ষম (লেগ্যাসি হার্ডওয়ারের জন্য) তবে প্ল্যানেট রেন্ডারিংয়ের লক্ষ্যটি বিস্ফোরিত করা আধুনিক জিপিইউতে সেরা, সুতরাং আপনি যখন নিজের জিপিইউ চেপে ধরতে চান তখন জিপিইউজিসিএমই সেরা। তারা উভয়ই ডেটা-ভিত্তিক, প্রক্রিয়াভিত্তিক বা মিশ্র (স্থির ডেটা বা উচ্চতা ম্যাপের ভিত্তিতে ভূখণ্ড এবং পদ্ধতিগত কাজের সাথে যুক্ত বিশদ) সাথে বৃহত অঞ্চলগুলির রেন্ডারিংয়ের সাথে খুব ভালভাবে কাজ করে।
এছাড়াও বুনিয়াদি জ্যামিতিক ক্লিপম্যাপ পদ্ধতিতে গোলকীয় প্রসার উপস্থিত রয়েছে তবে কিছু সমস্যা আছে কারণ উচ্চতা ম্যাপের পরিকল্পনাকারী নমুনাগুলিকে গোলাকার স্থানাঙ্কগুলি ব্যবহার করে প্যারামিট্রাইজ করতে হবে।
অন্যদিকে ছিন্নযুক্ত এলওডি লেগ্যাসি হার্ডওয়ারের জন্য উপযুক্ত, কাজ করার জন্য কোনও জিপিইউ সাইড গণনা প্রয়োজন নেই, এটি বড় ডেটাসেটের জন্য উপযুক্ত তবে বাস্তব সময়ে প্রক্রিয়াগত ডেটা পরিচালনা করতে পারে না (সম্ভবত কিছু সংশোধন করে, এটি পারে)
ওপেনজিএল ৪.০ প্রকাশিত হওয়ার পরে, টেসেললেশন শেডারগুলি ব্যবহার করা অন্য কৌশল, খুব নতুন, আমার মতে এটি সেরা হতে পারে তবে আমরা প্ল্যানেট রেন্ডারিংয়ের কথা বলছি, আমরা এমন একটি সমস্যার মুখোমুখি হলাম যা অন্যান্য পদ্ধতিগুলি খুব সহজভাবে পরিচালনা করতে পারে এবং এটি হ'ল নির্ভুলতা সম্পর্কে।
আপনি যদি না চান কেবল আপনার সূক্ষ্মতাটি উল্লম্বের মধ্যে 1 কিলোমিটার হতে হবে তবে টেসলেসেশন শেডারে যান। এই পদ্ধতির সাথে সত্যই বড় ভূখণ্ডের সমস্যাটি হ'ল জিটারটি সমাধান করা একরকম কঠিন (বা কমপক্ষে আমার জন্য, যেহেতু আমি টেসলেসেশন শেডারে নতুন)।
জিওমিপম্যাপিং একটি দুর্দান্ত কৌশল, চতুর্ভুজ গাছের সুবিধা গ্রহণ করে এবং একটি কম অনুমিত পিক্সেল ত্রুটি রয়েছে তবে গ্রহ সংক্রান্ত রেন্ডারিংয়ের জন্য আপনাকে কমপক্ষে 16+ স্তরের বিশদ বিবরণ নির্ধারণ করতে হবে, এর অর্থ আপনার প্রয়োজন হবে (স্টিচিং ড্রিপোসেসের জন্য) কিছু অতিরিক্ত প্যাচ বিভিন্ন স্তরের সাথে সংযোগ স্থাপন এবং আপনার প্রতিবেশীর স্তরের যত্ন নিতে, এটি সমাধান করা বিশেষত 6 টি ভূখণ্ডের মুখগুলি ব্যবহার করে ক্লান্তিকর হতে পারে।
আরও একটি নিজস্ব পদ্ধতি রয়েছে যা খুব নিজস্ব নিজস্ব: "প্ল্যানেটারি টেরিনের জন্য প্রজেক্টিভ গ্রিড ম্যাপিং" ভিজ্যুয়ালাইজেশনের জন্য দুর্দান্ত, তবে এর অসুবিধাগুলিও রয়েছে, যদি আপনি আরও জানতে চান তবে লিঙ্কটিতে যান।
সমস্যা:
জিটার : আজকের বেশিরভাগ জিপিইউ কেবল 32-বিট ভাসমান-পয়েন্টের মানগুলিকে সমর্থন করে, যা গ্রহীয় অঞ্চলে বড় অবস্থানগুলিতে হেরফের করার জন্য পর্যাপ্ত নির্ভুলতা সরবরাহ করে না। জিটারটি ঘটে যখন দর্শক জুম করে এবং ঘোরানো বা সরে যায়, তখন বহুভুজগুলি পিছনে পিছনে বাউন্স শুরু করে।
এর সেরা সমাধান হ'ল "জিপিইউ ব্যবহার করে চোখের সাথে সম্পর্কিত" রেন্ডারিং ব্যবহার করা। এই পদ্ধতিটি "ভার্চুয়াল গ্লোবগুলির জন্য 3 ডি ইঞ্জিন ডিজাইন" বইটিতে বর্ণিত হয়েছে (আমি নিশ্চিত আপনি এটি ইন্টারনেটের পাশাপাশি খুঁজে পেতে পারেন) যেখানে মূলত আপনাকে সিপিইউতে ডাবলস সহ আপনার সমস্ত অবস্থান নির্ধারণ করতে হবে (প্যাচ, ক্লিপম্যাপস, অবজেক্টস, হতাশা, ক্যামেরা ইত্যাদি) এবং তারপরে এমভি তার অনুবাদকে (0, 0, 0) টি তে সেট করে দর্শকের চারদিকে কেন্দ্রীভূত হয় এবং ডাবলগুলি দুটি ফ্লোটের ভগ্নাংশ (ম্যান্টিসা) বিট ব্যবহার করে একটি নির্দিষ্ট পয়েন্ট উপস্থাপনায় এনকোড থাকে এবং কিছু পদ্ধতিতে উচ্চ (ওহ্লারিকের প্রয়োগকরণ এবং ডিএসএফইউএন 90 ফোর্টরান গ্রন্থাগারটি ব্যবহার সম্পর্কে পড়ুন)।
যদিও ভার্টেক্স শ্যাডারের জন্য কেবলমাত্র দুটি অতিরিক্ত বিয়োগ এবং একটি সংযোজন প্রয়োজন, জিপিইউ আরটিই পজিশনের জন্য প্রয়োজনীয় ভার্টেক্স বাফার মেমরির পরিমাণ দ্বিগুণ করে। কেবলমাত্র অবস্থানগুলি সংরক্ষণ করা না হলে এটি অগত্যা মেমরির প্রয়োজনীয়তাগুলি দ্বিগুণ করে না।
গভীরতা বাফার যথার্থতা : জেড-ফাইটিং। যেহেতু আমরা খুব বড় ভূখণ্ডকে উপস্থাপন করছি, এই ক্ষেত্রে: গ্রহগুলি, জেড-বাফারকে বিশাল হতে হবে, তবে আপনি জেনার এবং জফারের জন্য যে মানগুলি নির্ধারণ করেছেন তা বিবেচ্য নয়, সর্বদা সমস্যা থাকবে।
জেড-বাফার যেমন ফ্লোট পয়েন্টের বিরতিতে নির্ভর করে এবং এটি লিনিয়ার (যদিও দৃষ্টিভঙ্গি প্রজেকশন নন লিনিয়ার) চোখের কাছাকাছি মানগুলি জেড-ফাইটিংয়ে ভুগছে কারণ নির্ভুলতার অভাব 32-বিট ফ্লোট রয়েছে।
এই সমস্যাটি সমাধানের সর্বোত্তম উপায় হ'ল "লোগারিদমিক ডিপথ বাফার" ব্যবহার করা
http://outerra.blogspot.com/2012/11/maximizing-depth-buffer-range-and.html
একটি লগারিদমিক গভীরতা বাফার জেডস্ক্রিনের জন্য লগারিদমিক বিতরণ ব্যবহার করে দূরত্বের অবজেক্টগুলির জন্য গভীরতার বাফার যথার্থতা উন্নত করে। এটি দূরবর্তী অবজেক্টের জন্য নির্ভুলতার জন্য নিকটতম বস্তুর জন্য নির্ভুলতার বাণিজ্য করে। যেহেতু আমরা একটি এলওডি পদ্ধতি দিয়ে রেন্ডার করছি, ততক্ষণ অবজেক্টগুলিকে কম নির্ভুলতার প্রয়োজন কারণ তাদের ত্রিভুজ কম রয়েছে।
কিছু গুরুত্বপূর্ণ বিষয় উল্লেখযোগ্য হ'ল চতুর্ভুজ বেসের কারণে পদার্থবিজ্ঞান (বেশিরভাগ সংঘর্ষ) করার সময় তালিকাভুক্ত সমস্ত পদ্ধতি খুব ভাল (যদি আপনি কোনও গেম তৈরির পরিকল্পনা করেন তবে এটি বাধ্যতামূলক কিছু।
উপসংহারে, কেবলমাত্র উপলভ্য সমস্ত বিকল্প যাচাই করুন এবং যাকে আপনি বেশি সাশ্রয়ী মনে করছেন তার জন্য যান, আমার মতে সিডিএলওড দুর্দান্ত কাজ করে। জিটার এবং জেড-বাফার সমস্যাগুলি সমাধান করতে ভুলবেন না এবং সবচেয়ে গুরুত্বপূর্ণ: এটি তৈরিতে মজা করুন!
এলওডি সম্পর্কে আরও তথ্যের জন্য এই লিঙ্কটি পরীক্ষা করুন ।
একটি ঘনক্ষেত্রের স্পিরিফাইজিং সম্পর্কে সম্পূর্ণ ডিস্টোস্টের জন্য এই লিঙ্কটি দেখুন ।
জিটারিং এবং জেড-বাফার স্পষ্টতাগুলি সমাধান করার বিষয়ে আরও ভাল ব্যাখ্যার জন্য, এই বইটি দেখুন ।
আমি আশা করি আপনি এই সামান্য পর্যালোচনা দরকারী হবে।