প্লেয়ার দ্বারা ব্লকগুলি কীভাবে পাওয়া যায়?


15

আমি ওগ্রে ইঞ্জিন ব্যবহার করে একটি মাইনক্রাফ্টের মতো গেম লিখছি এবং আমার একটি সমস্যা আছে। আমার অবশ্যই আমার গেমটি অপ্টিমাইজ করতে হবে, কারণ আমি যখন 10000 ব্লক আঁকার চেষ্টা করি তখন আমার কাছে 2 টি এফপিএস থাকে ... সুতরাং, আমি ধারণা পেয়েছিলাম যে বিমানটি প্রদর্শিত হবে এবং অদৃশ্য ব্লকগুলি লুকিয়ে রাখবে blocks তবে আমার একটি সমস্যা আছে - আমি কীভাবে জানতে পারি যে একবারে কোনগুলি ব্লক খেলোয়াড়ের জন্য দৃশ্যমান?

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

উত্তর:


16

ওয়েল, ওগ্রে ইতিমধ্যে হতাশার কুলিং প্রয়োগ করেছেন (যা মূলত এমন কোনও চিত্র আঁকেন না যা ক্যামেরা থেকে দেখা যায় না) তবে আমি মনে করি আপনার সমস্যাটি অন্যরকম।

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

এই মুখগুলি এই জাতীয় কিছুতেও আঁকতে হবে: http://www.ogre3d.org/tikiwiki/tiki-index.php?page=DynamicGrowingBuffers আধুনিক ভিডিও কার্ড হিসাবে 100 বহুভুজের 1000 মেশের বিপরীতে 100000 বহুভুজের একটি জাল পছন্দ করে।


10

এই সমস্যার কয়েকটি দিক রয়েছে। প্রথমত, আপনি কীভাবে আপনার 10000 ব্লক আঁকছেন? আপনি কি এগুলিকে আসলে 10000 পৃথক বস্তু হিসাবে আঁকছেন? যদি এটি হয় তবে এটি অবশ্যই আপনার বোতল ঘাড়, অবসান কুলিংয়ের অভাব নয়। কলগুলি হ্রাস করার জন্য আপনার এই ব্লকগুলি অল্প সংখ্যক মেসে (সম্ভবত জাল প্রতি কয়েক হাজার) বিভক্ত করা উচিত।

আপনার আসল প্রশ্ন হিসাবে, মনে করা যে বসন্ত culling তিন প্রকারের আছে।

1) ভিউ হতাশ বাইরে ব্লক। এর অর্থ হ'ল ব্লকগুলি যা আপনার পিছনে বা পিছনে রয়েছে। ওগ্রে ইতিমধ্যে ভিউ হতাশাজনক কুলিংয়ের মাধ্যমে এগুলি সরিয়ে ফেলে।

2) যেগুলি ব্লকগুলি 'ভূগর্ভস্থ' বা সম্পূর্ণরূপে অন্যান্য ব্লক দ্বারা ঘিরে থাকে যাতে সেগুলি কখনই কোনও কোণ থেকে দেখা যায় না। আপনি প্রতিবেশী ব্লকগুলি দেখতে এগুলি সনাক্ত করতে পারেন। এগুলি যদি সবল হয় তবে আপনার ব্লকটি গোপন রয়েছে। জিপিইউ কখনও এই ব্লকগুলি সম্পর্কে শোনা উচিত নয় - আপনি যখন আপনার পৃষ্ঠকে উপস্থাপন করেন এমন জাল তৈরি করছেন তখন এগুলি এড়ানো উচিত।

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

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

http://www.thermite3d.org/

এবং এখানে অন্য কারও প্রকল্পের একটি ভিডিও রয়েছে যা এটি ব্যবহার করছে:

http://www.youtube.com/watch?v=Jju6WRPEK7o


4

উল্টানো দিকগুলি এবং তাদের সাথে সম্পর্কিত পিক্সেলগুলিতে খেলোয়াড়ের মুখোমুখি না হওয়ার জন্য আপনি ব্যাকফেস কুলিং ব্যবহার করতে পারেন। গভীরতা বাফারিংয়ের বাকি অংশগুলির যত্ন নেওয়া উচিত। 10 কে ব্লক আসলেই খুব বেশি কিছু নয়, আমার 5770 টি 1500fps এ 100k ভার্ট রেন্ডার করতে পারে। আমি মনে করি আপনি খুব খারাপভাবে অন্য কিছু করছেন।


আমি রাজী. এটি সম্ভবত অন্য যে কোনও সমস্যা রয়েছে problem
নোটবেন চার

1

আপনার যদি 10000 টি পৃথক অবজেক্ট থাকে তবে বাধাটি সম্ভবত প্রান্তিক গণনা, ভার্টেক্স, বহুভুজ বা ভরাট নয়। গতির জন্য আপনার বস্তুকে অল্প সংখ্যক উচ্চতর বহুভুজ বস্তুতে বেক করুন।

মিনক্রাফ্টের কিউব ব্লকের ধারণা রয়েছে তবে আমি এই মুহুর্তে রেফারেন্সটি খুঁজে পাচ্ছি না।

বিভিন্ন কৌশল সহ টন কিউব আঁকার বিষয়ে আমার পরীক্ষাগুলিও এখানে । বেকিং (এখনও) অন্তর্ভুক্ত করে না।


0

আমি যা করি তা হ'ল আমি আমার ব্লকের অ্যারে তৈরি করার পরে, তবে আমি শীর্ষকোষ তৈরির আগে আপডেটব্লকভিসিবিলিটি নামে একটি সাব চালাচ্ছি run

সাবটি কেবল প্রতিবেশীদের ব্লকে পরীক্ষা করে এবং সে অনুযায়ী ব্লকগুলির মুখোমুখি বুলিয়ান আপডেট করে।

#define BLOCKFACE_NORTH 0

#define BLOCKFACE_SOUTH 1 

etc etc etc

if(IsBlockAt(NorthOfBlock))
  Blocks[Whatever].facevisible[BLOCKFACE_NORTH] = false;

তারপরে আমি কেবল মুখের জন্য শীর্ষগুলি তৈরি করব যদি এটি দৃশ্যমান হয়! সাধারণ :)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.