fbpx
Wikipedia

PLY (file format)

PLY is a computer file format known as the Polygon File Format or the Stanford Triangle Format. It was principally designed to store three-dimensional data from 3D scanners. The data storage format supports a relatively simple description of a single object as a list of nominally flat polygons. A variety of properties can be stored, including color and transparency, surface normals, texture coordinates and data confidence values. The format permits one to have different properties for the front and back of a polygon.

Polygon File Format
Filename extension
.ply
Internet media type
text/plain
Type codeASCII/Binary file
Magic numberply
Developed byGreg Turk, Stanford University
Initial release1994[1]
Type of format3D model format

There are two versions of the file format, one in ASCII, the other in binary.

The file format edit

A Ply file starts with the "header" attribute, which specifies the elements of a mesh and their types, followed by the list of elements itself. The elements are usually vertices and faces, but may include other entities such as edges, samples of range maps, and triangle strips.

The header of both ASCII and binary files is ASCII text. Only the numerical data that follows the header is different between the two versions. The header always starts with a "magic number", a line containing:

ply 

which identifies the file as a PLY file. The second line indicates which variation of the PLY format this is. It should be one of the following:

format ascii 1.0 format binary_little_endian 1.0 format binary_big_endian 1.0 

Future versions of the standard will change the revision number at the end - but 1.0 is the only version currently in use.

Comments may be placed in the header by using the word comment at the start of the line. Everything from there until the end of the line should then be ignored. e.g.:

comment This is a comment! 

The element keyword introduces a description of how some particular data elements are stored and how many of them there are. Hence, in a file where there are 12 vertices, each represented as a floating point (X,Y,Z) triple, one would expect to see:

element vertex 12 property float x property float y property float z 

Other property lines might indicate that colours or other data items are stored at each vertex and indicate the data type of that information. Regarding the data type, there are two variants depending on the source of the ply file. The type can be specified with one of char uchar short ushort int uint float double, or one of int8 uint8 int16 uint16 int32 uint32 float32 float64. For an object with ten polygonal faces, one might see:

element face 10 property list uchar int vertex_index 

PLY implementations vary wildly in the property names. vertex_indices is more often used than vertex_index, for example in Blender and VTK. The extended specification lists a "Core List (required)", "Second List (often used)" and "Third List (suggested extensions)" of property names.[2]

The word list indicates that the data is a list of values, the first of which is the number of entries in the list (represented as a 'uchar' in this case). In this example each list entry is represented as an 'int'. At the end of the header, there must always be the line:

end_header 

ASCII or binary format edit

In the ASCII version of the format, the vertices and faces are each described one to a line with the numbers separated by white space. In the binary version, the data is simply packed closely together at the endianness specified in the header and with the data types given in the property records. For the common property list... representation for polygons, the first number for that element is the number of vertices that the polygon has and the remaining numbers are the indices of those vertices in the preceding vertex list.

History edit

The PLY format was developed in the mid-90s by Greg Turk and others in the Stanford graphics lab under the direction of Marc Levoy. Its design was inspired by the Wavefront .obj format. However, the Obj format lacked extensibility for arbitrary properties and groupings, so the property and element keywords were devised to generalize the notions of vertices, faces, associated data, and other groups.

Example file edit

The following is a full example of a PLY file which describes a cube mesh exported from Blender version 4.0.2:

ply format ascii 1.0 comment Created in Blender version 4.0.2 element vertex 14 property float x property float y property float z property float nx property float ny property float nz property float s property float t element face 6 property list uchar uint vertex_indices end_header 1 1 1 0.5773503 0.5773503 0.5773503 0.625 0.5 -1 1 1 -0.5773503 0.5773503 0.5773503 0.875 0.5 -1 -1 1 -0.5773503 -0.5773503 0.5773503 0.875 0.75 1 -1 1 0.5773503 -0.5773503 0.5773503 0.625 0.75 1 -1 -1 0.5773503 -0.5773503 -0.5773503 0.375 0.75 -1 -1 1 -0.5773503 -0.5773503 0.5773503 0.625 1 -1 -1 -1 -0.5773503 -0.5773503 -0.5773503 0.375 1 -1 -1 -1 -0.5773503 -0.5773503 -0.5773503 0.375 0 -1 -1 1 -0.5773503 -0.5773503 0.5773503 0.625 0 -1 1 1 -0.5773503 0.5773503 0.5773503 0.625 0.25 -1 1 -1 -0.5773503 0.5773503 -0.5773503 0.375 0.25 -1 1 -1 -0.5773503 0.5773503 -0.5773503 0.125 0.5 1 1 -1 0.5773503 0.5773503 -0.5773503 0.375 0.5 -1 -1 -1 -0.5773503 -0.5773503 -0.5773503 0.125 0.75 4 0 1 2 3 4 4 3 5 6 4 7 8 9 10 4 11 12 4 13 4 12 0 3 4 4 10 9 0 12 

The file starts with the header which defines a file in ASCII format. There are 14 vertices (6 faces * 4 vertices - 10 vertices saved due to merging) and 6 faces in total. After the header, the vertex and face data is listed. The vertex list contains position (x,y,z), normals (nx,ny,nz) and texture coordinates (s,t) for each of the 14 vertices. The face list contains the vertex count (4) and the vertex indices for each of the 6 quadrilateral faces.

See also edit

Open source software edit

  • CloudCompare having a focus on point clouds with some additional functions for meshes.
  • GigaMesh Software Framework: numerical computations on meshes in PLY (or OBJ).
  • MeshLab: generic application for visualizing, processing and converting three-dimensional meshes to or from the PLY file format.

References edit

  1. ^ Greg Turk. . Archived from the original on 2016-12-04.
  2. ^ Greg Turk. "The PLY Polygon File Format (extended)" (PDF).

External links edit

  • Library of Congress Format Description
  • PLY - Polygon File Format
  • Some tools for working with PLY files (C source code)
  • rply - An Ansi C software library for reading and writing PLY files (MIT license)
  • Another C++ software library for reading and writing PLY files (GPL 3.0 license)
  • A repository of 3D models stored in the PLY format


file, format, computer, file, format, known, polygon, file, format, stanford, triangle, format, principally, designed, store, three, dimensional, data, from, scanners, data, storage, format, supports, relatively, simple, description, single, object, list, nomi. PLY is a computer file format known as the Polygon File Format or the Stanford Triangle Format It was principally designed to store three dimensional data from 3D scanners The data storage format supports a relatively simple description of a single object as a list of nominally flat polygons A variety of properties can be stored including color and transparency surface normals texture coordinates and data confidence values The format permits one to have different properties for the front and back of a polygon Polygon File FormatFilename extension plyInternet media typetext plainType codeASCII Binary fileMagic numberplyDeveloped byGreg Turk Stanford UniversityInitial release1994 1 Type of format3D model formatThere are two versions of the file format one in ASCII the other in binary Contents 1 The file format 2 ASCII or binary format 3 History 4 Example file 5 See also 6 Open source software 7 References 8 External linksThe file format editA Ply file starts with the header attribute which specifies the elements of a mesh and their types followed by the list of elements itself The elements are usually vertices and faces but may include other entities such as edges samples of range maps and triangle strips The header of both ASCII and binary files is ASCII text Only the numerical data that follows the header is different between the two versions The header always starts with a magic number a line containing ply which identifies the file as a PLY file The second line indicates which variation of the PLY format this is It should be one of the following format ascii 1 0 format binary little endian 1 0 format binary big endian 1 0 Future versions of the standard will change the revision number at the end but 1 0 is the only version currently in use Comments may be placed in the header by using the word comment at the start of the line Everything from there until the end of the line should then be ignored e g comment This is a comment The element keyword introduces a description of how some particular data elements are stored and how many of them there are Hence in a file where there are 12 vertices each represented as a floating point X Y Z triple one would expect to see element vertex 12 property float x property float y property float z Other property lines might indicate that colours or other data items are stored at each vertex and indicate the data type of that information Regarding the data type there are two variants depending on the source of the ply file The type can be specified with one of char uchar short ushort int uint float double or one of int8 uint8 int16 uint16 int32 uint32 float32 float64 For an object with ten polygonal faces one might see element face 10 property list uchar int vertex index PLY implementations vary wildly in the property names vertex indices is more often used than vertex index for example in Blender and VTK The extended specification lists a Core List required Second List often used and Third List suggested extensions of property names 2 The word list indicates that the data is a list of values the first of which is the number of entries in the list represented as a uchar in this case In this example each list entry is represented as an int At the end of the header there must always be the line end headerASCII or binary format editIn the ASCII version of the format the vertices and faces are each described one to a line with the numbers separated by white space In the binary version the data is simply packed closely together at the endianness specified in the header and with the data types given in the property records For the common property list representation for polygons the first number for that element is the number of vertices that the polygon has and the remaining numbers are the indices of those vertices in the preceding vertex list History editThe PLY format was developed in the mid 90s by Greg Turk and others in the Stanford graphics lab under the direction of Marc Levoy Its design was inspired by the Wavefront obj format However the Obj format lacked extensibility for arbitrary properties and groupings so the property and element keywords were devised to generalize the notions of vertices faces associated data and other groups Example file editThe following is a full example of a PLY file which describes a cube mesh exported from Blender version 4 0 2 ply format ascii 1 0 comment Created in Blender version 4 0 2 element vertex 14 property float x property float y property float z property float nx property float ny property float nz property float s property float t element face 6 property list uchar uint vertex indices end header 1 1 1 0 5773503 0 5773503 0 5773503 0 625 0 5 1 1 1 0 5773503 0 5773503 0 5773503 0 875 0 5 1 1 1 0 5773503 0 5773503 0 5773503 0 875 0 75 1 1 1 0 5773503 0 5773503 0 5773503 0 625 0 75 1 1 1 0 5773503 0 5773503 0 5773503 0 375 0 75 1 1 1 0 5773503 0 5773503 0 5773503 0 625 1 1 1 1 0 5773503 0 5773503 0 5773503 0 375 1 1 1 1 0 5773503 0 5773503 0 5773503 0 375 0 1 1 1 0 5773503 0 5773503 0 5773503 0 625 0 1 1 1 0 5773503 0 5773503 0 5773503 0 625 0 25 1 1 1 0 5773503 0 5773503 0 5773503 0 375 0 25 1 1 1 0 5773503 0 5773503 0 5773503 0 125 0 5 1 1 1 0 5773503 0 5773503 0 5773503 0 375 0 5 1 1 1 0 5773503 0 5773503 0 5773503 0 125 0 75 4 0 1 2 3 4 4 3 5 6 4 7 8 9 10 4 11 12 4 13 4 12 0 3 4 4 10 9 0 12 The file starts with the header which defines a file in ASCII format There are 14 vertices 6 faces 4 vertices 10 vertices saved due to merging and 6 faces in total After the header the vertex and face data is listed The vertex list contains position x y z normals nx ny nz and texture coordinates s t for each of the 14 vertices The face list contains the vertex count 4 and the vertex indices for each of the 6 quadrilateral faces See also editSTL file format another common file format for 3D printing Additive Manufacturing File Format Wavefront obj file a 3D geometry definition file format with obj file extension glTF a Khronos Group file format for 3D Scenes and models Universal Scene Description USD Open source software editCloudCompare having a focus on point clouds with some additional functions for meshes GigaMesh Software Framework numerical computations on meshes in PLY or OBJ MeshLab generic application for visualizing processing and converting three dimensional meshes to or from the PLY file format References edit Greg Turk The PLY Polygon File Format Archived from the original on 2016 12 04 Greg Turk The PLY Polygon File Format extended PDF External links editLibrary of Congress Format Description PLY Polygon File Format Some tools for working with PLY files C source code rply An Ansi C software library for reading and writing PLY files MIT license libply A C software library for reading and writing PLY files GNU license Another C software library for reading and writing PLY files GPL 3 0 license A repository of 3D models stored in the PLY format nbsp This computer storage related article is a stub You can help Wikipedia by expanding it vte Retrieved from https en wikipedia org w index php title PLY file format amp oldid 1208684455, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.