Объектно-ориентированная анимация (Graphic Object)

doom-review-3-snapmapЗа последние 10 лет в индустрии видеоигр наблюдается быстрый переход от простых 2D монохроматических игр в полномасштабные, быстрые, а также полностью цветные с высоким разрешением, 3D-игры, которые так популярны сегодня. В это же время, благодаря объектно-ориентированному программированию стало проще создавать анимации высокого качества. Создание анимации можно рассматривать как объекты чертежа в настоящее время с точки зрения на экране компьютера. Например, монстр в игре DOOM является экземпляром объекта класса для такого рода монстра” – сказал гейм-дизайнер игры DOOM.

Гендиректор игры DOOM: ”Проще говоря, объектно-ориентированная анимация приложения определяет различные классы, создаёт экземпляры этих классов, и выполняет операции над экземплярами объекта с помощью методов, имеющихся в классе Graphic Object”.

Графическая абстракция объекта

Основной принцип абстракции в анимации – это представление графического объекта как класс GraphicObject. Все, что рисуется на экране, является объектом класса GraphicObject. Точка, линия, многоугольник, кривая Безье, поверхность Безье, многоугольник с картой текстуры, фон, изображение, спрайт 3D-формы, все создано с помощью многоугольников и является примером GraphicObject. Простые графические объекты могут быть объединены в более сложные графические объекты. Основная проблема, с которой сталкивается аниматор – возможность использовать эти объекты на экране. В процедурном принципе программирования не может быть ничего общего между функциями рисовать куб и шар”, – сказал аниматор игры DOOM.

Продолжил программист игры DOOM: “Одним из основополагающих методов GraphicObject является метод, называемый Draw(). С помощью данного метода происходит рисовка графического объекта. Без этого метода, объект не может быть виден на экране. С помощью класса GraphicObject можно обновлять графический объект каждую миллисекунду, передав управление камере, которая в этот момент будет либо статической либо динамической. Графическая абстракция GraphicObject имеет свойства и методы, которые могут или не могут быть реализованы вне графических классах объектов. Большинство графических объектов имеют свойство позиции, что позволяет использовать метод GraphicObject.Draw() в качестве опорной точки для рисования объекта.

Когда графический движок перемещает графический объект, методу GraphicObject.Draw() необходимо пересчитать расположение всех частей графического объекта и перерисовать их на новом месте, таким образом графический объект появляется на новом месте.
Преимущество использования позиции в GraphicObject является то, что движок просто устанавливает новую позицию на графическом объекте, а графический объект перекраивают оставшуюся часть самого себя в новом месте.

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

Графические объекты, имеющие позиции, имеют операции, которые могут над ними выполнятся, например, GraphicObject.Reposition(), GraphicObject.Displace() или GraphicObject.Rotate (), а также GraphicObject.Scale() и GraphicObject.Shear().
GraphicObject.Reposition() – рисовка графического изображения на новой позиции,
GraphicObject.Displace() – удаление графического изображения,
GraphicObject.Rotate () – вращение графического изображения,
GraphicObject.Scale() – увеличение графического изображения,
GraphicObject.Shear() – сдвиг графического изображения”.

На видео: Базовый курс – “Введение в ООП”.

Роман
Оцените автора
Безопасник
Добавить комментарий