Мне удалось правильно добавить веса и boneIDs для каждой вершины.
Я добавил 4 скина-матрицы в мой вершинный шейдер для умножения преобразования вершин. И 4 для нормалей.
Я предполагаю, что мне нужно около 4, потому что на каждую кость / сустав может влиять 4 вершины.
for (int i = 0; i < scenePtr->mNumAnimations; i++)
{
aiAnimation* ani = scenePtr->mAnimations[i];
for (int j = 0; j < ani->mNumChannels; j++)
{
for (int k = 0; k < ani->mChannels[j]->mNumScalingKeys; k++)
{
}
for (int k = 0; k < ani->mChannels[j]->mNumRotationKeys; k++)
{
}
for (int k = 0; k < ani->mChannels[j]->mNumPositionKeys; k++)
{
}
}
Я предполагаю, что мне нужно построить матрицы для вращения, масштабирования и переводить с векторами на сустав / кость.
Но я также предполагаю, что мне нужно умножить их в некотором порядке иерархии.
Могу ли я сначала найти кость root, а затем объединить эти матрицы с остальными или что-то еще?
Затем умножьте вершины внутри моего вершинного шейдера на 4 матрицы вместе с весом и обновите это?