Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

Как делается анимация персонажей в игре?

#разработка_игр #анимация


Уже год пытаюсь сделать движение человечка (хотя бы ходьбу) (в двумерном пространстве
и использую открытый физ. движок Box2D), но не могу никак понять, как это сделать.
Часто задавал подобные вопросы на других форумах, на что мне отвечали либо "иди рисуй
спрайты и не приставай с глупыми вопросами", либо "ну это делают с помощью motion-capture".
Ни прямых рук, чтобы нарисовать спрайты, ни технологии motion-capture у меня под рукой
нету. Поэтому очень надеюсь услышать толковый ответ по данной теме здесь. 

И сопутствующий вопрос: как в таких играх, как assassin's creed (3 и более поздние
части) или gta 4 (5) создали такую анимацию ходьбы, что персонажи могут спокойно передвигаться
по лестницам или по наклонным плоскостям? Это ведь явно сделано не па заготовкам, а
рассчитывается в реальном времени, так как же они это сделали ?!
    


Ответы

Ответ 1



"КТО ВИНОВАТ?" 1. Покадровая анимация Обычно используется в 2d играх. Допустим, если нужно сделать анимацию ходьбы персонажа, то рисуется несколько изображений персонажа в разных стадиях движения. Потом в игре эти кадры переключаются с каким-то интервалом времени. Профит. Подобный подход подразумевает довольно большой объем работы художника. Motion Capture тут никак не прикрутишь. Но художник, естественно, может использовать снимки людей и животных в разных фазах движения в качестве референсов. С технической стороны обычно предъявляются следующие требования (так с кадрами удобнее работать): изображения должны обладать прозрачным фоном, между кадрами должен быть один и тот же интервал времени, анимация должна быть "на месте" (движение персонажа обычно осуществляется программно), не должно быть необходимости сдвигать кадры один относительно другого. Далее действия разнятся в зависимости от игрового движка и желания левой пятки программиста. Но чаще всего изображения собираются в атлас (также их называют spritesheet), который состоит из картинки со множеством кадров + описания координат кадров в этой картинке (и их названий), которое может быть прочитано движком. Пример: (источник: opengameart.org) (взято с opengameart.org, лицензия CC0): В 2d покадровые анимации - практически единственный способ сделать реалистичную анимацию персонажа. А вот движение, поворот, изменение размера - эти анимации обычно делаются программно. Думаю, нетрудно догадаться, что со всех сторон намного выгоднее двигать персонажа из кода, чем рисовать все его движение с отступом от начальной точки. Но, таким же образом можно и полноценно анимировать персонажа! 2. Скелетная анимация в 2d Если нарисовать его не целиком, а сделать его состоящим из отдельных частей (руки, ноги, тело и т.п.), то каждую из частей можно двигать относительно другой, и получить в результате анимированного персонажа. Подобная техника использована, например, в проекте, демонстрировавшем 2d возможности движка Unity3d, когда они в нем только появились. Персонаж состоит из отдельных частей, которые движутся относительно друг друга при помощи различных средств анимации движка. При запуске в последних версиях Unity может потребоваться доработка проекта напильником. Скелетная анимация является развитием этой идеи. Персонаж все так же разделяется на части. Только теперь эти части привязаны к костям некоего скелета и движутся вместе с ними. Как это работает, очень хорошо видно в промо-ролике Spine (на всякий случай, предупреждаю, что Spine - платная система). Тем не менее, применять Motion Capture к персонажам созданным таким образом будет не более чем освоением бюджета. 100% Реалистичности все равно добиться не удастся (ибо 2d), а среднестатистический 2d-художник/аниматор сделает все быстрее, дешевле и лучше. Но, по факту, отличие от анимирования отдельных частей тела "вручную" только в более удобном инструменте для создания анимаций. А вот отличия от покадровых анимаций - значительные. Плюсы скелетной 2d анимации - в намного меньшем объеме текстур (на ПК это уже почти не имеет значения, а вот на мобильных плафтормах - еще какое), в намного меньшем количестве работы художника (рисовать нужно не 100500 кадров одного персонажа, а всего лишь несколько частей тела) и в возможности переноса анимаций между персонажами с одинаковым скелетом. Минус - в меньшей реалистичности. 3. Скелетная анимация в 3d В 3d все немного не так. Персонаж является объемной моделью, которая на части не делится (но может и делиться, если нужно). При анимации скелета - происходит деформация сетки модели. Для того, чтобы понять, увидеть и пощупать, как все это создается и работает, могу порекомендовать вот этот туториал (на английском) по созданию персонажа в Blender и импорту его в Unity. Для персонажей с одинаковым скелетом анимация тут так же может быть общей. В том же Unity, например, есть Mecanim Humanoid Rig. В результате чего можно купить/сделать/скачать бесплатно готовую анимацию и применять ее к любым гуманоидным персонажам (естественно, и персонажи, и анимации должны быть созданы и настроены определенным образом). Анимации могут создаваться как моделлером, так и отдельным аниматором, в том числе и при помощи Motion Capture. Собственно, после получения mocap-данных с реального человека (этот процесс, думаю, должен быть понятен) они дорабатываются напильником и превращаются в обычные анимации. Плюс, конечно, очевиден - анимации становятся более реалистичными. Проблемы тут в том, что реалистичность хороша далеко не всегда, и в том, что аниматор сам вручную зачастую сделает лучше, быстрее и дешевле. Кроме вышеописанного, стоит упомянуть про Ragdoll. Суть заключается в том, что к костям скелета вместо анимации применяется физика, вследствие чего персонаж может более "реалистично" (с точки зрения физики) падать, умирать и т.п. Ragdoll, кстати, бывает и в 2d, но это редкость. А в связи с сопутствующим вопросом, обращу внимание на IK (Inverse Kinematics) - весьма вероятно, что в указанных играх использовалось именно оно. Но, вообще, это просто мое предположение, свечку при разработке этих игр я не держал. ЧТО ДЕЛАТЬ? Что делать, если Вы не художник, и не аниматор, и не моделлер, и не т.п. Найти художника/моделлера бесплатно (тогда Вам на gamedev.ru). Найти художника/моделлера за деньги (Вам на биржи фриланса). Найти результаты работы художника моделлера бесплатно (начните с opengameart.org, а так же загляните в магазины и на форумы популярных игровых движков - там немало бесплатных спрайтов и моделей). Найти результаты работы художника/моделлера за деньги (в магазины популярных движков, или просто в онлайн-магазины текстур и 3d моделей, но в последних будьте внимательны - не все модели оптимизированы для игр). Будьте внимательны с лицензиями! Многие "свободные" лицензии имеют требования, выполнение которых может оказаться невозможно в проекте! Проприетарные - тем более! Научиться и сделать все самостоятельно. Руки выпрямляются при большом желании и усидчивости. Другое дело, что профессионалы в своей области сделают все "прямо сейчас". Проявить креативность и упростить персонажа так, чтобы даже Вы могли нарисовать анимации для него. Проявить еще больше креативности: взять персонажа в 3d (его найти бесплатно намного проще, чем покадровые анимации персонажей для 2d игр), наделать его скриншотов с нужного ракурса с нужной анимацией. Профит. P.S. В качестве бонуса - Carnegie Mellon University Motion Capture Database. Она же, конвертированная для Unity: 1, 2, 3. Бесплатно.

Ответ 2



AC, GTA - это всё Motion Capture. Но наверняка типовые сцены - бег, ходьба, прыжок и т.п. на это всё есть уже типовые библиотеки. Кастомные сцены - дополнительно снимаются. Если вы думаете что если какой-то магический алгоритм который позволит без прямых рук или motion capture хорошо нарисовать и анимировать, то вынужден вас расстроить. Ближайшая остановка - взять готовый спрайтшит или найти аниматора. Если хотите заморочится возьмите знакомого, видеокамеру и снимите анимацию сами. Раньше разработчики примерно так и делали (1980-1990 годы).

Комментариев нет:

Отправить комментарий