Простая анимация OpenGL C++

Я делаю 3D игру на OpenGL, модельки загружаю с помощью Assimp, создаю окно, обрабатываю нажатия клавиатуры, загружаю текстуры и звук с помощью SFML. Захотел я сделать загрузку анимации, нашёл на ютубе видео, где человек просто загружает много obj файлов, а потом рисует. Я сделал так, получилось, только вот загружается оно не особо быстро.

class Animation {
private:
    Model m[200]; //Мой класс для загрузки моделей
public:
    void LoadAnimation(std::string filename) {
        for (int i = 1; i <= 200; i++) {
            if (i <= 9) {
                m[i].Load(filename + "_00000" + std::to_string(i) + ".obj");
            }
            else if (i <= 99 && i > 9) {
                m[i].Load(filename + "_0000" + std::to_string(i) + ".obj");
            }
            else if (i <= 999 && i > 99 && i > 9) {
                m[i].Load(filename + "_000" + std::to_string(i) + ".obj");
            }
            std::cout << "Frame " << i << " loaded" << std::endl;
        }
    }
    void DrawAnimation(int frame, GLuint texture) { //Рисуем 1 кадр с текстурой
        m[frame].Draw(texture);
    }
    void DrawAnimation(int frame) { //Рисуем 1 кадр без текстуры
        m[frame].Draw(false);
    }
};
//В main
int frame = 0;
Animation a;
a.LoadAnimation("resources/Models/Animations/Test/animation");
//В главном цикле
glTranslatef(100, 40, 100);
if (frame >= 199) {
    frame = 0;
}
frame++;
a.DrawAnimation(frame, texture);
glTranslatef(-100, -40, -100);

Да и как-то хранить 200 разных файлов не особо хочется. Я бы хотел загружать анимацию из fbx. P. S. Я знаю, что Assimp прекрасно понимает скелетную анимацию, но мне нужен не только такой тип анимации. К тому же это довольно сложно.


Ответы (0 шт):