1

我在带有 OpenGL 的 windows 上使用 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 以下是一个简短的示例 II 写道:

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)

谁能帮我弄清楚哪一部分出了问题。

4

1 回答 1

2

我想我理解了这个问题。

你正在读这样的颜色

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

于 2016-08-19T12:25:02.697 回答