5

何らかの目的で、テクスチャが埋め込まれた PLY ファイル (Stanford Triangle Format) を読み取る必要があります。PLY ファイルの仕様をいくつか見ましたが、テクスチャ マッピングの構文を指定する単一のソースを見つけることができませんでした。PLY ファイルを読み込むライブラリはたくさんあるようですが、テクスチャをサポートしていないライブラリがほとんどのようです (クラッシュするだけです。そのうちの 2 ~ 3 つを試しました)。以下は、テクスチャを含む ply ファイルのヘッダーにあります。

ply
format binary_little_endian 1.0
comment TextureFile Parameterization.png
element vertex 50383               
property float x
property float y
property float z
property float nx
property float ny
property float nz
element face 99994               
property list uint8 int32 vertex_index
property list uint8 float texcoord
end_header

私が理解していないのは行property list uint8 float texcoordです。また、顔に対応するリストは

3 1247 1257 1279 6 0.09163 0.565323 0.109197 0.565733 0.10888 0.602539 6 9 0.992157 0.992157 0.992157 0.992157 0.992157 0.992157 0.992157 0.992157 0.992157`. 

このリストは何ですか。フォーマットは何ですか?PLY が要素の独自のプロパティを定義する機会を提供することは理解していますが、テクスチャの処理はほぼ標準のようであり、かなりの数のアプリケーション (人気の Meshlab など) が上記の構文を使用してテクスチャ付き PLY ファイルを開くようです。 .

テクスチャ化された PLY ファイルを読み取るための標準構文と、可能であればこの情報のソースを知りたいです。

4

2 に答える 2

6

PLY ファイルでは、多くの場合、面に値のリストが含まれており、これらのリストのサイズはさまざまです。三角形の面の場合は、3 つの値、quad = 4 など、任意の n-gon まで期待できます。リストは次のような行で宣言されます。

property list uint8 int32 vertex_index

これは「頂点インデックス」と呼ばれるリストです。これは常に、サイズ N の 8 ビット符号なし整数 (uint8) とそれに続く N 個の 32 ビット整数 (int32) で構成されます。

例の行では、これはすぐに表示されます:

3 1247 1257 1279

これは、ここに 3 つの値が来て、それから 3 つが得られることを示しています。

2 番目のリストは、テクスチャ座標があるべき場所です。

property list uint8 float texcoord

サイズが (符号なしバイトとして) 最初に来るという点で最初のリストと同じですが、今回は整数の代わりに一連の 32 ビット浮動小数点数が続きます (テクスチャ座標に意味があります)。簡単に解釈すると、vertex_index にリストされている頂点ごとにテクスチャ座標が存在します。これらが単なる 2D テクスチャ座標であると仮定すると (かなり安全な仮定)、数値 6 の後に 6 つの浮動小数点値が続くことが予想されます。

6 0.09163 0.565323 0.109197 0.565733 0.10888 0.602539

これらは、既にリストされている 3 つの頂点に対応するテクスチャ座標です。

さて、顔については、それで十分です。ラインの残りの部分に何があるかわかりません。あなたのヘッダーによると、ファイルの残りの部分はバイナリである必要があるため、ASCIIテキストの行としてそれを取得した方法はわかりませんが、その行の余分なデータはそこにあるべきではありません(完全に定義するヘッダーによると顔)。

于 2015-03-27T03:20:24.747 に答える