Ano ang isang PLY file?
Ang PLY, Polygon File Format, ay kumakatawan sa 3D na format ng file na nag-iimbak ng mga graphical na bagay na inilarawan bilang isang koleksyon ng mga polygon. Ang layunin ng format ng file na ito ay magtatag ng simple at madaling uri ng file na sapat na pangkalahatan upang maging kapaki-pakinabang para sa malawak na hanay ng mga modelo. Ang PLY file format ay dumating bilang ASCII pati na rin ang Binary na format para sa compact storage at para sa mabilis na pag-save at pag-load. Ang format ng file ay ginagamit ng iba’t ibang mga application na nagbibigay ng suporta para sa pagbabasa ng mga 3D na file.
Ang mga bagay sa isang PLY na format ay inilalarawan ng isang koleksyon ng mga vertices, mukha at iba pang mga elemento, kasama ang mga katangian tulad ng kulay at normal na direksyon na maaaring ilakip sa mga elementong ito. Ang iba pang mga katangian na maaari ding maimbak kasama ng bagay ay kinabibilangan ng:
- Surface normals
- mga coordinate ng texture
- transparency
- kumpiyansa ng data ng saklaw
- mga katangian para sa harap at likod ng isang polygon
Ang isang bagay na kinakatawan ng PLY na format ay maaaring resulta ng iba’t ibang mapagkukunan tulad ng mga hand-digitized na bagay, polygon na mga bagay mula sa pagmomodelo ng mga application, range data, triangles mula sa mga marching cube, data ng terrain at radiosity na mga modelo.
Maikling Kasaysayan
Ang PLY format ay binuo noong 1990’s ni Greg Turk at ng iba pa sa Stanford graphics lab at kaya naman kilala rin ito bilang Stanford Triangle Format. Ang format ng file ay may bersyon 1.0 mula noon at walang karagdagang pagbabago ang ginawa.
PLY File Format
Ang isang simpleng bagay na PLY ay binubuo ng koleksyon ng mga elemento para sa representasyon ng bagay. Binubuo ito ng isang listahan ng (x,y,z) triple ng isang vertices at isang listahan ng mga mukha na talagang mga indeks sa listahan ng mga vertices. Ang mga vertices at mukha ay dalawang halimbawa ng mga elemento at karamihan sa PLY file ay binubuo ng dalawang elementong ito. Ang mga bagong pag-aari ay maaari ding gawin at ikabit sa mga elemento ng isang bagay, ngunit ang mga ito ay dapat na idagdag sa paraang hindi masira ang mga lumang programa kapag ang mga bagong katangian ay nakatagpo. Ang ganitong mga pag-aari ay maaaring itapon sa pamamagitan ng pagbabasa ng mga application pati na rin. Higit pa rito, maaaring gumawa ng mga bagong elemento at maaaring tukuyin ang mga property sa elementong ito rin.
Istraktura ng File
Ang istraktura ng file ng isang PLY file format ay ang sumusunod:
Field |
---|
File Header |
Vertex List |
Face List |
List of other elements |
Example Structure
Gagamitin namin ang sumusunod na halimbawa sa ibaba sa aming kasunod na talakayan para sa iba’t ibang bahagi ng isang format ng PLY file.
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
File Header
Ang PLY file format header ay binubuo ng ASCII text para sa parehong ASCII pati na rin sa binary format. Ang simula at dulo ng seksyon ng header ay nakikilala sa pamamagitan ng ply at end-header na mga keyword.Ang simula ng header ay may magic word ply na ginagamit para sa pagkilala sa PLY file format ng mga mambabasa. Ipinapakita ng susunod na linya ang numero ng bersyon para sa file na ito. Ang mga komento sa isang format ng PLY file ay nagsisimula sa keyword ng komento sa simula ng bawat linya ng komento.
Element Keyword
Pagkatapos ay sasabihin ng keyword ng elemento kung ano ang nasa loob ng file. Sinusundan ito ng mga pag-aari para sa partikular na uri ng elemento kung saan ang bawat ari-arian ay may uri ng pag-aari at pagkakasunod-sunod na tinukoy tulad ng ipinapakita sa ibaba:
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 }
Sa partikular na halimbawang ito, ang partikular na elemento ng vertex ay may 3 katangian ng uri ng float na tinukoy ang kanilang pagkakasunod-sunod.
Types of Data Types
Mayroong dalawang uri ng mga uri ng data na maaaring mayroon ang isang property.
Scalar
: The scalar data types are as shown below:
|#Name|#Type|#Number of Bytes |char|character|1 |uchar|unsigned character|1 |short|short integer|2 |ushort|unsigned short integer|2 |int|Integer|4 |uint|unsigned Integer|4 |float|single-precision float|4 |double|double precision float|8
List
: There is a special form of property definitions that uses the list data type. An example of this is from the cube file above:
property list uchar int vertex_index
Nangangahulugan ito na ang property na “vertex_index” ay naglalaman muna ng isang unsigned char na nagsasabi kung gaano karaming mga indeks ang nilalaman ng property, na sinusundan ng isang listahan na naglalaman ng ganoon karaming integer. Ang bawat integer sa listahan ng variable-length na ito ay isang index sa isang vertex.