Спрайт (компьютерная графика)





Спрайт (англ. Sprite — фея; эльф) — графический объект в компьютерной графике.


Чаще всего — растровое изображение, которое можно отобразить на экране[1]. Наблюдение спрайта в трёхмерном пространстве под несоответствующим углом приводит к разрушению иллюзии. То есть легче всего воспринимать спрайт как перемещающуюся в пространстве проекцию какого-то объёмного тела так, чтобы разница была незаметна.




Содержание






  • 1 Происхождение термина


  • 2 Спрайты в двухмерной графике


    • 2.1 CSS-спрайты




  • 3 Спрайты в трёхмерной графике


    • 3.1 Движки первого поколения


    • 3.2 На 3D-акселераторах


      • 3.2.1 Оптимизация


      • 3.2.2 Спецэффекты


      • 3.2.3 Живая съёмка




    • 3.3 Терминология




  • 4 См. также


  • 5 Примечания


  • 6 Ссылки





Происхождение термина |


Слово «спрайт» было придумано в 1970-е годы одним сотрудником компании Texas Instruments: их новая микросхема TMS9918 могла аппаратно отображать небольшие картинки поверх неподвижного фона[2].



Спрайты в двухмерной графике |


Изначально под спрайтами понимали небольшие рисунки, которые выводились на экран с применением аппаратного ускорения. На некоторых машинах (MSX 1, NES) программная прорисовка приводила к определённым ограничениям, а аппаратные спрайты этого ограничения не имели. Впоследствии с увеличением мощности центрального процессора от аппаратных спрайтов отказались и понятие «спрайт» распространилось на всех двумерных персонажей. В частности, в видеоиграх Super Mario и Heroes of Might and Magic вся графика спрайтовая, анимированная с помощью перебора изображений из атласа спрайтов.


К аппаратно ускоренным спрайтам вернулись в середине 1990-х годов — когда развитие мультимедиа и взрывное повышение разрешения и глубины цвета потребовало специализированного процессора в видеоплате. Именно тогда, как обёртка над аппаратным 2D-ускорителем, вышел DirectDraw. DirectX 8 ввёл общий API для двух- и трёхмерной графики, и в современных спрайтовых играх двухмерные спрайты выводятся точно так же, как и трёхмерные — как текстурированный прямоугольник.


Атлас спрайтов является растровым изображением, объединяющим спрайты в набор раскадровок анимаций, или иным комплектом спрайтов. Целесообразность применения заключается в уменьшении количества файлов и применение sprite-batch в процессе рендеринга: видеокарте передаётся одно изображение, набор координат, на которых его необходимо «отрендерить» и «трафаретов», вырезающих из атласа отдельные спрайты. В результате, двухмерная графика «рендерится» значительно быстрее, чем одиночными передачами видеокарте одиночных спрайтов с указанием координат отрисовки. Для дополнительного сжатия и уменьшения количества неиспользуемого пространства, атлас может комбинировать изображения не сеткой, а в максимально плотно сжатом виде, таким образом, что, если описать вокруг каждого спрайта прямоугольник — часть прямоугольников будет пересекаться. Данный формат требует дополнительной информации о вершинах, которыми можно описать каждый спрайт без пересечения с другими, и увеличивает время загрузки приложения, но позволяет сократить память.



CSS-спрайты |


CSS позволяет применять в себе атласы спрайтов. Несколько изображений располагаются в одном графическом файле. Далее, чтобы разложить его на несколько изображений, применяется ограничение размеров изображения по размеру одного спрайта в атласе, и сдвиг background-position атласа на значение, кратное высоте изображения. Таким образом, один файл может обеспечить иконками весь сайт.


CSS-спрайты экономят трафик и ускоряют загрузку — браузеру потребуется запрашивать меньше файлов.



Спрайты в трёхмерной графике |



Движки первого поколения |




Спрайтовые персонажи в Doom. Обратите внимание на два совершенно одинаковых трупа.


В первых трёхмерных играх, например, Wolfenstein 3D (1992), Doom (1993) и Build Engine-основанных (DukeNukem3D, Shadow Warrior, Exhumed, Redneck Rampage), персонажи представлялись в виде двумерных рисунков, изменяющих размер в зависимости от расстояния.



На 3D-акселераторах |


На 3D-акселераторах применяется такая техника: объект рисуется в виде плоскости с наложенной на неё текстурой с прозрачными областями. Эта технология применяется в трёх случаях.



Оптимизация |


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



  • Объекты, присутствующие в сцене в большом количестве и которые, будучи трёхмерными, имели бы большое количество граней и очень сильно влияли бы на производительность — например, массовка на заднем плане, дым, трава и т. д.

  • Удалённые объекты, которые вблизи рисуются полигональными моделями, по мере удалённости превращаются в спрайты различной детализации (LOD).



Спецэффекты |


Некоторые спецэффекты, такие как огонь, выполняются спрайтами, так как полигональный огонь плохо смотрится. Сравните, например, взрывы в Quake 2 и Unreal Tournament.


Для большей правдоподобности изображения используется большое количество сравнительно маленьких спрайтов (так называемая система частиц).



Живая съёмка |


Изредка спрайты применяются для добавления в игру живого фото или видео. Например:



  • Живые актёры, например в realMyst.

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


Стоит заметить, что в некоторых спрайтовых играх, таких как Rise of the Triad, спрайты фотографировались с актёров, а не с моделей, игрушек или рисунков.


Появление шейдеров частично снимает потребность в живой съёмке — многие нюансы фотоизображения уже можно передать полигональными моделями в реальном времени.



Терминология |




  • Billboard — спрайт, постоянно повёрнутый лицом к камере (по аналогии с рекламными щитами на автодорогах, которые повёрнуты под наиболее выгодным углом).


  • Impostor — спрайт, который заменяет трёхмерную модель на большом удалении.



См. также |



  • Раскадровка

  • Microsoft Agent



Примечания |





  1. sprite definition — Dictionary — MSN Encarta


  2. Karl Guttag Conference on Delphi TI Net — Google Groups




Ссылки |



  • DirectX и Delphi. Спрайты

  • Искусство создания игр

  • Процесс создания CSS-спрайтов

  • CSS Sprite Generator




Popular posts from this blog

Список кардиналов, возведённых папой римским Каликстом III

Deduzione

Mysql.sock missing - “Can't connect to local MySQL server through socket”