PLYは、ポリゴンファイルフォーマットまたはスタンフォードトライアングルフォーマットとして知られるコンピュータファイルフォーマットです。主に3Dスキャナからの3次元データを保存するために設計されました。このデータ保存フォーマットは、単一のオブジェクトを、名目上平面のポリゴンのリストとして比較的簡単に記述することを可能にします。色や透明度、表面法線、テクスチャ座標、データ信頼度値など、さまざまなプロパティを保存できます。このフォーマットでは、ポリゴンの前面と背面で異なるプロパティを設定できます。
Plyファイルは、「header」属性で始まります。この属性はメッシュの要素とそのタイプを指定し、その後に要素のリストが続きます。要素は通常、頂点と面ですが、エッジ、レンジマップのサンプル、三角形ストリップなどの他のエンティティが含まれる場合もあります。
ASCIIファイルとバイナリファイルのどちらのヘッダーもASCIIテキストです。ヘッダーに続く数値データのみが両者で異なります。ヘッダーは常に「マジックナンバー」と呼ばれる行で始まり、その行には以下の内容が含まれます。
プライ
これは、ファイルがPLYファイルであることを識別します。2行目は、これがPLYフォーマットのどのバリエーションであるかを示します。以下のいずれかである必要があります。
フォーマット ascii 1.0 フォーマット:バイナリリトルエンディアン 1.0 フォーマット:バイナリビッグエンディアン 1.0
規格の将来のバージョンでは末尾の改訂番号が変更されますが、現在使用されているバージョンは1.0のみです。
コメントは、行頭に単語を使用することでヘッダー内に配置できますcomment。そこから行末までの内容はすべて無視されます。例:
コメント これはコメントです!
このelementキーワードは、特定のデータ要素がどのように格納されているか、またその数がいくつあるかを説明するものです。したがって、それぞれが浮動小数点数(X、Y、Z)の3つ組として表現される12個の頂点を持つファイルでは、次のような記述が期待されます。
要素頂点12 プロパティ float x プロパティ float y プロパティ float z
その他のproperty行は、各頂点に色やその他のデータ項目が格納されていることを示し、その情報のデータ型を示します。データ型に関しては、ply ファイルのソースに応じて 2 つのバリエーションがあります。型はchar uchar short ushort int uint float double、 、 または のいずれかで指定できますint8 uint8 int16 uint16 int32 uint32 float32 float64。10 個の多角形面を持つオブジェクトの場合、次のようになります。
要素面10 プロパティリスト uchar int vertex_index
PLYの実装では、プロパティ名が大きく異なります。BlenderやVTKなどでは、vertex_indicesよりもがよく使われます。拡張仕様では、プロパティ名の「コアリスト(必須)」、「第2リスト(よく使われる)」、「第3リスト(推奨される拡張)」がリストされています。[ 2 ]vertex_index
この単語はlist、データが値のリストであることを示しており、最初の値はリストのエントリ数(この場合は「uchar」で表されます)です。この例では、リストの各エントリは「int」で表されます。ヘッダーの末尾には、必ず次の行が必要です。
ヘッダー終了
ASCII形式のフォーマットでは、頂点と面はそれぞれ1行に記述され、数値は空白で区切られます。バイナリ形式では、データはendiannessヘッダーで指定された場所に密に詰め込まれ、レコードにはデータ型が指定されますproperty。多角形の一般的なproperty list...表現では、その要素の最初の数値は多角形が持つ頂点の数であり、残りの数値は前の頂点リストにおけるそれらの頂点のインデックスです。
PLYフォーマットは、1990年代半ばにスタンフォード大学グラフィックスラボのグレッグ・タークらがマーク・レヴォイの指導の下で開発しました。その設計はWavefrontの.objフォーマットに触発されたものです。しかし、Objフォーマットは任意のプロパティやグループ化に対する拡張性に欠けていたため、頂点、面、関連データ、その他のグループの概念を一般化するために、propertyおよびキーワードが考案されました。element
以下は、 Blenderバージョン4.0.2からエクスポートされた立方体メッシュを記述したPLYファイルの完全な例です。
プライ フォーマット ascii 1.0 コメント:Blenderバージョン4.0.2で作成 要素頂点14 プロパティ float x プロパティ float y プロパティ float z プロパティ float nx 不動産フロートニューヨーク ニュージーランドの不動産フロート プロパティ float s プロパティ float t 要素面6 プロパティリスト uchar uint 頂点インデックス ヘッダー終了 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
ファイルは、ASCII形式でファイルを定義するヘッダーから始まります。頂点は14個(6面×4頂点-マージにより10個の頂点が保存)で、面は合計6つです。ヘッダーの後には、頂点と面のデータがリストされています。頂点リストには、14個の頂点それぞれについて、位置(x、y、z)、法線(nx、ny、nz)、テクスチャ座標(s、t)が含まれています。面リストには、6つの四角形の面それぞれについて、頂点数(4)と頂点インデックスが含まれています。