/ / AssimpはPLYモデルの頂点カラーを読み込めません - c ++、opengl、glsl、assimp、ply-file-format

AssimpはPLYモデルの頂点の色を読み込むことはできません - c ++、OpenGL、glsl、assimp、ply-file-format

私はOpenGLのウィンドウでassimp3.0を使っています。次のような行でプライモデルをロードして表示しようとしました。

Assimp::Importer importer;
const aiScene* scene = NULL;
scene = importer.ReadFile("filename", 0);

私はで頂点バッファを構築しました scene->mMeshes[0]->mVertices とカラーバッファ scene->mMeshes[0]->mColors しかし、コードをデバッグするときには、 scene->mMeshes[0]->mColors[0] 色を手に入れた、 scene->mMeshes[0]->mColors[1] 以下の要素はNULLのままです 以下は私が書いた短い層の例です。

ply
format ascii 1.0
comment VCGLIB generated
element vertex 3
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
property uchar alpha
element face 1
property list uchar int vertex_indices
end_header
0.0 0.0 0.0 219 227 248 255
1.0 0.0 0.0 220 230 212 255
2.0 0.0 2.0 160 122 221 255
3 0 1 2

私は現在、それが間違ったpFlagsパラメータによって引き起こされたのか疑問に思います。 importer.ReadFile(pFile,pFlags).

誰が私がどの部分がうまくいかなかったかについて理解するのを手伝うことができます。

回答:

回答№1は1

私は問題を理解したと思います。

あなたはこのような色を読んでいます

for (int i = 0; i < vertexCount; i++)
vertexColor = scene->mMeshes[0]->mColors[i];

しかし、AssImpは複数の頂点カラーチャンネルを保存することができるので、このようにそれを読むことになっています。

for (int i = 0; i < vertexCount; i++)
vertexColor = scene->mMeshes[0]->mColors[0][i];

これは0番目の頂点カラーチャンネルの色を読みます。