একটি ভক্সেল ভূখণ্ড তৈরি করতে
(ক) একটি সাধারণ পদ্ধতি হ'ল পার্লিন শব্দটি ব্যবহার করে উচ্চতা ম্যাপ উত্পন্ন করা। একটি উচ্চতা ম্যাপটি মূলত একটি একরঙা চিত্র যা এর পিক্সেলের অন্ধকার বা লঘু দ্বারা বিভিন্ন উচ্চতা উপস্থাপন করে।
উচ্চতাচিত্রের চিত্রটিতে p পিক্সেলের উজ্জ্বলতা অনুসারে আপনি বিভিন্ন উচ্চতা (জেড-অক্ষ) বিভিন্ন (x, y) স্থানে ভক্সেলের "স্ট্যাকস" তৈরি করতে এই উচ্চতা ম্যাপে পৃথক পিক্সেলগুলি দেখবেন। যেহেতু পার্লিনের শব্দের চিত্রটি মসৃণ (অন্ধকারের তুলনায় আলোর কোনও ধারালো প্রান্ত নয়), ফলস্বরূপ আপনার স্বাচ্ছন্দ্যে অঞ্চলটি ঘূর্ণায়মান হবে।
(খ) আপনি বিভিন্ন পলিহেডারের বাইরে ল্যান্ডস্কেপ তৈরি করে এটি ক্রমান্বয়ে নির্মাণ করতে পারেন। একটি পলিহেড্রাল ভেক্টর আকৃতি তৈরি করুন যা আপনার পছন্দসই ভক্সেল আকারের সমান করে। যে কোনও 3 ডি-পয়েন্ট-ইন-পলিহেড্রন পদ্ধতি ব্যবহার করে (প্রায়শই পয়েন্ট-ইন-কনভেক্স-হাল) আপনার ওয়ার্ল্ড গ্রিডের কোন বিন্দু সেই পলিহেড্রাল ভলিউমের মধ্যে পড়ে তা পরীক্ষা করুন। উদাহরণস্বরূপ, মহাকাশে একটি পিরামিড সংজ্ঞায়িত করুন। সেই পিরামিডাল ভলিউমের বিপরীতে আপনার বিশ্ব স্পেসের স্থানীয় অঞ্চলের প্রতিটি পয়েন্ট পরীক্ষা করার পরে, আপনি জানতে পারবেন কোন পয়েন্টগুলি এর মধ্যে পড়ে এবং আপনি সেই ঘরগুলিকে "উপস্থিত" হিসাবে সেট করতে পারেন যার অর্থ তারা ফাঁকা স্থানের পরিবর্তে ভক্সেল হয়ে যায়। আপনার এখন আপনার স্পেসে একটি ভক্সেল পিরামিড রয়েছে। আপনি কোনও ভূখণ্ড গঠন না করা পর্যন্ত আপনি এই পদ্ধতিতে কোনও ধরণের আকার যুক্ত করতে চালিয়ে যেতে পারেন।
(গ) (সত্য খ হিসাবে একই ) একটি মডেলিং সরঞ্জাম লিখুন। ভক্সাস্ট্রন দেখায় এটি কেমন হবে। এটি কেবলমাত্র বিকল্প বিশ্বে (সম্পাদক) ভক্সেল ফর্মগুলি তৈরি করছে এবং তারপরে এগুলিকে আপনার আসল রানটাইম গেমের জগতে আমদানি করছে। আমি বিশ্বাস করি ভক্সল্যাপের ভক্সেলের জন্য প্রথম মুক্ত উত্স সম্পাদক ছিল। আপনি পৃথক ভক্সেল রাখতে পারেন, বা ভক্সেলগুলি আপনার বিশ্বে আঁকতে আপনি বিভিন্ন আকার / ভলিউম সহ একটি ভক্সেল "ব্রাশ" ব্যবহার করতে পারেন।
আপনার নিজের ভক্সেল-ভিত্তিক গেমটি তৈরি করতে আপনার কী দরকার
আমি এই বিভাগটি অন্তর্ভুক্ত করছি কারণ ভক্সেল রাস্তাটি কোনও সহজ নয়, কমপক্ষে বর্তমানে নেই। ইদানীং, বড় খেলোয়াড়রা রেন্ডারিং এবং ফিজিক্স অ্যাপ্লিকেশনগুলির দিকে আরও অনেক গবেষণা আবার ভক্সেল ইঞ্জিনে ফেলেছে being
সরলতা একটি সমস্যা হতে পারে, কারণ কাঁচা ভক্সেলগুলি থেকে গতিশীলভাবে একটি বিশ্ব নির্মাণ করা বিশ্ব নির্মাণের জন্য একটি প্রক্রিয়াগত পদ্ধতি এবং এটি অন্তর্নিহিত সহজ নয় । সুতরাং দুঃখিত, এখানে কয়েকটি প্রযুক্তিগত পদ হতে চলেছে। একটি ভক্সেল ইঞ্জিন লেখা একটি অত্যন্ত গুরুতর উদ্যোগ এবং এটি গেম ইঞ্জিন বিকাশের একাধিক ক্ষেত্র, বিশেষত স্থানিক ধারণাগুলির ক্ষেত্রে জ্ঞানের প্রয়োজন এবং এর অর্থ 3 ডি ভেক্টর গণিত, ম্যাট্রিক এবং বেসিক ক্যালকুলাসকে কিছুটা যুক্তিসঙ্গত স্তরে বোঝা।
এটি বলার পরে, আপনার "ভোক্সেল ভূখণ্ডের প্রজন্মের" একটি প্রসঙ্গে কাজ করা দরকার যা ভক্সেল ইঞ্জিনগুলি ঠিক ব্যাপকভাবে বিস্তৃত নয়। একটি ভক্সেল ইঞ্জিন কীভাবে কাজ করে তার একটি প্রাথমিক বিবরণে এগিয়ে যাওয়া যাক।
ভক্সেলগুলি আপনার বিশ্বের প্রাথমিক বিল্ডিং ব্লক। তাদের অবস্থানগুলি অবিচ্ছিন্ন ভাসমান-পয়েন্ট স্থান (ভেক্টর ভিত্তিক 3 ডি গেম হিসাবে ব্যবহৃত) এর পরিবর্তে একটি পূর্ণসংখ্যার ইনডেক্সড 3 ডি গ্রিড (অ্যারে) দ্বারা সংজ্ঞায়িত করা হয়। এগুলি হবে আপনার বিশ্বের "পরমাণু"। মিনক্রাফ্টের মতো গেমগুলির মতো এগুলি 3 ফুট উঁচু হতে পারে বা আপনার ভার্চুয়াল চরিত্রের চোখের চেয়ে ছোট হতে পারে, যদি না বড় সংখ্যায় একসাথে ক্লাস্টার করা হয় - তবে আরও কিছুটা অণুর মতো। দুটি ধরণের রয়েছে:
- কিউবিক জাল ভিত্তিক ভক্সেল ( উদাহরণ ) - এগুলি একটি নতুন ধরণের, যা সরলতার জন্য ব্যবহৃত হয় এবং আধুনিক গ্রাফিক্স প্রযুক্তির সাথে একত্রে সহজেই ব্যবহারযোগ্য us মাইনক্র্যাট এবং অন্ধকূপ রক্ষকের মতো খেলায় ব্যবহৃত হয়।
- পয়েন্ট ভক্সেল ( উদাহরণস্বরূপ , উদাহরণ ) - আসল ভক্সেল। প্রতিটি স্থানের একটি পৃথক, সংঘর্ষযোগ্য পয়েন্ট, যদিও এটি একটি গোলাকৃতির বাউন্ডিং ভলিউম দ্বারা বেষ্টিত হতে পারে। এগুলি সহজ, যাতে আপনার পৃথিবীতে এগুলির আরও অনেকগুলি থাকতে পারে এবং আপনি এগুলি এটিকে আরও ছোট করে তুলতে পারেন যা সাধারণত অনুকূল। দুটি গেম যেগুলি ব্যবহার করেছিল তা হ'ল কোমঞ্চ এবং 1990 এর দশকের লর্ডস অফ মিডনাইটের রিমেক।
যে কোনও উপায়ে, আপনার বিশ্বে ভোক্সেলগুলি চালিত করার জন্য আপনার পদ্ধতিটি অনেকটা একই।
আপনার বিশ্বে অবজেক্টগুলি তৈরি এবং স্থানান্তর করতে আপনার উপরে উল্লিখিত গাণিতিক সরঞ্জামগুলির প্রয়োজন হবে। উদাহরণস্বরূপ, প্রাচীর তৈরি করতে: ভেক্টর ব্যবহার করে 3 ডি স্পেসে উপযুক্ত মাত্রার একটি বাক্স তৈরি করুন। আপনার বাক্সটি আপনার 3 ডি বিশ্বে (ক্রমাগত ভেক্টর স্পেসে) আপনার ঘূর্ণন এবং অবস্থানের পছন্দ হিসাবে রূপান্তর করতে ম্যাট্রিক্স গণিত ব্যবহার করুন। একটি ভক্সেল ইঞ্জিনের জন্য, অতিরিক্ত পদক্ষেপটি এখন আপনার কোন ভক্সেল সেই ঘোরানো জায়গার ভিতরে পড়ে তা নির্ধারণ করতে 3 ডি পয়েন্ট-ইন-পলিহিড্রন অ্যালগরিদম ব্যবহার করা হবে।
মূলত, আপনি এইভাবে আপনার বিশ্বের বেশিরভাগ অবজেক্ট তৈরি করবেন। এর বাইরে, আপনি আপনার নিজের সরঞ্জামগুলি কোনও মডেলকে "মডেল" করতে মায়া বা থ্রিডিএস ম্যাক্স হিসাবে বলতে পারেন write তবে যেহেতু আপনি বিন্দু, প্রান্ত এবং মুখগুলির পরিবর্তে ভক্সেলগুলির বাইরে চরিত্রের মডেলিং করছেন, আপনার পদ্ধতিগুলি পৃথকভাবে পৃথক হবে। আপনি যদি নিজের বিশ্বে এই বিষয়গুলি ঘোরানোর সিদ্ধান্ত নিয়ে থাকেন তবে এটির জন্য আপনাকে একইভাবে ম্যাট্রিক্স রূপান্তর ব্যবহার করতে হবে use
ধ্বংসাত্মক অঞ্চলটি আপনার নির্বাচনের কিছু পদ্ধতি অনুসারে একবারে একটি ভক্সেল অপসারণ করার মতো, বা কিছু পূর্বনির্ধারিত ভলিউম অনুযায়ী অপসারণের জন্য ভক্সেলের বৃহত পরিমাণে সিএসজি (কনস্ট্রাকটিভ সলিড জ্যামিতি) অপারেশন ব্যবহার করার মতোই সরল; উদাহরণস্বরূপ, যদি কোনও শিলা দিয়ে কোনও লেজার রশ্মির শুটিং করা হয় তবে আপনি ভক্সেলগুলি বিয়োগ করতে একটি নলাকার ভলিউম ব্যবহার করতে পারেন এখানে শিলাটি শিলাটি দিয়ে চলছে। সিএসজি হ'ল 3 ডি স্পটিয়াল গ্রিডগুলি ব্যবহার করে যা আপনার ভক্সেল ওয়ার্ল্ড গঠন করে এবং অন্য গ্রিডের বিপরীতে বেস গ্রিডের (এই ক্ষেত্রে শিলা) একটি বিভাগে প্রতিটি ঘর পরীক্ষা করে তুলনামূলকভাবে সহজ প্রক্রিয়া (এই ক্ষেত্রে, লেজারের মরীচি)
উপাদান "প্রবাহ" পেতে (যেমন ভিজিল বালির বিষয়ে তার মন্তব্যে ইঙ্গিত করেছেন), আপনাকে তরল গতিবিদ্যা এবং সেলুলার অটোমেটা খতিয়ে দেখতে হবে। এগুলি বামন ফোর্ট্রেসের লেখক, টার্ন অ্যাডামস দ্বারা ব্যবহৃত হয়েছিল, যা মূলত ভোক্সেল ওয়ার্ল্ডও রয়েছে (যদিও এই ক্ষেত্রে ভোকসেলগুলি অনেক বড়, ডানজিওন কিপারের সাথে তুলনীয়, নীতিটি একই রয়েছে)। এগুলি প্রান্তের বিষয়গুলি কাটাচ্ছে এবং নির্ধারিত ভক্সেল ইঞ্জিনগুলির জন্য প্রয়োজনীয়তা নয়, তাই আমি আপনার নিজের গবেষণার জন্য এটি "স্টাব" হিসাবে রেখে দেব।
সিএসজি এবং তরল গতিশীলতা আমাকে শেষ পর্যন্ত অপ্টিমাইজেশনে নিয়ে আসে। ভক্সেল ইঞ্জিনগুলি বর্তমানে বিকাশে রয়েছে প্রায় একচেটিয়াভাবে স্পার্স ভক্সেল অক্ট্রি (এসভিও) ব্যবহার করে যা বিভিন্ন রেজোলিউশনে ভক্সেল স্পেসকে বিভক্ত করার একটি পদ্ধতি, আসন্ন অ্যাটমন্টেজ ইঞ্জিনটি প্রদর্শন করে এই ভিডিওতে প্রমাণিত । এক বৃহত্তর, অভিন্ন গ্রিড প্রসেসিংয়ের সাথে যুক্ত প্রসেসিং ওভারহেডগুলির কারণে অপ্টিমাইজেশান পছন্দের চেয়ে অক্ট্রি / এসভিওগুলি ব্যবহার করা প্রয়োজনীয়তা বেশি। অষ্টা মূলত একটি গাছ (নির্দেশিত অ্যাসাইক্লিক গ্রাফ) যেখানে প্রতিটি নোডের মধ্যে 8 বা শূন্য শিশু নোড থাকে যেখানে এটি প্রতিনিধিত্ব করে এমন স্থান কোনও শারীরিক ভলিউম রয়েছে কিনা তার উপর নির্ভর করে। দেখাচ্ছে রেখাচিত্র কিভাবে octrees স্থান বিভক্ত voxels গঠন করতে চলেছেন এখানে ।
আমার জানা সবচেয়ে ভাল ওপেন সোর্স ভক্সেল বাস্তবায়ন হ'ল কেন সিলভারম্যানের ভক্সপ্ল্যাপ ইঞ্জিন , যা ভক্সেলস্টাইন 3 ডি এর জন্য ব্যবহৃত হয়েছিল। এটি সি ++ তে লেখা এবং ভূখণ্ডের বিকৃতি জন্য সিএসজি অপারেশনগুলি প্রয়োগ করে।