PLY(Polygon File Format)は、
スタンフォード大学で開発された3Dモデルを記述するためのファイル形式です。主に3Dスキャナから得られた3次元データの格納を目的としており、シンプルな記述で単独オブジェクトの表現を可能にします。この形式は、頂点、面、色、透明度、サーフェス法線、テクスチャ座標、データ信頼値など、多岐にわたるプロパティを格納できます。
ファイル形式の構造
PLYファイルは、ヘッダーとデータ本体で構成されています。ヘッダーには、メッシュの要素の種類や数が記述され、その後に要素のリストが続きます。通常、要素は頂点と面ですが、辺、レンジマップのサンプル、トライアングルストリップなども格納できます。
ヘッダーは
ASCIIテキスト形式で記述され、
ASCII版とバイナリ版で共通です。ヘッダーの最初の行は、ファイルがPLY形式であることを示すマジックナンバー`ply`で始まります。次の行では、PLY形式のバリエーションを示し、以下のいずれかが記述されます。
format ascii 1.0
format binary_little_endian 1.0
format binary_big_endian 1.0
現在、リビジョンバージョンは1.0のみが使用されています。ヘッダーには、`comment`キーワードを用いてコメントを記述でき、コメント行は無視されます。
`element`キーワードは、特定のデータ要素の種類と数を定義します。例えば、12個の頂点を持ち、各頂点が3つの浮動小数点数(X, Y, Z)で表現される場合、ヘッダーには以下のように記述されます。
element vertex 12
property float x
property float y
property float z
`property`キーワードは、各頂点に追加の色やその他のデータ項目とそのデータ型を示します。データ型には、`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`)は、リスト内の項目数を表し、2番目の型(`int`)は、各リスト項目のデータ型を表します。ヘッダーの最後には、必ず`end_header`という行が必要です。
ASCII形式では、頂点と面は空白で区切られた数値を持つ行に記述されます。バイナリ形式では、データはヘッダーで指定されたエンディアンとデータ型に従って、連続して格納されます。ポリゴンの表現には、リストの最初の数値がポリゴンの頂点数を示し、それに続く数値は、頂点リスト内の対応する頂点のインデックスを示します。
歴史
PLY形式は、1990年代半ばにスタンフォード・グラフィックス研究所のGreg Turkらによって、Marc Levoyの指導の下で開発されました。Wavefront .obj形式に影響を受けたものの、Obj形式には任意プロパティやグループ化機能が欠けていたため、頂点、面、構成データ、その他のグルーピングの概念を一般化するために、`property`と`element`キーワードが導入されました。
関連情報
PLY形式に関連する他のファイル形式、
ソフトウェア、および資料について以下に示します。
Standard Triangulated Language (STL): 3Dモデルを表現する別の一般的なファイル形式です。
Additive Manufacturing File Format (AMF): 3Dプリンティング用のファイル形式です。
Wavefront .objファイル: 3Dジオメトリ定義ファイル形式で、PLYの設計に影響を与えました。
MeshLab: PLY形式を扱うためのオープンソースの3Dメッシュ処理・可視化ツールです。
CloudCompare: PLYファイルを扱えるオープンソースのポイントクラウド処理ソフトウェアです。
Mathematica: PLYファイルを扱える技術計算システムです。
外部リンク
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