Я использую assimp3.0 на Windows с OpenGL. Я попытался загрузить и отобразить модель слоя с помощью следующих строк:
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)
,
Может кто-нибудь помочь мне выяснить, какая часть пошла не так.
Я думаю, что я понял проблему.
Вы читаете цвета, как это
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-й вершины
Других решений пока нет …