Hva er en PLY-fil?
PLY, Polygon File Format, representerer 3D-filformat som lagrer grafiske objekter beskrevet som en samling av polygoner. Formålet med dette filformatet var å etablere en enkel og enkel filtype som er generell nok til å være nyttig for et bredt spekter av modeller. PLY filformat kommer som ASCII så vel som binært format for kompakt lagring og for rask lagring og lasting. Filformatet brukes av forskjellige applikasjoner som gir støtte for lesing av 3D-filer.
Objekter i et PLY-format er beskrevet av en samling hjørner, flater og andre elementer, sammen med egenskaper som farge og normal retning som kan festes til disse elementene. Andre egenskaper som også kan lagres med objektet inkluderer:
- Overflatenormaler
- teksturkoordinater
- åpenhet
- datasikkerhet for rekkevidde
- egenskaper for forsiden og baksiden av en polygon
Et objekt representert ved PLY-format kan være et resultat av ulike kilder som hånddigitaliserte objekter, polygonobjekter fra modelleringsapplikasjoner, rekkeviddedata, trekanter fra marsjerende terninger, terrengdata og radiositetsmodeller.
Kort historie
PLY-formatet ble utviklet på 1990-tallet av Greg Turk og andre i Stanfords grafikklab, og det er derfor det også er kjent som Stanford Triangle Format. Filformatet har versjon 1.0 siden den gang, og ingen ytterligere endringer ble gjort.
PLY-filformat
Et enkelt PLY-objekt består av samling av elementer for representasjon av objektet. Den består av en liste over (x,y,z) trippel av et toppunkt og en liste over ansikter som faktisk er indekser i listen over toppunkter. Topppunkter og ansikter er to eksempler på elementer, og størstedelen av PLY-filen består av disse to elementene. Nye egenskaper kan også opprettes og knyttes til elementene i et objekt, men disse bør legges til på en slik måte at gamle programmer ikke går i stykker når disse nye egenskapene støtes på. Slike egenskaper kan forkastes ved å lese applikasjoner også. I tillegg kan nye elementer opprettes og egenskaper kan defineres med dette elementet også.
Filstruktur
Filstrukturen til et PLY-filformat er som følger:
Field |
---|
File Header |
Vertex List |
Face List |
List of other elements |
Eksempelstruktur
Vi vil bruke følgende eksempel nedenfor i vår påfølgende diskusjon for ulike deler av et PLY-filformat.
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
Filoverskrift
PLY-filformatoverskriften består av ASCII-tekst for både ASCII- og binærformatet. Starten og slutten av overskriftsseksjonen identifiseres med nøkkelord for ply og end-header.Starten på overskriften har det magiske ordet ply som brukes til å gjenkjenne PLY-filformatet av lesere. Den neste linjen viser versjonsnummeret for denne filen. Kommentarer i et PLY-filformat starter med kommentarnøkkelord i starten av hver kommentarlinje.
Elementsøkeord
Elementnøkkelordet forteller deretter hva som er inne i filen. Det etterfølges av egenskaper for den spesifikke elementtypen der hver egenskap har sin egenskapstype og rekkefølge spesifisert som vist nedenfor:
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 }
I dette spesielle eksemplet har det spesifikke toppunktelementet 3 egenskaper av typen float med rekkefølgen spesifisert.
Typer av datatyper
Det er to typer datatyper som en egenskap kan ha.
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
Dette betyr at egenskapen “vertex_index” først inneholder et usignert tegn som forteller hvor mange indekser egenskapen inneholder, etterfulgt av en liste som inneholder så mange heltall. Hvert heltall i denne listen med variabel lengde er en indeks til et toppunkt.