সুবিধা না হারিয়ে জ্যামিতি / জাল মার্জ করা


11

থ্রি.জেএস-এ আমরা কল কলগুলির পরিমাণ সীমাবদ্ধ করার জন্য জ্যামিতিকে কেবল মার্জ করতে পারি এবং এইভাবে পারফরম্যান্স বাড়িয়ে তুলতে পারি। একটি উপাদান সহ একটি সাধারণ পরীক্ষায়, আমি আমার জিটিএক্স 660 জিপিইউতে 50.000 কিউব + ছায়া @ 60fps আঁকতে পারি। জ্যামিতি মার্জ না করে, ইতিমধ্যে 5.000 কিউব একটি সমস্যা তৈরি করেছে।

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

এই সমস্যার জন্য কোনও সাধারণ কৌশল আছে কি? সর্বোপরি মার্জ হওয়ার পরেও আমার কাছে সমস্ত নিমজ্জিত জাল বস্তু রয়েছে। সুতরাং বাছাইয়ের জন্য তাদের ব্যবহারের কিছু উপায় থাকতে হবে?

সংক্ষেপে আমি কী করতে চাই

  • শেখার উদ্দেশ্যে গেমের মতো সিমসিটি
  • প্রতিটি ঘর একটি ঘন জাল
  • 50.000 ঘর রেন্ডার করতে চান এবং বাড়িগুলি যুক্ত করতে এবং মুছে ফেলতে সক্ষম হন
  • মাউস-কার্সারের মাধ্যমে বাছাই-করা (বাছাই করা) অবশ্যই সম্ভব

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

উত্তর:


11

ঠিক আছে, আমি বুঝতে পেরেছি. পুরো জ্যামিতি একসাথে মার্জ করার পরে, আমার কাছে এখনও একটি অ্যারেতে পৃথক মেস রয়েছে। সুতরাং আমি রেগুলার কাস্টিংয়ের জন্য এই মেসগুলি কেবল ব্যবহার করতে পারি, যদিও এগুলি এমনকি রেন্ডার করা হয় না। এটি অনুধাবন করতে আমাকে কিছুক্ষণ সময় লাগল।

এখানে চিত্র বর্ণনা লিখুন

বাছাইয়ের জন্য আমি এই অষ্ট্রি বাস্তবায়নটি ব্যবহার করি: http://threejs.org/example/#webgl_octree_raycasting

এটি প্রতি আপডেট ছেদ পরীক্ষাগুলি 50.000 থেকে 500 down এ নেমে আসে। অষ্টা ব্যতীত এফপিএসগুলি হ্রাস পাবে।

আপনি যে কমলা পিকিং হাল দেখেন তা আসলে পরিবর্তিত উপাদান এবং পরিবর্তিত আকারের সাথে এখন রেন্ডার করা জাল (+1 ড্র কল)।

এখানে চিত্র বর্ণনা লিখুন

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


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

খুব সুন্দরভাবে সম্পন্ন হয়েছে।
ক্লাসিকথান্ডার

আমার একইরকম সমস্যা আছে তবে কোনওভাবে r70 এর সাথে র‌্যাস্টকিংয়ের কাজটি পাওয়া যাবে না। বাক্সগুলি তৈরি এবং মার্জ করার সময় আপনি কি বিশেষ কিছু করেছিলেন? নোডগুলি তৈরি করতে এবং মার্জ করার জন্য আমি নীচের কোডটি ( পেস্টবিন .com/পিএসএএএফ 3 পি) ব্যবহার করি তবে রাইস্টারকে কাজ করার জন্য কিছু অনুপস্থিত থাকতে পারে?
ফাহন

তাত্ক্ষণিক প্রশ্ন: আমি আপনার সাথে খুব অনুরূপ কিছু করছি (জিওজেএসন ডেটার উপর ভিত্তি করে একটি 3 ডি মানচিত্র)। আপনার পদ্ধতির সাহায্যে আপনি যখনই ক্যামেরাটি ঘোরেন তখন আপনার কি পূর্ব-বিদ্যমান বিল্ডিং জঞ্জালগুলি ঘোরানো দরকার? অথবা আপনি কেবল দৃশ্যে পৃথক বাক্সগুলি যুক্ত করেছেন তবে সেগুলি রেন্ডার করেন না?
স্পেনসার 21

@ স্পেন্সারকে ঘোরানোর দরকার নেই। আমি পৃথক বাক্সগুলিকে বৈশ্বিক অ্যারে রাখি এবং কেবল দৃশ্যে মার্জড জ্যামিতি যুক্ত করি। এরপরে আপনি বিশ্বব্যাপী অ্যারেতে বস্তুর সাথে রাইকাস্টিং করতে পারেন, কারণ রাইস্টার দুটি ক্যামেরা ম্যাট্রিক্স এবং প্রতিটি বাক্সের অবস্থানের উপর নির্ভর করে। সম্ভবত সবচেয়ে ভাল উপায় না, এটি আমার কাছে ধারণার প্রমাণ ছিল। এই মুহুর্তে আর কোন থ্রি.জেএস করা হচ্ছে না।
ব্যবহারকারী 990827

1

বাছাইয়ের জন্য আপনি প্রতিটি কিউবারের জন্য অন্য একটি রেন্ডার টার্গেটে আইডি রেন্ডার করতে পারেন এবং কার্সারে আইডি মানটি কি তা পরীক্ষা করতে পারেন। উপকারটি হ'ল পিকিং পিক্সেল নিখুঁত এবং আরও জটিল জ্যামিতির জন্য দক্ষতার সাথেও কাজ করে।

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


0

আমি থ্রি.জেএস এর বিবরণ সম্পর্কে নিশ্চিত নই, তবে সাধারণ ওপেনএল-তে দুটি সম্ভাব্য পারফরম্যান্স হগ মনে আসে:

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

0

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

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