PLY (ファイル形式)

PLYはPolygon File FormatもしくはStanford Triangle Formatとして知られているコンピュータファイル形式である。これは原則として3Dスキャナからの3次元データを格納するために設計された。データ格納形式は、名目上平面ポリゴンのリストとして、単独オブジェクトの比較的簡単な記述をサポートしている。以下を含めた様々なプロパティが格納され得る: 色および透明性、サーフィス法線、テクスチャ座標およびデータ信頼値。また、この形式はポリゴンの表と裏に異なったプロパティを持たせることができる。このファイル形式には、ASCIIとバイナリの二つのバージョンが存在する。
ファイル形式.
ファイルはヘッダにより組織され、そのヘッダにメッシュの要素およびその型が指定されており、それに要素自身のリストが続く。通常、その要素は頂点と面であるが、辺や、レンジマップのサンプルや、トライアングルストリップのような他の項目も含むことができる。
ASCII及びバイナリファイルのヘッダは、どちらもASCIIテキストとなっている。二つのバージョンは、ヘッダ後の数値データのみ異なる。
ヘッダは常に、ファイルをPLYファイルとするための識別子である
 ply
の行を含むマジックナンバーで始まる。二行目はPLY形式のバリエーションを示す。これは以下のどれかである必要がある:
 format ascii 1.0
 format binary_little_endian 1.0
 format binary_big_endian 1.0
この標準の将来のバージョンでは、最後の部分にあるリビジョンバージョンが変わりうる。しかし、現在のところ1.0のみ使われている。
コメントは、行頭で単語codice_1を使うことにより、ヘッダーに置くことができる。これは行頭から行末までの全てが無視される。例:
 comment This is a comment!
'element'キーワードは、どのように何か特有のデータ要素が格納され、どれぐらいそれらがあるのかの記述に導入されている。従って、12頂点あり、それぞれが浮動小数点 (X, Y, Z) の三つとして表現されたファイルは、以下のようになるだろう:
 element vertex 12
 property float x
 property float y
 property float z
他の'property'には、それぞれの頂点に色やその他のデータ項目が含まれていること、及びその情報のデータ型を示しても良い。データ型には、PLYファイルの出所に依って、二種類存在する。型は"char uchar short ushort int uint float double"の内の一つ、もしくは"int8 uint8 int16 uint16 int32 uint32 float32 float64"の内の一つで指定できる。十角ポリゴン面を持つオブジェクトは、以下のようになる:
 element face 10
 property list uchar int vertex_indices
単語'list'はデータが値のリストであることを示す。リストの行にある最初の型は、項目数のものを表す (この場合、'uchar'として表現される)。この例ではそれぞれのリスト項目は'int'として表現される。また、ヘッダの最後に、常に以下の行が無くてはならない:
 end_header
ASCII又はバイナリ形式.
この形式のASCII版では、空白で区切られた数字を持つ行に頂点と面がそれぞれ記述される。バイナリ版では、データは単純にヘッダで指定された'エンディアン'かつ'property'レコードに与えられたデータタイプで、ぎっしり詰め込まれる。ポリゴン共通の「property list ...」の表現のために、要素の最初の数字はポリゴンが持つ頂点の数となっており、残りの数字は先行する頂点リストにあるこれらの頂点のインデックスとなっている。
歴史.
PLY形式は90年代半ばにスタンフォードグラフィクス研究所のらによってMarc Levoyの指導の下に開発された。その設計はWavefront .objファイルにインスパイアされたものの、Obj形式は任意のプロパティ及びグルーピングの拡張性を欠いていたため、頂点、面、構成データ、他のグルーピングの観念を一般化して"property"及び"element"キーワードが案出された。