PLY(ファイル形式)

ポリゴンファイル形式
ファイル名拡張子
.ply
インターネットメディアタイプ
テキスト/プレーン
タイプコードASCII /バイナリファイル
マジックナンバープライ
開発者グレッグ・タークスタンフォード大学
初回リリース1994年[ 1 ]
フォーマットの種類3Dモデルフォーマット

PLYは、ポリゴンファイルフォーマットまたはスタンフォードトライアングルフォーマットとして知られるコンピュータファイルフォーマットです。主に3Dスキャナからの3次元データを保存するために設計されました。このデータ保存フォーマットは、名目上は平坦なポリゴンのリストとして、単一のオブジェクトの比較的単純な記述をサポートします。色と透明度、表面法線、テクスチャ座標、データ信頼値など、さまざまなプロパティを保存できます。このフォーマットでは、ポリゴンの表裏で異なるプロパティを持つことができます

ファイル形式には 2 つのバージョンがあり、1 つはASCII 形式、もう 1 つはバイナリ形式です。

ファイル形式

Plyファイルは「header」属性で始まります。この属性はメッシュの要素とそのタイプを指定し、その後に要素のリストが続きます。要素は通常、頂点と面ですが、エッジ、範囲マップのサンプル、三角形ストリップなどの他のエンティティが含まれる場合もあります

ASCIIファイルとバイナリファイルのヘッダーはどちらもASCIIテキストです。ヘッダーに続く数値データのみが2つのバージョン間で異なります。ヘッダーは常に「マジックナンバー」で始まり、以下の内容を含む行が含まれます。

ply 

これはファイルがPLYファイルであることを示します。2行目は、これがPLY形式のどのバリエーションであるかを示します。次のいずれかになります

ASCII形式 1.0 バイナリ・リトルエンディアン形式 1.0 バイナリ・ビッグエンディアン形式 1.0 

標準の将来のバージョンでは末尾のリビジョン番号が変更されますが、現在使用されているバージョンは 1.0 のみです。

ヘッダーの行頭に単語「」を置くことでコメントを記述できますcomment。その場合、そこから行末までの内容はすべて無視されます。例:

コメント これはコメントです! 

このelementキーワードは、特定のデータ要素がどのように格納され、いくつ存在するかを記述します。したがって、12個の頂点があり、それぞれが浮動小数点数 (X,Y,Z) の3次元で表現されているファイルでは、次のような記述が期待されます。

要素頂点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の実装では、プロパティ名が大きく異なります。vertex_indicesは よりも頻繁に使用されます。vertex_index例えば、BlenderVTKではです。拡張仕様では、プロパティ名の「コアリスト(必須)」、「第2リスト(よく使用される)」、「第3リスト(推奨される拡張)」がリストされています。[ 2 ]

この単語はlist、データが値のリストであることを示します。リストの最初の要素は、リスト内のエントリ数(この場合は「uchar」で表されます)です。この例では、リストの各エントリは「int」で表されます。ヘッダーの最後には、必ず次の行が必要です。

end_header 

ASCIIまたはバイナリ形式

ASCII版の形式では、頂点と面はそれぞれ1行に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 プロパティフロートnx プロパティフロートny プロパティフロートnz プロパティフロートs プロパティ float t 要素面 6 プロパティリスト uchar uint vertex_indices ヘッダー終了 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)と頂点インデックスが含まれます。

参照

オープンソースソフトウェア

参考文献