OpenGL анимация

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

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

person Martin Konecny    schedule 20.11.2010    source источник
comment
Обычно импортированная модель содержит анимацию. Зачем нужно анимировать это в OpenGL? Разве этим не должен заниматься художник?   -  person Daniel Rodriguez    schedule 20.11.2010
comment
@Seth, я делаю это как личный проект. Итак, если модель содержит анимацию, мне просто нужно интерполировать между разными ключевыми кадрами, которые она мне дает?   -  person Martin Konecny    schedule 20.11.2010
comment
Да, точно. Об этом есть много ресурсов. gpwiki.org/index.php/OpenGL:Tutorials:Basic_Bones_System   -  person Daniel Rodriguez    schedule 27.11.2010


Ответы (2)


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

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

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

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

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

person Bojan    schedule 20.11.2010
comment
+1 за хороший пост. Лично я бы рекомендовал файлы .3DS, поскольку ключевые кадры анимации, скелетные данные и модель содержатся в одном файле. - person Bojangles; 20.11.2010

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

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

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

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

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

person Stuart Golodetz    schedule 20.11.2010
comment
Я должен добавить, что потребовалось немного внимания и возни, чтобы заставить все работать, когда я это делал, но это можно сделать :) - person Stuart Golodetz; 20.11.2010
comment
спасибо, я уже прошел через упомянутый вами учебник, я взгляну на экспортера огров. - person Martin Konecny; 21.11.2010
comment
@ tom_mai78101: см. github. com / sgolodetz / hesperus2 / blob / master / source / engine / core / и github.com/sgolodetz/hesperus2/tree/master/source/engine/core/ - надеюсь, это поможет. - person Stuart Golodetz; 28.01.2014
comment
@StuartGolodetz Спасибо. - person tom_mai78101; 28.01.2014