Анимация в Assimp и DirectX - PullRequest
0 голосов
/ 13 января 2020

Мне удалось правильно добавить веса и 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 матрицы вместе с весом и обновите это?

...