Найти в Дзене
Stronghold of gamedev

Игры изнутри : Анимация

Оглавление

Более десятка статей о анимации, в настоящий момент находящихся на канале, моя рука настучала по клавишам. Время останавливаться? Нет.

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

Время вернуться к истокам. Что содержит в себе файл с анимацией?
Как их воспринимает движок и что способен с ними делать?
В этой статье.

Данные, что несет файл

Допустим, сотворив персонажа со скелетом и анимацией, сохраняем его в стандартный fbx формат, что в нем содержится?

  • Модель. Иногда. Ну это можно пропустить, ибо не касается анимации.
  • Косточки. А именно координаты, поворот и возможно длина.
    Длина может быть полезна для визуализации последней косточки в скелете, длина же остальных рассчитывается от начала предыдущей - до начала следующей. Так же длина полезна для автоматической настройки весов.
Разные визуализации одной магии
Разные визуализации одной магии

Варианты визуализации прыгают от пакета к пакету, но движок как правило видит кости пустыми игровыми объектами со спектром настроек.

  • Весы. Подразумевается степень влияния косточки на вершину/вершины. Допустим у косточки плеча под командованием кусок геометрии модели, что визуально идентичен плечу. Вершины замертво прибиты к кости и двигаются за ней.
-3

Да, ничто не мешает заставить пятку двигаться за косточкой плеча, но надо ли оно? Раскидав косточки по модели, можно настроить автоматические весы. Ближайшие к косточке вершины окажутся в рабстве со степенью влияния 1, а спорные территории с соседними косточками, поделит справедливая математика.

  • Координаты, повороты и масштабирование косточек на покадровом таймлайне. Это и есть анимация.

Что видит движок?

Забыл уточнить, что кроме анимации существует стандартная позиция. Например T-образная, в которой очень удобно было расставлять косточки. Они же поворачиваются в нужные позиции когда никакой анимации не проигрывается.

-4

Сама же анимация является последовательностью поворотов, передвижений и масштабирований костей, но не совсем.

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

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

Первый ключевой кадр содержит повороты (0,0,0), но рука решила подняться и на шестидесятом кадре повороты (0,60,0). За 60 кадров рука плавно изменит свой поворот и не нагрузит систему, но что если...

Первый ключевой кадр - (0,0,0), второй ключевой кадр (15 кадр) - (0,15,0), третий (30) - (0,30,0), четвертый (45) - (0,45,0) и наконец пятый (60)-(0,60,0)
Анимации получатся абсолютно одинаковыми, однако вычислительная нагрузка будет серьезно отличаться и не в пользу последнего.

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

Оффтоп
Наконец сделал группу ВКонтакте. Самые интересные и полезные статьи с канала будут и там, а еще там там будут мэмы, анонсы, голосовалки и обсуждения. Почему их пока нет? Потому что я там один :)))
Важным поводом туда подписаться вижу суперпозицию "под рукой" и посты в фидленте, уведомляющие о выходе новых статей.
Дзену до такого далеко. Собстна
группа.

Еще о анимации :
Основы кинематики (обычная записанная анимация)
Основы инверсной кинематики (анимация, созданная движком)
Как движок смешивает анимации (много гифок)