ไฟล์ PLY คืออะไร??
PLY, รูปแบบไฟล์รูปหลายเหลี่ยม แสดงถึงรูปแบบไฟล์ 3 มิติที่เก็บวัตถุกราฟิกที่อธิบายว่าเป็นชุดของรูปหลายเหลี่ยม จุดประสงค์ของรูปแบบไฟล์นี้คือเพื่อสร้างประเภทไฟล์ที่ง่ายและสะดวกซึ่งทั่วไปเพียงพอที่จะเป็นประโยชน์สำหรับรุ่นต่างๆ ที่หลากหลาย รูปแบบไฟล์ PLY มาพร้อมกับรูปแบบ ASCII เช่นเดียวกับรูปแบบไบนารีสำหรับการจัดเก็บที่กะทัดรัดและสำหรับการบันทึกและโหลดอย่างรวดเร็ว รูปแบบไฟล์ถูกใช้โดยแอพพลิเคชั่นต่าง ๆ ที่รองรับการอ่านไฟล์ 3D
วัตถุในรูปแบบ PLY ได้รับการอธิบายโดยชุดของจุดยอด ใบหน้า และองค์ประกอบอื่นๆ พร้อมด้วยคุณสมบัติต่างๆ เช่น สีและทิศทางปกติที่สามารถยึดติดกับองค์ประกอบเหล่านี้ได้ คุณสมบัติอื่น ๆ ที่สามารถจัดเก็บพร้อมกับวัตถุ ได้แก่ :
- พื้นผิวปกติ
- พิกัดพื้นผิว
- ความโปร่งใส
- ความเชื่อมั่นของข้อมูลช่วง คุณสมบัติ * สำหรับด้านหน้าและด้านหลังของรูปหลายเหลี่ยม
วัตถุที่แสดงด้วยรูปแบบ PLY อาจเป็นผลมาจากแหล่งที่มาต่างๆ เช่น วัตถุที่แปลงด้วยมือเป็นดิจิทัล วัตถุหลายเหลี่ยมจากแอปพลิเคชันการสร้างแบบจำลอง ข้อมูลช่วง สามเหลี่ยมจากลูกบาศก์เดินขบวน ข้อมูลเทเรน และแบบจำลองคลื่นวิทยุ
ประวัติย่อ
รูปแบบ PLY ได้รับการพัฒนาขึ้นในปี 1990 โดย Greg Turk และคนอื่นๆ ในแล็บกราฟิกของ Stanford และนั่นเป็นสาเหตุที่เรียกรูปแบบนี้ว่า Stanford Triangle Format รูปแบบไฟล์เป็นเวอร์ชัน 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 |uchar|อักขระที่ไม่ได้ลงนาม|1 |สั้น|จำนวนเต็มสั้น|2 |ushort|จำนวนเต็มสั้นที่ไม่ได้ลงนาม|2 |int|จำนวนเต็ม|4 |uint|จำนวนเต็มไม่ได้ลงชื่อ|4 |ลูกลอย|ลูกลอยความแม่นยำระดับเดียว|4 |คู่|ลอยความแม่นยำสองเท่า|8
List
: มีรูปแบบพิเศษของคำจำกัดความคุณสมบัติที่ใช้ประเภทข้อมูลรายการ ตัวอย่างนี้มาจากไฟล์คิวบ์ด้านบน:
รายการคุณสมบัติ uchar int vertex_index
ซึ่งหมายความว่าคุณสมบัติ “vertex_index” มีอักขระที่ไม่ได้ลงนามเป็นอันดับแรกซึ่งบอกจำนวนดัชนีที่มีคุณสมบัติตามด้วยรายการที่มีจำนวนเต็มจำนวนมาก จำนวนเต็มแต่ละรายการในรายการความยาวตัวแปรนี้เป็นดัชนีของจุดยอด