Для моделирования движения людей и животных часто используются шарнирные модели. Жесткие звенья, соединенные шарнирами, определяются в иерархическую структуру. Когда объекту сообщается движение, каждая часть программируется так, чтобы она совершала определенное действие в ответ на общее движение.
Частота дискретизации периодических картин должна выполняться с достаточной частотой кадров за цикл, чтобы анимация отображалась корректно. В противном случае может наблюдаться неравномерное или дезориентирующее движение.
Помимо растровых процедур и методов таблицы цветов для разработки программ с анимацией используется несколько функций из OpenGL Utility Toolkit (GLUT). Здесь есть процедуры для операций двойной буферизации и приращения значений параметров движения в моменты бездействия. В табл. 13.1 перечислены функции GLUT, позволяющие использовать анимацию в программах OpenGL.
ЛИТЕРАТУРА
Системы компьютерной анимации рассмотрены в [131, 173, 202, 203, 242, 249, 262, 340, 351, 377]. Традиционные методы анимации разобраны в [184, 354, 355]. Методы трансформации обсуждаются в [129, 158, 172, 308].
О различных алгоритмах для разных приложений анимации можно прочесть в [8, 113, 122, 176, 244, 333]. Обсуждение методов анимации в OpenGL представлено в справочнике [400].
УПРАЖНЕНИЯ
13.1. Разработайте схему раскадровки и соответствующие ключевые кадры для анимации простой скелетоподобной фигуры, представленной на рис. 13.19.
13.2. Напишите программу генерации с помощью линейной аппроксимации промежуточных кадров для ключевых кадров, заданных в упражнении 13.1.
13.3. Расширьте анимационную последовательность из упражнения 13.1, чтобы теперь она включала несколько движущихся объектов.
13.4. Напишите программу генерации с помощью линейной аппроксимации промежуточных кадров для ключевых кадров, указанных в упражнении 13.3.
13.5. Напишите программу трансформации любого заданного многоугольника в другой заданный многоугольник, используя пять промежуточных кадров.
13.6. Напишите программу трансформации сферы в заданный многогранник, используя пять промежуточных кадров.
13.7. Дайте спецификацию анимации, включающей ускорение и реализующей уравнение (13.7).
13.8. Дайте спецификацию анимации, включающей ускорение и торможение, реализующей расчет промежуточных положений, представленный в уравнениях(13.7) и (13.8).
13.9. Дайте спецификацию анимации, реализующей расчет ускорения-торможения по уравнению (13.9).
13.10. Напишите программу имитации линейного двухмерного движения закрашенной окружности внутри данной прямоугольной области. Для окружности должны задаваться начальное положение и вектор скорости, причем при ударе о стенку прямоугольника вектор скорости должен меняться по закону “угол падения равен углу отражения”.
13.11. Преобразуйте программу из предыдущего примера в игру “мяч и ракетка”, заменив одну сторону прямоугольника коротким отрезком, который можно перемещать взад-вперед вдоль удаленной стороны прямоугольника. Интерактивное движение отрезка имитирует ракетку, меняя положение которой, можно не дать прыгающему мячу выйти из прямоугольника. Игра заканчивается, когда окружность “убегает” из внутренней части прямоугольника. Должны задаваться следующие входные параметры - положение окружности, направление и скорость. Для подсчета очков в игре может использоваться число ударов окружности о ракетку.