Как анимировать 3d-модель (сетка) в OpenGL?
Я хочу анимировать модель (например, человека, идущую) в OpenGL. Я знаю, что есть такие вещи, как скелет-анимация (с сложной математикой), но как насчет этого....
- Создайте модель в Blender
- Создайте скелет для этой модели в Blender
- Теперь сделайте анимацию в Blender с этой моделью и скелетом
- Возьмите несколько "ключевых кадров" этой анимации и экспортируйте каждый "ключевой фрейм" как одну модель
(например, как файл obj)
- Создайте загрузчик файлов OBJ для OpenGL (чтобы получить данные о вершинах, текстурах, нормалях и лицах)
- Используйте VBO для рисования этой анимированной модели в OpenGL (и получите несколько сложных идей о том, как изменить текущий "ключевой фрейм" /модель в VBO... возможно, что-то с
glMapBufferRange
Хорошо, я знаю, что эта идея немного меньше script, но стоит ли смотреть дальше?
Что является хорошей концепцией для изменения "keyFrame" /моделей в VBO?
Я знаю, что проблема с памятью, но с небольшими моделями (и не слишком много анимаций) это может быть сделано, я думаю.
Ответы
Ответ 1
Да, метод, о котором вы говорите, был очень популярен в ранних 3D-играх (землетрясение и т.д.).
Я бы предложил реализовать его несколько иначе, чем вы описали. Вместо того, чтобы экспортировать ключевой кадр для каждого возможного кадра анимации. Экспортируйте более распространенные ключи и интерполируйте позиции вершин. Это позволит значительно более плавное воспроизведение со значительно меньшим объемом использования памяти.
Для этого потребуется только один (потоковый или динамический) VBO. В каждом кадре вы найдете предыдущий и следующий ключевые кадры, интерполируете вершины и загружаете результат в VBO.
Фактически вы можете настроить blender для экспорта каждого кадра сцены в виде OBJ. Пользовательский инструмент затем может скомпилировать эти файлы в хороший формат анимации.
Читайте здесь: