1

opengl (c++) で ply ファイル形式を読み込んで描画するコードを書いています。glVertex3d頂点要素に関数を使用しました。そして今、私はelement faceプライファイルが何であるかを理解できませんでした?? これはカラー用ですか?何か案が?

4

3 に答える 3

3

面はポリゴンです。頂点を読み取った後、面の読み取りを開始します。各フェース ラインは、ポリゴン内の頂点の数から始まります。次に、その数の 0 オフセット ポリゴン頂点インデックスが続きます。

頂点を x、y、z メンバーを持つ構造体のベクトルに読み込むとします (たとえば)。また、面のインデックスを構造体に読み込みます。

for (int f = 0; f < num_faces; ++f)
{
    glBegin(GL_POLYGON);
      for (int i = 0; i < face[f].num_vertices; ++i)
      {
        glVertex3f(face[f].vertex[i].x,face[f].vertex[i].y, face[f].vertex[i].z);
      }
    glEnd();
}
于 2013-01-24T19:54:21.083 に答える
2

要素の face は、すべての ply ファイルにいくつの面 (ポリゴン) があるかを示します。

ply
format ascii 1.0           { ascii/binary, format version number }
comment made by Greg Turk  { comments keyword specified, like all lines }
comment this file is a cube
element vertex 8           { define "vertex" element, 8 of them in file }
property float x           { vertex contains float "x" coordinate }
property float y           { y coordinate is also a vertex property }
property float z           { z coordinate, too }
element face 6             { there are 6 "face" elements in the file }
property list uchar int vertex_index { "vertex_indices" is a list of ints }
end_header                 { delimits the end of the header }
0 0 0                      { start of vertex list }
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
4 0 1 2 3                  { start of face list }
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0

フェイス リストの開始位置を確認し、最後まで数えると、6 とカウントする必要があります。また、要素のフェイスもそれを確認するために 6 と表示されます。


上記の ply ファイルは、恥ずかしながら http://paulbourke.net/dataformats/ply/から盗み出されたものです。

于 2013-01-24T19:31:59.063 に答える