একটি PLY ফাইল কি?
PLY, বহুভুজ ফাইল বিন্যাস, 3D ফাইল বিন্যাস প্রতিনিধিত্ব করে যা বহুভুজের একটি সংগ্রহ হিসাবে বর্ণিত গ্রাফিক্যাল বস্তু সংরক্ষণ করে। এই ফাইল ফরম্যাটের উদ্দেশ্য ছিল একটি সাধারণ এবং সহজ ফাইল টাইপ স্থাপন করা যা মডেলের বিস্তৃত পরিসরের জন্য উপযোগী হতে যথেষ্ট সাধারণ। PLY ফাইল ফরম্যাট ASCII এর পাশাপাশি কমপ্যাক্ট স্টোরেজ এবং দ্রুত সেভ ও লোড করার জন্য বাইনারি ফরম্যাট হিসেবে আসে। ফাইল ফর্ম্যাটটি বিভিন্ন অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয় যা 3D ফাইল পড়ার জন্য সমর্থন প্রদান করে।
একটি PLY বিন্যাসে অবজেক্টগুলি শীর্ষবিন্দু, মুখ এবং অন্যান্য উপাদানগুলির একটি সংগ্রহ দ্বারা বর্ণনা করা হয়, সাথে রঙ এবং স্বাভাবিক দিকনির্দেশের মতো বৈশিষ্ট্যগুলি যা এই উপাদানগুলির সাথে সংযুক্ত করা যেতে পারে। অন্যান্য বৈশিষ্ট্য যা বস্তুর সাথে সংরক্ষণ করা যেতে পারে তার মধ্যে রয়েছে:
সারফেস স্বাভাবিক
টেক্সচার স্থানাঙ্ক
স্বচ্ছতা
পরিসীমা ডেটা আস্থা
বহুভুজের সামনে এবং পিছনের বৈশিষ্ট্য
PLY বিন্যাস দ্বারা উপস্থাপিত একটি বস্তু বিভিন্ন উৎসের ফলাফল হতে পারে যেমন হ্যান্ড-ডিজিটাইজ করা বস্তু, মডেলিং অ্যাপ্লিকেশন থেকে বহুভুজ বস্তু, রেঞ্জ ডেটা, মার্চিং কিউব থেকে ত্রিভুজ, টেরেইন ডেটা এবং রেডিওসিটি মডেল।
সংক্ষিপ্ত ইতিহাস
PLY ফর্ম্যাটটি 1990-এর দশকে গ্রেগ টার্ক এবং অন্যান্যরা স্ট্যানফোর্ড গ্রাফিক্স ল্যাবে তৈরি করেছিলেন এবং সেই কারণেই এটি স্ট্যানফোর্ড ট্রায়াঙ্গেল ফর্ম্যাট নামেও পরিচিত। তখন থেকে ফাইল ফরম্যাটের সংস্করণ 1.0 আছে এবং আর কোনো পরিবর্তন করা হয়নি।
PLY ফাইল ফরম্যাট
একটি সাধারণ PLY অবজেক্ট বস্তুর প্রতিনিধিত্বের জন্য উপাদানগুলির সংগ্রহ নিয়ে গঠিত। এটি একটি শীর্ষবিন্দুর (x,y,z) ত্রিগুণের একটি তালিকা এবং মুখের একটি তালিকা নিয়ে গঠিত যা প্রকৃতপক্ষে শীর্ষবিন্দুগুলির তালিকার সূচক। শীর্ষবিন্দু এবং মুখগুলি উপাদানগুলির দুটি উদাহরণ এবং PLY ফাইলের বেশিরভাগ অংশ এই দুটি উপাদান নিয়ে গঠিত। নতুন বৈশিষ্ট্যগুলিও তৈরি করা যেতে পারে এবং একটি বস্তুর উপাদানগুলির সাথে সংযুক্ত করা যেতে পারে, তবে এগুলি এমনভাবে যুক্ত করা উচিত যাতে এই নতুন বৈশিষ্ট্যগুলির সম্মুখীন হলে পুরানো প্রোগ্রামগুলি ভেঙে না যায়। এই জাতীয় বৈশিষ্ট্যগুলিও অ্যাপ্লিকেশন পড়ার মাধ্যমে বাতিল করা যেতে পারে। তদুপরি, নতুন উপাদান তৈরি করা যেতে পারে এবং বৈশিষ্ট্যগুলিও এই উপাদানটির সাথে সংজ্ঞায়িত করা যেতে পারে।
ফাইল স্ট্রাকচার
একটি PLY ফাইল বিন্যাসের ফাইল গঠন নিম্নরূপ:
ক্ষেত্র |
---|
ফাইল হেডার |
ভার্টেক্স তালিকা |
মুখের তালিকা |
অন্যান্য উপাদানের তালিকা |
উদাহরণ কাঠামো
আমরা একটি PLY ফাইল ফরম্যাটের বিভিন্ন অংশের জন্য আমাদের পরবর্তী আলোচনায় নীচের উদাহরণটি ব্যবহার করব।
ply
format ascii 1.0 { ascii/binary, format version number }
comment made by Greg Turk { comments keyword specified, like all lines }
comment this file is a cube
element vertex 8 { define "vertex" element, 8 of them in file }
property float x { vertex contains float "x" coordinate }
property float y { y coordinate is also a vertex property }
property float z { z coordinate, too }
element face 6 { there are 6 "face" elements in the file }
property list uchar int vertex_index { "vertex_indices" is a list of ints }
end_header { delimits the end of the header }
0 0 0 { start of vertex list }
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
4 0 1 2 3 { start of face list }
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
ফাইল হেডার
PLY ফাইল ফরম্যাট হেডারে ASCII এবং বাইনারি ফর্ম্যাট উভয়ের জন্য ASCII টেক্সট থাকে। হেডার বিভাগের শুরু এবং শেষ প্লাই এবং এন্ড-হেডার কীওয়ার্ড দ্বারা চিহ্নিত করা হয়। হেডারের শুরুতে ম্যাজিক শব্দ প্লাই রয়েছে যা পাঠকদের দ্বারা PLY ফাইল ফরম্যাট স্বীকৃতির জন্য ব্যবহৃত হয়। পরবর্তী লাইনটি এই ফাইলটির সংস্করণ নম্বর দেখায়। একটি PLY ফাইল বিন্যাসে মন্তব্য প্রতিটি মন্তব্য লাইনের শুরুতে মন্তব্য কীওয়ার্ড দিয়ে শুরু হয়।
এলিমেন্ট কীওয়ার্ড
উপাদান কীওয়ার্ড তারপর ফাইলের ভিতরে কী আছে তা বলে। এটি সেই নির্দিষ্ট উপাদানের প্রকারের জন্য বৈশিষ্ট্য দ্বারা অনুসরণ করা হয় যেখানে প্রতিটি সম্পত্তির সম্পত্তির ধরন এবং ক্রম নিম্নে দেখানো হিসাবে নির্দিষ্ট করা আছে:
element vertex 8 { define "vertex" element, 8 of them in file }
property float x { vertex contains float "x" coordinate }
property float y { y coordinate is also a vertex property }
property float z { z coordinate, too }
এই বিশেষ উদাহরণে, নির্দিষ্ট ভার্টেক্স এলিমেন্টের 3টি বৈশিষ্ট্য আছে টাইপ ফ্লোটের সাথে তাদের অর্ডার নির্দিষ্ট করা আছে।
ডেটা টাইপের প্রকার
একটি সম্পত্তি থাকতে পারে যে দুই ধরনের ডেটা টাইপ আছে.
স্ক্যালার’: স্কেলার ডেটা প্রকারগুলি নীচে দেখানো হয়েছে:
|#নাম|#টাইপ|#বাইটের সংখ্যা |চার|চরিত্র|1 |উচার|অস্বাক্ষরিত অক্ষর|1 |ছোট|সংক্ষিপ্ত পূর্ণসংখ্যা|2 |ushort|অস্বাক্ষরবিহীন ছোট পূর্ণসংখ্যা|2 |int|পূর্ণসংখ্যা|4 |uint|অস্বাক্ষরিত পূর্ণসংখ্যা|4 |ফ্লোট|একক-নির্ভুল ফ্লোট|4 |ডাবল|ডাবল নির্ভুলতা ফ্লোট|8
তালিকা’: সম্পত্তি সংজ্ঞার একটি বিশেষ ফর্ম রয়েছে যা তালিকা ডেটা টাইপ ব্যবহার করে। উপরের কিউব ফাইল থেকে এর একটি উদাহরণ:
সম্পত্তি তালিকা uchar int vertex_index
এর মানে হল যে প্রপার্টি vertex_index-এ প্রথমে একটি স্বাক্ষরবিহীন অক্ষর রয়েছে যা বলে যে সম্পত্তিটিতে কতগুলি সূচক রয়েছে, তারপরে অনেকগুলি পূর্ণসংখ্যা সম্বলিত একটি তালিকা রয়েছে। এই পরিবর্তনশীল-দৈর্ঘ্যের তালিকার প্রতিটি পূর্ণসংখ্যা একটি শীর্ষবিন্দুর একটি সূচক।