Почему ассимп не генерирует касательные?

Я использую Assimp для загрузки в модель для рендеринга в OpenGL (модель представляет собой .obj Стэнфордского кролика, только с информацией о положении вершины, без текстурных координат или нормалей). Я установил флаги постобработки так, чтобы Assimp генерировал гладкие нормали и вычислял тангенты / битангенсы. Тем не менее, хотя я могу нормально обращаться к массиву нормалей, я получаю segfault, когда пытаюсь получить доступ к массиву касательных.

Вот код, который я использую для чтения файла, и все мои флаги постобработки:

const aiScene* scene = importer.ReadFile(filename,
aiProcess_JoinIdenticalVertices |
aiProcess_Triangulate |
aiProcess_GenSmoothNormals |
aiProcess_CalcTangentSpace |
//aiProcess_RemoveComponent (remove colors) |
aiProcess_LimitBoneWeights |
aiProcess_ImproveCacheLocality |
aiProcess_RemoveRedundantMaterials |
aiProcess_GenUVCoords |
aiProcess_SortByPType |
aiProcess_FindDegenerates |
aiProcess_FindInvalidData |
aiProcess_FindInstances |
aiProcess_ValidateDataStructure |
aiProcess_OptimizeMeshes |
aiProcess_OptimizeGraph |
aiProcess_Debone |
0);

И вот где я терплю крушение:

vert.normal.x = mesh->mNormals[j].x; // This runs fine
vert.normal.y = mesh->mNormals[j].y;
vert.normal.z = mesh->mNormals[j].z;

vert.tangent.x = mesh->mTangents[j].x; // I crash here
vert.tangent.y = mesh->mTangents[j].y;
vert.tangent.z = mesh->mTangents[j].z;

Очевидно, что это не в состоянии создать касательные, хотя я говорю это.

Я пытался использовать importer.ApplyPostProcessing() вычислить касательные после того, как файл прочитан, а остальные шаги выполнены, так что у него есть нормали для вычисления касательных, но я получаю тот же результат.

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector