Assimp无法加载PLY模型的顶点颜色

Assimp cannot load vertices color of PLY model

本文关键字:顶点 颜色 模型 PLY 加载 Assimp      更新时间:2023-10-16

我在windows上使用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

我现在想知道这是否是由importer.ReadFile(pFile,pFlags)的错误pFlags参数引起的。

谁能帮我找出是哪个部分出了问题?

我想我明白这个问题了。

你正在阅读这样的颜色

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个顶点颜色通道的颜色