Скелетная анимация

Скелетная анимация как способ анимирования трёхмерных моделей в мультипликации и компьютерных играх. Скелетная анимация двумерных моделей. Качественные и разнообразные анимационные клипы. Анализ использования техники Root Motion в одиночных играх.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 01.09.2018
Размер файла 1,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

ФГБОУ ВО «Уфимский государственный технический авиационный университет»

Кафедра вычислительной математики и кибернетики

Пояснительная записка к курсовой работе

по дисциплине «Интерактивные графические системы»

Тема: Скелетная анимация

Выполнил:

студент гр. ПРО-408

Шаяхметов А.Н.

Проверил: Рипатти А.В.

2017 г.

Теория

Скелетная анимация -- способ анимирования трёхмерных моделей в мультипликации и компьютерных играх.

Заключается в том, что мультипликатор или моделер создаёт скелет, представляющий собой как правило древообразную структуру костей, в которой каждая последующая кость «привязана» к предыдущей, то есть повторяет за ней движения и повороты с учётом иерархии в скелете. Далее каждая вершина модели «привязывается» к какой-либо кости скелета. Таким образом, при движении отдельной кости двигаются и все вершины, привязанные к ней. Благодаря этому задача аниматора сильно упрощается, потому что отпадает необходимость анимировать отдельно каждую вершину модели, а достаточно лишь задавать положение и поворот костей скелета.

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

Скелетная анимация с разновесными костями:

Скелетная анимация с развесовками представляет собой более продвинутый вариант скелетной анимации, в ней каждая вершина модели может быть связана не с одной, а с несколькими костями. При этом для каждой кости определяется свой вес, то есть величина влияния этой кости на перемещение вершины. Чем больше вес какой-то кости, тем сильнее вершина смещается под её влиянием.

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

Скелетная анимация двумерных моделей:

Также скелетная анимация как технология используется в двумерной компьютерной мультипликации, например, в векторном редакторе мультипликации Anime Studio (бывшая Moho) или открытом Synfig Studio. Принцип действия такой же: отдельные фрагменты модели «привязываются» к костям, и далее мультипликатор, вместо того чтобы отрисовывать модель в каждом кадре, задаёт движения костям. Модель персонажа двигается, повторяя движения скелета.

История:

Некое подобие скелетной анимации описано в «Солярисе» Станислава Лема, где Океан «тестирует» смоделированного по памяти погибшего пилота «искусственного ребёнка». Классик предвосхитил как технологию, так и первое эстетическое впечатление от неадекватных параметров модели.

Впервые в играх скелетная анимация появилась в игре Half-Life (1998).

Описание предметной области

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

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

Если физический рендеринг и создание качественно освещенных статичных сцен становятся доступны энтузиастам благодаря мощным бесплатным игровым движкам и инструментам 3D моделирования, то создание хорошей анимации требует оборудования для захвата движений и длительной кропотливой работы по их внедрению. Одна из самых доступных систем - это Neuronmocap стоимостью порядка $1.500.

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

Кроме ручной кадровой анимации и захвата движения актера, существуют и интересные процедурные методы симуляции движений: эволюционное моделирование, нейронные сети, task based locomotion. Что интересно, на конференции SIGGRAPH 2016 этим непростым техникам уделяют много внимания. Но широким кругам независимых разработчиков эти вещи пока не доступны, и мне самому хотелось бы больше узнать о возможности их реального применения. Однако сегодня есть и доступные инструменты, симулирующие мускульную динамику (Euphoria Engine и Puppet Master для Unity3d), которые позволяют привнести разнообразные реакции персонажей на обстоятельства.

Получить качественные и разнообразные анимационные клипы это только первая часть задачи.

Вторая часть заключается в том, чтобы корректно использовать полученные анимации при управлении персонажем. Для этого сначала нужно решить, как вообще сдвигать персонажа в сцене: на основании данных самой анимации (1), либо на основании каких-то иных соображений (например физики твердого тела) (2). То есть, либо анимация будет вычисляться исходя из произвольного (физического) движения объекта в пространстве (2), либо само смещение в пространстве будет исходить из записанной анимации, игнорируя иные вмешательства (1).

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

Одним из ярких примеров может быть игра Guild Wars 2 где анимация движений и графика уже достаточно хороши, но вот большой диапазон возможных скоростей и направлений движения персонажа не обеспечен столь же большим набором анимаций, и персонажи либо буксуют на месте, либо проскальзывают вперед как по льду. Та же проблема долгое время преследует и игры на движке Gamebryo (серия TES: Morrowind, Skyrim), да и многие другие.

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

Поэтому для достижения реализма нам в любом случае потребуется гигантский набор разнообразных клипов с движениями в различных направлениях, с различной скоростью, и т.п. Кроме того, анимационные клипы редко можно использовать изолированно, воспроизводя один за другим. Чаще всего в игре присутствует множество анимаций, между которыми не заготовлено специальных анимированных переходов. Поэтому для их симуляции применяется плавное смешивание через линейную интерполяцию поворотов костей. Для удобной настройки таких переходов используется т.н. конечный автомат или машина состояний (State machine). В UE и Unity для этого есть специальные инструменты: Persona и Mecanim. Каждый узел там это некоторое состояние скелетной модели (заготовленный анимационный клип или результат их смешения -- Blend Tree). Когда выполнены некоторые заданные условия, осуществляется плавный переход из одного состояния в другое, во время которого оба оказывают пропорциональное времени влияние на повороты костей и смещение объекта. Таким образом достигается иллюзия непрерывности движения.

Состояние может быть не одиночным клипом, а смешанным по тому же принципу набором клипов (Blend Tree / Blend Space). Например из клипов движений персонажа в стороны можно выбрать несколько, смешав их пропорционально вектору желаемого движения, и получить движение под любым произвольным углом. Однако существуют такие анимации, для которых смешивание оборачивается некорректными позами. Например когда одна анимация двигает ноги персонажа вперед, а другая вбок, линейное смешивание может привести к пересечению ног друг с другом. Чтобы этого избежать нужно тщательно подбирать анимационные клипы, синхронизировать их фазу, длину и скорость, либо добавлять отдельный клип специально для данного вида движений. Все это сложная и кропотливая работа. И чем больше возможных состояний и переходов между ними, тем сложнее привести их в согласие друг с другом, и проследить за тем, чтобы все нужные переходы срабатывали когда это требуется.

1) Самым очевидным решением является захват движений реального актера при помощи Motion Capture и привязка смещения персонажа в игре к смещению «корневой кости» в самой анимации -- принцип Root Motion. Тогда персонаж будет двигаться ровно так, как двигался актер во время записи.

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

Но этот подход несет в себе и очевидные проблемы.

Допустим, персонаж хочет подвинуться к краю обрыва: актер на записи наклоняется, поднимает ногу и делает смелый широкий шаг по сцене. А персонаж шагает прямо в пропасть. Чтобы этого избежать, нужно прервать шаг где-то посередине, но это не только выглядит неестественно, но и затрудняет игроку выбор нужного момента из-за нелинейности движения, в котором может быть долгая подготовка (наклон), а затем резкое уверенное движение (шаг). Можно записать несколько вариантов движений. Допустим: осторожные маленькие шаги, нормальные, и бег. А затем смешать их по параметру требуемой скорости, который можно увеличивать линейно и предсказуемо. Но что если нам нужны движения в стороны? Значит для каждого варианта ширины шага нам нужны еще три-четыре варианта (за вычетом зеркальных). А еще персонаж должен уметь поворачивать во время движения. Значит для каждого варианта нам нужны движения с поворотом. А если поворот может быть быстрым и медленным? Значит еще раз умножаем число необходимых клипов на два. А теперь нам нужно движение по наклонной поверхности! А потом нам захочется, чтобы персонаж умел делать тоже самое в присяди. Итого -- просто сотни и тысячи вариантов анимации которые нужно смешивать и следить за тем, чтобы это происходило корректно и приводило к движениям с нужной скоростью. И все равно, во многих случаях управление будет ощущаться как «ватное», поскольку инерция актера и наша невозможность предусмотреть все возможные человеческие маневры будет лишать игрока контроля над персонажем. Эту проблему, к слову, прочувствовали на себе игроки в The Witcher 3, поэтому в одном из крупных обновлений разработчики внедрили альтернативный вариант управления, где анимация быстрее отзывается на управление в ущерб реализму. В шутерах же проблема нелинейности движения обретает особенно выраженный характер: игроку часто приходится выглядывать из-за угла и быстро уходить обратно, и момент резкой смены направления может очень отличаться -- игроку требуется как можно скорее вернуться обратно за укрытие, а у нас нет возможности предсказать заранее, какой ширины шаг он планировал и проиграть соответствующую анимацию. Игроку, в свою очередь, будет трудно привыкнуть к ширине шага, которую делает его персонаж, и к скорости этого шага, чтобы прервать его вовремя.

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

Поэтому техника Root Motion используется часто в одиночных играх от третьего лица, где управление осуществляется контекстуально -- в зависимости от наличия укрытия, препятствия, режима движения или других обстоятельств, и редко применяется в сетевом режиме и MMOG.

Из последних заметных проектов, использующих Root Motion, можно выделить The Witcher 3. Трудно переоценить усилия, вложенные в производство всех его движений.

2) Другое решение обратно принципу Root Motion -- нужно приводить анимацию в наиболее точное соответствие с произошедшим или планируемым движением. Тогда многие описанные выше проблемы решаются -- движение персонажа можно сделать равноускоренным и предсказуемым с возможностью сколь угодно быстрой смены направления. Но как привести нелинейную и инерционную анимацию в соответствие с таким движением? Интересный комплексный подход описали разработчики игры Paragon. Суть его заключается в том, чтобы находить и проигрывать только нужную серию кадров анимации для достижения требуемого смещения/поворота, пропуская лишние. И использовать инверсную кинематику для модификации ширины шага.

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

Выполнение курсовой работы.

Курсовая работа выполнена на языке программирования JavaScript с использованием библиотеки Laro. Laro - игровой javascript-движок, работающий на canvas (элемент отрисовки изображений в HTML5). Данная библиотека позволяет формировать скелет персонажа. Нашей задачей является создание анимаций частей скелета.

Рассмотрим создание скелета.

Структура скелета модели:

var g_data = { // массив, хранящий всю информацию о скелете

person1: { // название скелета

bones: {

// кости

}

}

}

Структура костей:

joint_name { // название кости

width: a, height: b, // длина и ширина

x: …, y: …, z: …, // положение на экране

rotation: 0, // поворот

joints: { // связь с другими костями

joint_name2: {x: …, y: …}

},

texture: { // графический облик кости

img: './…', // ссылка на изображение кости

area: [..., …, …, …] // координаты

},

}

Реализуем таким образом следующие кости:

· Туловище

· Голова

· Левая рука

· Правая рука

· Левая нога

· Правая нога

Таким образом у нас получился вот такой персонаж:

Теперь нам нужно сделать анимацию конечностей.

Анимация движения рук:

Анимация движения ног:

Теперь наш персонаж умеет делать движения:

Также нам нужно сделать проверку на столкновение персонажа с полом и стеной, чтобы он не провалился:

Теперь нам необходимо запустить скрипт и сделать цикличную анимацию.

Запуск и определение скелета:

Для цикличности воспользуемся функцией Loop, включенной в библиотеку Laro:

Для запуска скрипта нужно вызвать функцию init(). Персонаж будет циклично вращать руками и ногами.

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

Результат работы:

Вывод

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

Размещено на Allbest.ru

...

Подобные документы

  • Программы для создания 3D моделей, их возможности: blender, 3DsMax. Скелетная анимация или Риггинг. Ragdoll, motioncapture, нейронные сети. Сущность термина "тряпичная кукла". Основное преимущество ragdoll-анимации перед традиционной. Анимация, фреймы.

    реферат [8,5 M], добавлен 21.02.2022

  • Особенности 2D графики в компьютерных играх. Анимации движения персонажей. Конвейер контента в проектах. Контент-импортер и контент-процессор. Понятие компонента в XNA и его использование. Визуальные и механические эффекты. Методы исполнения спецэффектов.

    курсовая работа [1,7 M], добавлен 13.07.2014

  • Изучение применения трёхмерного моделирования и анимации при создании статической рекламы, динамических заставок для телеканалов, моделирования катастроф, в компьютерных играх. Характеристика создания моделей с помощью модификаторов Edit Poly, Edit Mesh.

    практическая работа [4,0 M], добавлен 29.09.2011

  • Autodesk 3ds Max как полнофункциональная профессиональная программная система для создания и редактирования трёхмерной графики и анимации. Особенности моделирования персонажей. Создание скелета и настройка глаз героя. Анимация персонажей, визуализация.

    дипломная работа [11,9 M], добавлен 12.06.2012

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

    презентация [1002,0 K], добавлен 23.06.2015

  • Процесс создания простейшей мультипликации в приложении в Macromedia Flash путем применения автоматической и покадровой анимации. Пример использования Action Script. Пошаговое описание выполнения данной работы со всеми комментариями и изображениями.

    контрольная работа [4,2 M], добавлен 06.05.2011

  • Мультимедиа-технологии в образовании. Видеометод, его функции и задачи. Актуальность применения метода презентаций на уроках стереометрии. Microsoft PowerPoint как средство создания презентаций. Управление демонстрацией слайдов, анимация объектов.

    дипломная работа [4,6 M], добавлен 27.03.2014

  • Сущность медиаобразования: базовые проблемы, развитие, цель обучения. Анализ образного мышления, компьютерной графики и анимации, процесс создания мультимедийной образовательной технологии. Разработка мини ролика с помощью технологии 2D для школьников.

    дипломная работа [3,7 M], добавлен 27.03.2012

  • Основные понятия и задачи, решаемые компьютерной графикой. Характеристика и разновидности компьютерной графики. Цветовые модели RGB, CMYK, HSB. Графические форматы растровых и векторных изображений. Особенности шелкографии, трёхмерная графика и анимация.

    курсовая работа [350,7 K], добавлен 20.02.2012

  • Описание авторской идеи анимации, использования базовых команд и конструкций. Процесса проектирования программы. Описание алгоритма разработанной программы. Последовательность создания анимации. Листинг программы и скриншот рисунка по программе.

    курсовая работа [911,5 K], добавлен 20.05.2013

  • Средства обеспечения гибкости моделей. Анимация и планирование детали. Настройка глобальных привязок. Параметризация в эскизах. Характеристика особенностей проецирования объектов. Создание ассоциативного чертежа. Использование переменных и выражений.

    методичка [2,6 M], добавлен 25.06.2013

  • Описание функциональных возможностей Adobe Flash как программного продукта, предназначенного для создания интерактивной анимации. Изучение элементов интерфейса и управления Adobe Flash, овладение её графическими системами. Разработка анимационного ролика.

    лабораторная работа [3,9 M], добавлен 15.06.2013

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

    реферат [29,1 K], добавлен 16.03.2010

  • Понятие растра и растровой графики. Аффинные преобразования на плоскости и в пространстве. Цветовые модели RGB, MCYK. Алгоритмы вывода линий и фигур, устранения ступенчатости, удаления невидимых линий, закраски фигур. Графические эффекты, анимация.

    лекция [281,0 K], добавлен 26.07.2013

  • Освоение языка программирования Delphi. Построение блок-схемы запуска главного таймера и основная логика программы. Использованные свойства и события Form, MediaPlayer, Timer, MainMenu. Запуск, пауза и остановка анимациии. Создание листинга программы.

    курсовая работа [771,9 K], добавлен 22.06.2014

  • Сведения о языке программирования Macromedia Flash. Последовательность шагов, поля ввода единичек и логических функций. Разработка интерфейса приложения. Покадровая анимация лекции. Рекурсивные процедуры и функции. Разработка игры-головоломки "Танграм".

    дипломная работа [2,8 M], добавлен 17.11.2013

  • Общее представление о мультимедиа-технологиях. Цели применения продуктов, созданных в мультимедиа-технологиях. Мультимедийные ресурсы и средства разработки мультимедиа. Аппаратные средства, видео и анимация. Процесс создания мультимедийного проекта.

    курсовая работа [307,6 K], добавлен 25.06.2014

  • Создание титров с использованием видео-редактора Sony Vegas Pro 10.0 и графического редактора. Придание способности двигаться и видимости жизни объектам. Анимация в среде 3D Studio Max 2010. Воспроизведение визуализированной последовательности кадров.

    курсовая работа [2,0 M], добавлен 17.01.2013

  • История развития компьютерной графики. Возникновение компьютерной (машинной) графики: научной, деловой, конструкторской, иллюстративной, художественной и рекламной. Компьютерная анимация. Графика для Интернета. Векторная графика и художественные эффекты.

    курсовая работа [692,0 K], добавлен 12.11.2014

  • Теоретические основы моделирования систем в среде имитационного моделирования AnyLogic. Средства описания поведения объектов. Анимация поведения модели, пользовательский интерфейс. Модель системы обработки информации в среде компьютерного моделирования.

    курсовая работа [1,5 M], добавлен 15.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.