Спрайт (компьютерная графика): различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
 
(не показаны 32 промежуточные версии 25 участников)
Строка 1:
{{другие значения|Спрайт}}
'''Спрайт''' ({{lang-en|Spritesprite}} — «[[фея]];, [[эльф]]») — графический объект в [[компьютерная графика|компьютерной графике]].
{{refimprove|date=май 2009}}
'''Спрайт''' ({{lang-en|Sprite}} — [[фея]]; [[эльф]]) — графический объект в [[компьютерная графика|компьютерной графике]].
 
Чаще всего — [[Растровая графика|растровое]] [[Цифровое изображение|изображение]], свободнокоторое перемещающеесяможно [[Рендеринг|отобразить]] пона экрануэкране<ref>[{{Cite web |url=http://encarta.msn.com/dictionary_/sprite.html |title=sprite definition — Dictionary — MSN Encarta<!-- Заголовок добавлен ботом -->] |accessdate=2008-01-11 |archiveurl=https://web.archive.org/web/20090525155624/http://encarta.msn.com/dictionary_/sprite.html |archivedate=2009-05-25 |deadlink=yes }}</ref>. Наблюдение спрайта в трёхмерном пространстве под несоответствующим углом приводит к разрушению иллюзии. То есть легче всего воспринимать спрайт как перемещающуюся в пространстве проекцию какого-то объёмного тела так, чточтобы разница была незаметна.
 
== Происхождение термина ==
Слово «спрайт» было придумано в 1970-е годы одним сотрудником компании [[Texas Instruments]]: их новая [[микросхема]] [[TMS9918]] могла аппаратно отображать небольшие картинки поверх неподвижного фона<ref>[{{Cite web |url=https://groups.google.com/forum/?fromgroups=#!msg/comp.sys.ti/QlLThkrm8Po/GtnkyhtF4nMJ |title=Karl Guttag Conference on Delphi TI Net — Google Groups] |access-date=2012-09-03 |archive-date=2013-08-02 |archive-url=https://archive.today/20130802023140/https://groups.google.com/forum/?fromgroups=%23!topic/javaposse/TLNrMsznjRY#!msg/comp.sys.ti/QlLThkrm8Po/GtnkyhtF4nMJ |deadlink=no }}</ref>.
 
Слово «спрайт» было придумано в 1970-е годы одним сотрудником компании [[Texas Instruments]]: их новая микросхема [[TMS9918]] могла аппаратно отображать небольшие картинки поверх неподвижного фона<ref>[https://groups.google.com/forum/?fromgroups=#!msg/comp.sys.ti/QlLThkrm8Po/GtnkyhtF4nMJ Karl Guttag Conference on Delphi TI Net — Google Groups]</ref>.
 
== Спрайты в двухмерной графике ==
Изначально под спрайтами понимали небольшие рисунки, которые выводились на экран с применением [[аппаратное ускорение|аппаратного ускорения]]. На некоторых машинах ([[MSX]] 1, [[NES]]) программная прорисовка [[конфликт атрибутов|приводила к определённым ограничениям]], а аппаратные спрайты этого ограничения не имели. Впоследствии с увеличением мощности [[центральный процессор|центрального процессора]], от аппаратных спрайтов отказались, и понятие «спрайт» распространилось на всех двумерных персонажей. В частности, в [[компьютерная игра|видеоиграх]] [[Super Mario]] и [[Heroes of Might and Magic]] вся графика спрайтовая, анимированная с помощью перебора изображений из атласа спрайтов.
 
К аппаратно ускоренным спрайтам вернулись в середине [[1990-е|1990-х]] годов — когда развитие [[мультимедиа]] и взрывное повышение разрешения и глубины цвета потребовало специализированныйспециализированного процессорпроцессора в видеоплате. Именно тогда, как обёртка над аппаратным 2D-ускорителем, вышел [[DirectDraw]]. DirectX 8 ввёл общий [[API]] для двух- и трёхмерной графики, и в современных спрайтовых играх двухмерные спрайты выводятся точно так же, как и трёхмерные — как [[Текстура (трёхмерная графика)|текстурированный]] [[прямоугольник]].
Изначально под спрайтами понимали небольшие рисунки, которые выводились на экран с применением [[аппаратное ускорение|аппаратного ускорения]]. На некоторых машинах ([[MSX]] 1, [[NES]]) программная прорисовка [[конфликт атрибутов|приводила к определённым ограничениям]], а аппаратные спрайты этого ограничения не имели. Впоследствии с увеличением мощности [[центральный процессор|центрального процессора]], от аппаратных спрайтов отказались, и понятие «спрайт» распространилось на всех двумерных персонажей. В частности, в [[компьютерная игра|видеоиграх]] [[Super Mario]] и [[Heroes of Might and Magic]] вся графика спрайтовая.
 
Атлас спрайтов является растровым изображением, объединяющим спрайты в набор раскадровок анимаций или иным комплектом спрайтов. Целесообразность применения заключается в уменьшении количества файлов и применении sprite-batch в процессе [[рендеринг]]а: видеокарте передаётся одно изображение, набор координат, на которых его необходимо «[[Рендеринг|отрендерить]]», и «трафаретов», вырезающих из атласа отдельные спрайты. В результате двухмерная графика «рендерится» значительно быстрее, чем одиночными передачами видеокарте одиночных спрайтов с указанием координат отрисовки. Для дополнительного сжатия и уменьшения количества неиспользуемого пространства атлас может комбинировать изображения не сеткой, а в максимально плотно сжатом виде, таким образом, что, если описать вокруг каждого спрайта прямоугольник — часть прямоугольников будет пересекаться. Данный формат требует дополнительной информации о вершинах, которыми можно описать каждый спрайт без пересечения с другими, и увеличивает время загрузки приложения, но позволяет сократить память.
К аппаратно ускоренным спрайтам вернулись в середине [[1990-е|1990-х]] годов — когда развитие [[мультимедиа]] и взрывное повышение разрешения и глубины цвета потребовало специализированный процессор в видеоплате. Именно тогда, как обёртка над аппаратным 2D-ускорителем, вышел [[DirectDraw]]. DirectX 8 ввёл общий API для двух- и трёхмерной графики, и в современных спрайтовых играх двухмерные спрайты выводятся точно так же, как и трёхмерные — как [[Текстура (трёхмерная графика)|текстурированный]] прямоугольник.
 
=== CSS-спрайты ===
[[CSS]] позволяет применять в себе атласы спрайтов. Несколько изображений располагаются в одном графическом файле. Далее, чтобы разложить его на несколько изображений, применяется ограничение размеров изображения по размеру одного спрайта в атласе, и сдвиг background-position атласа на значение, кратное высоте изображения. Таким образом, один файл может обеспечить иконками весь сайт.
 
CSS-спрайты экономят трафик и ускоряют загрузку — браузеру[[браузер]]у потребуется запрашивать меньше файлов.
Применяются в вебе. Несколько изображений располагаются в одном графическом файле. Для того, чтобы вырезать из файла нужный кусок, применяется [[CSS]] — отсюда название технологии.
 
CSS-спрайты экономят трафик и ускоряют загрузку — браузеру потребуется запрашивать меньше файлов.
 
== Спрайты в трёхмерной графике ==
 
=== Движки первого поколения ===
В первых трёхмерных играх, например, [[Wolfenstein 3D]] ([[1992]]), [[Doom (игра, 1993)|Doom]] ([[1993]]) и [[Build Engine]]-основанных (DukeNukem3D[[Duke Nukem 3D]], [[Shadow Warrior (игра, 1997)|Shadow Warrior]], Exhumed, [[Redneck Rampage]]), персонажи представлялись в виде двумерных рисунков, изменяющих размер в зависимости от расстояниятого, насколько далеко они находятся от игрока.
[[Файл:Doom sprites.png|200px|thumb|Спрайтовые персонажи в [[Doom]]. Обратите внимание на два совершенно одинаковых трупа.]]
 
В первых трёхмерных играх, например, [[Wolfenstein 3D]] ([[1992]]), [[Doom]] ([[1993]]) и [[Build Engine]]-основанных (DukeNukem3D, Shadow Warrior, Exhumed, Redneck Rampage), персонажи представлялись в виде двумерных рисунков, изменяющих размер в зависимости от расстояния.
 
=== На [[3D-акселератор]]ах ===
 
На 3D-акселераторах применяется такая техника: объект рисуется в виде плоскости с наложенной на неё [[Текстура (трёхмерная графика)|текстурой]] с прозрачными областями. Эта технология применяется в трёх случаях.
 
==== Оптимизация ====
 
Спрайты могут применяться для [[оптимизация (программирование)|оптимизации]] графического ядра, когда отрисовка трёхмерной детализованной модели слишком накладна и может привести к сильному падению скорости рендеринга. Таковыми являются:
 
* Объекты, присутствующие в сцене в большом количестве и которые, будучи трёхмерными, имели бы большое количество граней и очень сильно влияли бы на производительность — например, публикамассовка на заднем плане, дым, трава и т. д.
* Удалённые объекты, которые вблизи рисуются [[полигональная модель|полигональными моделями]], по мере удалённости превращаются в спрайты различной детализации (LOD).
 
==== Спецэффекты ====
 
Некоторые [[спецэффекты]], такие как огонь, выполняются спрайтами, так как [[Многоугольник|полигональный]] огонь плохо смотрится. Сравните, например, взрывы в [[Quake 2]] и [[Unreal Tournament]].
 
Для большей правдоподобности изображения используется большое количество сравнительно маленьких спрайтов (так называемая [[система частиц]]).
 
<gallery></gallery>
 
==== Живая съёмка ====
Строка 55 ⟶ 46 :
 
Появление [[шейдер]]ов частично снимает потребность в живой съёмке — многие нюансы фотоизображения уже можно передать полигональными моделями в реальном времени.
 
=== Разрушение иллюзии ===
 
Наблюдение спрайта под несоответствующим углом приводит к разрушению иллюзии. В зависимости от математического аппарата рендеринга («движка»), разрушение может происходить двумя способами.
 
# «Эффект портрета». Спрайтовый объект постоянно держится к наблюдателю нормалью к поверхности, что приводит к тому, что он визуально «поворачивается» все время к нему «лицом». В небольших пределах это незаметно, но при взгляде, скажем, на монстра сверху он может оказаться «лежащим на спине» на горизонтальном полу и при этом перебирающим ногами, да еще и бегущим в нужном направлении, не меняя более чем странной позы. Для борьбы с этим эффектом применяются наборы из большого числа спрайтов, снятых с разных направлений, которые подменяют друг друга в зависимости от угла наблюдения, но момент перехода от спрайта к спрайту также весьма заметен — при условии экономии на числе кадров в секунду в анимации, что во времена [3D-]спрайтовых игр и применялось повсеместно по причине удешевления разработки [вручную рисуемого контента], [значительно] уменьшало объём игрового пространства на диске и инсталляционного на Floppy/CD-диске(ах) и [значительно] снижало системные требования к ПК. Позже возможности ПК и дисков позволили увеличить число кадров, что и было некоторыми сделано, например, в таких играх как [[Outlaws(игра)|Outlaws]] и [[Cybermage(игра)|Cybermage]] — что значительно улучшило визуализацию объектов, в частности при перемещении главного персонажа, особенно наиболее типичного — в горизонтальной плоскости.
# «Эффект [[Ельцин, Борис Николаевич|Ельцина]]»{{Нет АИ|22|05|2009}}. Назван из-за сходства спрайта с картонными портретами первого президента РФ, предназначенными для фотографий-[[сувенир]]ов и устанавливавшимися в людных местах в 90-е годы, совпавшие с расцветом спрайтовых игр. Возникает, если спрайт не поворачивается нормалью к поверхности к наблюдателю, выдавая «плоскостность» объекта даже при небольших изменениях угла наблюдения. Характерен для аппаратно-рендеримых спрайтов, введенных в полигональный «движок» как вспомогательные.
 
=== Терминология ===
* '''Billboard''' — спрайт, постоянно повёрнутый лицом к камере (по аналогии с [[рекламаРекламный щит|рекламными]] щитами]] на автодорогах, которые повёрнуты под наиболее выгодным углом).
 
* '''Billboard''' — спрайт, постоянно повёрнутый лицом к камере (по аналогии с [[реклама|рекламными]] щитами на автодорогах, которые повёрнуты под наиболее выгодным углом).
* '''Impostor''' — спрайт, который заменяет трёхмерную модель на большом удалении.
 
Строка 76 ⟶ 59 :
 
== Ссылки ==
* [https://web.archive.org/web/20150221181833/http://dolgov.hut.ru/programming/directx/dx01.html DirectX и Delphi. Спрайты]
* [http://requier.kulichki.com/html/lesson3.html Искусство создания игр]
* [http://about-windows.ru/sajtostroenie/kak-obedinit-neskolko-izobrazhenij-v-css-sprajt/ Процесс создания CSS-спрайтов]
* [http://ru.spritegen.website-performance.org/ CSS Sprite Generator]
* [[Craftpix.net]] цифровая платформа для распространения 2D спрайтов
 
{{refimprove|date=май 2009-05-20}}
 
[[Категория:Компьютерная анимация]]