প্রথম। প্রতিটি ভক্সেল সম্পর্কে আমরা কী জানি তা লিখতে দিন:
voxel = (x, y, z, color) // or some other information
সাধারণ স্টোরেজ
সাধারণ উপায় সহজভাবে এটি:
set of voxels = set of (x,y,z, color)
দ্রষ্টব্য, এই ট্রিপলেটটি (x, y, z) প্রতিটি ভক্সেলকে স্বতন্ত্ররূপে সনাক্ত করে, যেহেতু ভক্সেলটি স্থানের বিন্দুতে রয়েছে এবং দুটি বিন্দু এক জায়গায় দখল করার কোনও উপায় নেই (আমি বিশ্বাস করি আমরা স্ট্যাটিক ভক্সেল ডেটার বিষয়ে কথা বলছি)।
সাধারণ ডেটার জন্য এটি সূক্ষ্ম হওয়া উচিত। তবে এটি কোনওভাবেই একটি দ্রুত ডেটা কাঠামো নয়।
রেন্ডারিং এএফএইকে স্ক্যানলাইন অ্যালগোরিদম দ্বারা সম্পন্ন হয়। ভক্সেলগুলিতে টমের হার্ডওয়ার নিবন্ধে স্ক্যানলাইন অ্যালগরিদমের চিত্র রয়েছে ।
দ্রুত অনুসন্ধান
যদি দ্রুত অনুসন্ধান প্রয়োজন হয়, তবে দেখার জন্য দ্রুততম ডেটা কাঠামো হ্যাশ (ওরফে অ্যারে, মানচিত্র ...)। সুতরাং আপনি এটি থেকে হ্যাশ করতে হবে। সুতরাং, নির্লজ্জভাবে আমরা স্বেচ্ছাসেবী উপাদান পাওয়ার জন্য দ্রুততম উপায় চাই:
array [x][y][z] of (color)
এক্স, ওয়াই, জেড স্থানাঙ্ক দ্বারা ভক্সেল সন্ধান করার জন্য এটিতে ও (1) রয়েছে।
সমস্যাটি হচ্ছে, এটির স্থানের প্রয়োজনীয়তাগুলি হ'ল ডি (ডি ^ 3), যেখানে ডি প্রতিটি x, y এবং z সংখ্যার পরিসর (আসল সংখ্যাটি ভুলে যান, যেহেতু তারা যদি অক্ষর হয়, যার 256 মান রয়েছে), সেখানে 256 would থাকবে 3 = 2 ^ 24 == 16 777 216 উপাদান অ্যারে)।
তবে এটি ভক্সেলগুলির সাথে আপনি কী করতে চান তার উপর নির্ভর করে। যদি রেন্ডারিং আপনি যা চান তা হয় তবে সম্ভবত আপনি যা চান এটি হ'ল এটি ar তবে সংরক্ষণের সমস্যা এখনও অবধি ...
স্টোরেজ সমস্যা হলে
একটি পদ্ধতি হ'ল অ্যারেতে RLE সংক্ষেপণ ব্যবহার করা। ভক্সেলের একটি টুকরো কল্পনা করুন (ভক্সেলের সেট, যেখানে ভক্সেলের একটি স্থানাঙ্ক ধ্রুবক মান থাকে .... প্লেনের মতো যেখানে z = 13 উদাহরণস্বরূপ)। ভক্সেলগুলির এই জাতীয় স্লাইসটি এমএসপেইন্টে কিছু সাধারণ অঙ্কনের মতো দেখাবে । ভক্সেল মডেল, আমি বলব, সাধারণত সমস্ত সম্ভাব্য জায়গার ভগ্নাংশ দখল করে (সমস্ত সম্ভাব্য ভক্সেলের ডি ^ 3 স্থান)। আমি বিশ্বাস করি, "ত্রিপলি স্থানাঙ্কের এক জোড়া নিয়ে বাকী অক্ষটি সংকুচিত করুন" এই কৌশলটি করবে (উদাহরণস্বরূপ [x] [y] নিন এবং প্রতিটি উপাদানের জন্য প্রদত্ত x, y এ z অক্ষের সমস্ত ভক্সেল সংকোচিত করবেন)। । এখানে 0 থেকে কয়েকটি উপাদান থাকা উচিত, আরএলই এখানে ভাল করবে):
array [x][y] of RLE compressed z "lines" of voxel; each uncompressed voxel has color
স্টোরেজ সমস্যা সমাধানের অন্যান্য পদ্ধতি গাছের ডেটা কাঠামো ব্যবহার করে অ্যারের পরিবর্তে হবে:
tree data structure = recursively classified voxels
for octrees: recursively classified by which octant does voxel at (x,y,z) belong to
- অক্ট্রি, নিক দ্বারা উল্লিখিত হিসাবে। এটি ভক্সেলগুলি সংকোচিত করা উচিত। অক্ট্রি দেখার জন্য এমনকি একটি শালীন গতি আছে, আমার ধারণা এটি কোনও হে (লগ এন), যেখানে এন ভক্সেলের সংখ্যা।
- অক্ট্রি শালীনভাবে নির্বিচারে ভক্সেল ডেটা সঞ্চয় করতে সক্ষম হওয়া উচিত।
ভক্সেলগুলি যদি কিছু সরল উচ্চতা ম্যাপ হয় তবে আপনি এটি কেবল সঞ্চয় করতে পারেন। অথবা আপনি উচ্চতা মানচিত্র উত্পন্ন করে এমন ক্রিয়াকলাপের জন্য প্যারামিটারগুলি সঞ্চয় করতে পারেন, যা পদ্ধতিগতভাবে এটি উত্পন্ন করে ...
এবং অবশ্যই আপনি সমস্ত সম্ভাব্য পদ্ধতির একত্রিত করতে পারেন। তবে এটি অত্যধিক করবেন না, যদি না আপনি পরীক্ষা করেন যে আপনার কোডটি কাজ করে এবং এটি পরিমাপ করে যে এটি সত্যিই দ্রুত (তাই এটি অপ্টিমাইজেশনের পক্ষে মূল্যবান)।
টি এল; ডিআর
অক্ট্রি ব্যতীত ভক্সেল, গুগল "ভক্সল্যাপ", "কেন সিলভারম্যান" এর সাথে আরএলই সংক্ষিপ্তকরণ ...
সম্পদ
কীভাবে দ্রুত ভক্সেল রেন্ডারার করা যায় সে সম্পর্কে সংস্থানসমূহ এবং আলোচনার তালিকা রয়েছে, এতে কাগজপত্র এবং উত্স কোড অন্তর্ভুক্ত রয়েছে ।