আমি কীভাবে ইউনিটিতে বিশাল ভূখণ্ড তৈরি করতে পারি?


19

আমি কীভাবে ityক্যে চূড়ান্ত ভূখণ্ড তৈরি করতে পারি ? দেখে মনে হচ্ছে আমি প্রস্থ এবং দৈর্ঘ্যকে বড় মানগুলিতে সেট করতে পারি। তবে হাইটম্যাপ রেজোলিউশনটি কেবল 4097 পর্যন্ত যায় এবং বিশদ বিবরণটি কেবল 4048 পর্যন্ত যায়।

কোন ধারনা?


আমি একটি buzzkill হওয়ার জন্য দুঃখিত: sol.gfxile.net/mmorpg.html
পেরেকনির্মাতা

উত্তর:


21

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

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

শেষ অবধি: ভাসমান পয়েন্ট নির্ভুলতা সমস্যাগুলি এড়াতে আপনার মূল ক্যামেরাটি প্রতিবার (0.0f, 0.0f, 0.0f) থেকে দূরে সরে গেলে আপনাকে পুরো দৃশ্যটি পুনঃস্থাপন করতে হবে।

Un ক্য উত্তরগুলি সম্পর্কে সম্ভবত প্রাসঙ্গিক প্রশ্ন http://answers.unity3d.com/questions/17225/dynamic-terrain-loading.html


ধন্যবাদ! দুর্দান্ত উত্তর একটি মাত্র প্রশ্ন, যখন আমি ভূখণ্ডের প্রতিবেশীদের সেট করব, তখন ভূখণ্ডগুলি প্রান্তগুলিতে একই উচ্চতায় না থাকলে কী হবে?
ড্যানিয়েল পেন্ডারগাস্ট

1
@ ড্যান: আপনি ল্যান্ডস্কেপটিতে গর্ত পাবেন। এর সাথে বিভিন্নভাবে কাজ করার বিভিন্ন উপায় রয়েছে, প্রায় "প্রান্তের প্রান্তে একই উচ্চতা রয়েছে তা নিশ্চিত করুন", "গর্তগুলি মুখোশ করার জন্য প্রান্ত থেকে উল্লম্বভাবে চলমান স্কার্ট যুক্ত করুন" এবং "উত্পন্ন ত্রিভুজ স্ট্রিপগুলি যুক্ত করুন" এর ধরণে বিভিন্ন উপায় রয়েছে add একসাথে গর্ত সেলাই। " আপনি কোনটি ব্যবহার করবেন তা আপনার (এবং ইঞ্জিনটি একাংশে)। স্কার্ট সহ দ্বিতীয়টি হ'ল আমি প্রায়শই দেখি।
মার্টিন সোজকা

1
বা আমি যেমন বলেছি, আপনি
অঞ্চলগুলি

কারও কি কোনও স্ক্রিপ্ট আছে?
ড্যানিয়েল পেন্ডারগাস্ট

@ ড্যান: উত্তরের Unক্য উত্তর লিঙ্কে কিছু স্ক্রিপ্ট রয়েছে। তদ্ব্যতীত, আমি এই মুহূর্তে আপনাকে ইউনিটির জন্য কোডে সহায়তা করতে পারি না, আমার সমস্ত (শখের স্তরের) গেম প্রোগ্রামিংটি ওেন্ড্রে 3 ডি দিয়ে রেন্ডারিং ইঞ্জিন হিসাবে সম্পন্ন হয়।
মার্টিন সোজকা

3

আপনার খণ্ডগুলি, অর্থাৎ খণ্ডগুলিকে ভেঙে ফেলতে হবে। বেশ কয়েকটি ছোট ভূখণ্ড। আপনাকে এগুলি আবার 'সিউম' করতে হবে (স্ক্রিপ্টের সাহায্যে) যাতে তাদের মধ্যে 'গর্ত' না থাকে তবে অন্যথায় আপনি কেবল এগুলি করা শুরু করতে পারেন।

আপনি আরও জানতে চাইবেন যে ইউনিটি 3 ডি ~.০ থেকে আপনি খুব বেশি দূরে আইটেমগুলি (টেরেন এবং আইটেমগুলি পড়তে পারবেন না) (+/- 100000 ধাপ আইআইআরসি এর মতো) তাই এটি আপনার বিশ্বের সর্বোচ্চ আকারকে প্রভাবিত করবে।

আমি যাইহোক যাইহোক এটি আমার অনলাইন আরপিজি গেমটিতে ব্যবহার করছি (ব্যতিক্রমটি ছাড়া আমি কেবল ইউনিটি 3 ডি ব্যবহার করি লেভেল ডিজাইনের জন্য, আসল গেমের জন্য নয়)।

আমি কৌতূহলী হওয়ার কারণে, আপনি কি আপনার গেম সম্পর্কে কিছু তথ্য ভাগ করতে চান (যেমন অগ্রগতি, টাইপ, গ্রাফিক্স, স্টাইল ইত্যাদি)?


2

আমরা বিভিন্ন ইউনিট 5 TerrainDataএর বিশদ [1] সহ অবজেক্টের উচ্চতা-মানচিত্রে সমগ্র পৃথিবীর জন্য এসআরটিএম ডেটা প্রক্রিয়াকরণ করে ইউনিটি 5 তে বিশাল ভূখণ্ড বাস্তবায়ন করেছি । এখানে কয়েকটি বিষয় বিবেচনা করতে হবে:

  1. উচ্চতার মানচিত্রের খুব প্রান্তগুলিকে কমপক্ষে একটি নমুনা দ্বারা ওভারল্যাপ করা প্রয়োজন এবং সেই অনুযায়ী আপনার অঞ্চলগুলি আপনার অবস্থানের স্থানে রাখা দরকার। Terrain.SetNeighborsজালটি সংযুক্ত করবে না, কেবল ityক্য কর্তৃক করা বিভিন্ন স্তরের বিশদের জন্য অ্যাকাউন্ট account

  2. আপনার অগত্যা, প্রতি TerrainDataবস্তুতে 2 ^ n + 1 উচ্চতার নমুনাগুলি প্রয়োজন , অন্যথায় ityক্য আনসেট অংশগুলিতে 0 এর উচ্চতা নির্ধারণ করবে।

  3. আপনার যদি 2 গিগাবাইটেরও কম থাকে TerrainData, তবে আপনি রিসোর্স ফোল্ডারে Resource.Loadতাদের সম্পদ হিসাবে এবং রানটাইমগুলিতে এড়াতে পারবেন। আপনার যদি 2 জিবি-র বেশি থাকে তবে approachক্য বিল্ড সহ 2 জিবি সংস্থান বেশি থাকতে পারে না বলে এই পদ্ধতির আর কাজ হবে না। এক্ষেত্রে আপনাকে অ্যাসেটবান্ডেলগুলি তৈরি করতে হবে এবং অযোজ্যভাবে এটিকে WWWবস্তুটির সাথে লোড করতে হবে । এতে Shader.Parseপ্রায় 500ms ওভারহেডের সাথে প্রত্যেকের জন্য কল করার অযাচিত পার্শ্ব-প্রতিক্রিয়া রয়েছে । আমি ফোরামে এটি প্রতিবেদন করেছি [2] এবং এখনও একটি উত্তরের জন্য অপেক্ষা করছি। আমি শেষ পর্যন্ত একটি বাগ রিপোর্ট জমা দেব।

  4. ব্যবহার সম্পর্কে চিন্তা করবেন না AssetDatabase.LoadAssetAtPath, এটি কেবল সম্পাদকটিতে উপলব্ধ এবং ইউনিটি বিল্ডগুলিতে নয়।

[1] https://www.youtube.com/watch?v=2UsyVuWoFbQ
[2] http://forum.unity3d.com/threads/shader-parse-delays-loading-of-assetbundle-containing-no-shader .358235 /


0

তৃতীয় পক্ষের সমাধান রয়েছে।

এই কোডটি 99,999 মিটার প্রস্থের অঞ্চল তৈরি করতে পারে, পর্বতমালা যে কোনও শব্দ সূত্র, তবে আপনি চাইলে 100 টি শোর ফর্মুলাকে একটি মানচিত্রে মিশ্রণ করতে পারেন। উদাহরণস্বরূপ, এই ভূখণ্ডে, একটি মানচিত্রে উপলব্ধ মোট ত্রিভুজগুলির সংখ্যা m 66 মিলিয়ন, নিম্ন রেজোলিউশন এবং 200 মিলিয়ন মাঝারি রেজোলিউশনের মধ্যে রয়েছে। এখানে একটি 66 মিলিয়ন ত্রিভুজ মানচিত্র, যেখানে ক্যামেরার চারদিকে 0.7 মিলিয়ন ত্রিভুজ আপডেট করা হয়েছে। unityক্যপ্লেয়ার জায়ান্ট টেরিন, ডাব্লুএএসডি এবং স্পেস


এর জন্য কি সোর্স কোড আছে? আমি যা দেখছি তা সবই unityক্য প্লাগইন গেম।
অ্যাটাকিংহোব

আমার সোর্স কোড রয়েছে, লিখতে আমার কিছুটা সময় লেগেছে। আমি ইয়াহু d0t কম এ পিঁপড়া d0t স্টুয়ার্ট এ
com.prehensible

0

আমি আপনার অঞ্চলগুলি অংশগুলিতে লোড করার পরামর্শ দেব। আরও ছোট ভূখণ্ড ব্যবহার করে এবং সম্ভবত আপনার স্ক্রিপ্টটি পরীক্ষা করে দেখতে পারে যে আপনি ট্রান্সফর্ম.পজিশন - terrain.transform.position ব্যবহার করে আপনার অঞ্চলটির নির্দিষ্ট সান্নিধ্যে আছেন কিনা। আপনার গেমটিকে সামগ্রিকভাবে কীভাবে অনুকূল করা যায় সে সম্পর্কে আমি আসলে একটি ব্লগ পোস্ট লিখেছিলাম এবং আমি খণ্ড লোডিং সম্পর্কে কথা বলেছিলাম। আশাকরি এটা সাহায্য করবে.


নোট করুন যে এই পরামর্শটি 6 বছর আগে থেকে মার্টিন সোজকার গৃহীত উত্তরে ইতিমধ্যে উপস্থিত রয়েছে। আপনি যদি কেবল কোনও প্রাসঙ্গিক লিঙ্কটি ভাগ করতে চান তবে সেই উত্তরের একটি মন্তব্য আরও উপযুক্ত হতে পারে।
ডিএমগ্রিগরি

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