Анимация OpenGL

Если у меня есть трехмерная модель человеческого тела, что я хочу оживить ходьбу, что это лучший способ достичь этого? Вот возможные способы, по которым я вижу, что это реализовано:

  • Создайте несколько моделей с ногами в разных положениях, а затем интерполируйте между этими моделями.
  • Загрузите модель в openGL и каким-то образом рисуйте, какие вершины соответствуют ногам и выполняйте соответствующие преобразования.
  • Реализуйте скелет или арматуру (аналогично этому: вики-анимация blender).

Ответ 1

Техника, описанная в первом варианте, называется анимацией анимации морфинга и часто используется для некоторых деталей анимации, таких как анимация лица или, возможно, открытие и закрытие рук.

Второй вариант - это процедурная или физическая анимация, которая работает как робототехника, где вы даете телу своего персонажа некоторую скорость двигаться вперед и подсчитывать, какие ноги нужно делать, чтобы избежать падения. Но вы не сделали бы этого прямо на вершинах, а на скелете. См. Следующий.

Третий вариант - это скелетная анимация, которая анимирует скелет, а вершины следуют ему по набору правил. Прикрепление вершин к скелету называется скинированием.

Я предлагаю, чтобы после того, как вы повесили вещи opengl (просмотр и позиционирование моделей в космосе, камера и т.д.), вы начинаете с скелетной анимации.

Вам понадобится сфальсифицированная и анимированная модель для вашего 3D-приложения. Затем вы можете написать экспортера в свой собственный формат или выбрать формат, который вы хотите прочитать из своего приложения. Этот формат файла должен содержать описание модели, скелета, скинов и ключевых кадров. Затем вы читаете и используете эти данные из своего кода для создания сетки, скелета и анимации над ключевыми кадрами.

Ответ 2

Если бы я был вами, я бы загрузил Blender из http://www.blender.org и проработал некоторые обучающие программы по анимации. Например, это:

http://wiki.blender.org/index.php/Doc:Tutorials/Animation/BSoD/Character_Animation

Сделав это, вы можете экспортировать свою модель и анимацию, используя, например, экспортер Ogre. Я думаю, что это последняя версия, но убедитесь, что:

http://www.ogre3d.org/tikiwiki/Blender+Exporter&structure=Tools

Оттуда вам просто нужно написать код на С++, чтобы загружать все, интерполировать между ключевыми кадрами и т.д. У меня есть код, который я могу показать вам, если вы заинтересованы.