Программирование 3D анимации? - PullRequest
7 голосов
/ 01 апреля 2009

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

Где хорошие уроки по программированию? Google дал мне только сторону моделера.

Ответы [ 2 ]

18 голосов
/ 01 апреля 2009

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

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

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

Сглаживание - это техника, используемая для улучшения качества анимации. При гладком скининге вершина не привязывается только к одной кости, но она может быть привязана к нескольким костям (обычно устанавливается жесткий предел, например 4; вершинам редко требуется больше 3) с соответствующими весами. Это усложняет работу аниматора, поскольку ему приходится выполнять гораздо больше работы с вершинами рядом с суставами, но в результате получается гораздо более плавная анимация с меньшим искажением вокруг суставов.

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

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

4 голосов
/ 15 марта 2014

Различные способы управления анимацией в играх?

Для символов обычно:

  1. Скелетная деформация
  2. Смешанные формы
  3. Иногда даже полностью анимированные сетки (LA. Noire сделал это)
  4. В недавнем Tomb Raider мы используем вычислительную работу для моделирования тысяч сплайнов для волос, и вершины управляются этими сплайнами с помощью вершинного шейдера.

Часто они управляются анимацией по ключевым кадрам, которая интерполируется во время выполнения, и иногда мы добавляем код, чтобы обработать влияния (кости, веса смешанной формы и т. Д.) Процедурно.

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

Что касается учебных пособий ... хорошо ... Вам интересно самим написать математику для анимации или вас больше интересует привлечение какого-либо анимированного персонажа в вашу игру и концентрация внимания на игровом процессе?

Unity - отличная платформа для игр.

Если вам интересно понять математику для анимации или игр в целом, вот что я прочитал в качестве учебника:

  • Матрицы, используемые для 3d-преобразований (убедитесь, что вы понимаете законы коммутативности, ассоциативности и распределения и узнаете, что представляет каждая строка и столбец - они проще, чем кажутся)
  • Кватернионы для вращений (менее интуитивно понятны, но тесно связаны с осью и вращением)

И не пропустите основы:

  • Vector Dot Product
  • Vector Cross Product

Также, как и 10 лет назад, я написал простую библиотеку анимации, которая довольно проста, свободна от большинства более продвинутых концепций, поэтому неплохо было бы посмотреть, если вы хотите получить базовое представление о том, как она работает: http://animadead.sf.net

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...