Яка різниця між спрайтом і текстурою?


27

У мене є завдання для університету, і моє завдання - обговорити текстури, які використовуються у відеоіграх, і те, як вони розвивалися.

Моє головне питання - в чому полягає принципова відмінність використання спрайту або використання інших методів текстури?

Провівши невелике дослідження, я, схоже, схиляюсь до того, що спрайти зберігають зображення в одному файлі, і їх можна використовувати для анімації тощо. Їх зазвичай використовували для старих відеоігор, як правило, використовуючи спрайти як усі їх візуальні ігри. Тепер, із сучасними іграми, спрайти, я вважаю, як правило, не використовуються в міру прогресу технологій та інших текстур, таких як картографування. Хоча спрайти досі застосовуються для розміщення таких функцій, як бар здоров'я або текстури на великі відстані.

Але які основні переваги використання текстур над спрайтами?



5
Один - це напій, а другий - не (прошу вибачення за цей жарт)
CAD97

Відповіді:


37

Зрештою, спрайти та текстури - це просто зображення - блоки растрових кольорових даних (хоча іноді ми трохи підштовхуємо межі, щоб вставити в них не-зображення). Відмінність багато в чому полягає в тому, як ми їх використовуємо.

Зазвичай ми називаємо зображення (або частину зображення, що містить безліч окремих фрагментів) "спрайтом", якщо його передбачувана мета візуалізації має бути намальована прямо до двовимірної сітки екрану, без викривлення в перспективі. Отже, те, що ви бачите в запущеній грі, це в основному те, що ви бачите в самому файлі зображень (крім ефектів тонування кольорів / зміни палітри / ефектів прозорості). Це стосується фонових плиток та символів / інтерактивних об’єктів у двовимірних іграх, картки «білборд», як частинки та старі стилі рендерингу дерев та чагарників, а також елементів та піктограм користувальницького інтерфейсу у 3D-іграх.

І навпаки, якщо ми використовуємо зображення для надання деталей поверхні для полігонів 3D-об’єкта, які можуть бути намальовані в перспективі, ми зазвичай називаємо це зображення "текстурою". Це ім'я перейшло до інших видів використання зображень для модулювання візуалізації чогось іншого, навіть якщо вони вже не стосуються текстури в тому сенсі, який ви могли відчути кінчиками пальців - таких речей, як відображення, карти викривлення, накладки, маски чи будь-які інші використання зображень загального призначення, які ми не відчуваємо, як називати конкретніше, має тенденцію потрапляти під "текстуру" в нашій вільній номенклатурі.

Це робить межу між двома нечіткими і не особливо суворими. Якщо у мене є зображення, що містить послідовність вогню та диму, які слід використовувати для малювання білбордових частинок для вибухового ефекту, я можу називати це "спрайтом" або "текстурою фліпбука" як взаємозамінний. Або якщо у мене є зображення набору плиток, що містить усі фонові плитки для 2D-гри, я можу назвати це "атлас текстури" сьогодні, за аналогією з текстурами атласу, розробленими для 3D-ігор, навіть незважаючи на те, що його дані та використання в моїй 2D грі є невідрізною. з того, що хтось ще назвав би спрайтом. Якщо у мене є прямокутник геометрії, метою якого є подання єдиного зображення на екран, я можу назвати це "текстурованим квадроциклом" або "спрайтом" залежно від того, що я хочу наголосити щодо його використання.

(Зверніть увагу на цьому останньому прикладі, що "спрайт" означає як сегмент вихідного зображення в наших ігрових активах, так і екземпляр візуалізованої ігрової сутності, яка використовує цей сегмент зображення - інший спосіб, коли ми використовуємо цю термінологію трохи непослідовно)

Ви знайдете деякі двигуни та бібліотеки, що кодують це відмінність при наданні намірів у власну номенклатуру. Наприклад, в Unity ви можете імпортувати об’єкт зображення як "спрайт" - це дозволяє отримати додатковий набір параметрів, які зазвичай бажані для зображень інтерфейсу користувача або двома ігровими активами, як-отрізання та упаковка spritesheet, а також можливість посилання частини зображення як дискретні об'єкти у вашій сцені та об'єкті. У цих випадках "Спрайт" часто означає "зображення (текстуру) плюс метадані " - але він все одно відображається так само, як звичайні текстури під капотом. Додаткова упаковка - це зручність, тому нам не потрібно проводити мікрофіксацію зміщення ультрафіолетового випромінювання тощо, де ми хочемо використовувати зображення;


Чи "текстури" зазвичай містять прозорі пікселі чи допускають їх? Я б подумав про об'єкт, який поводиться як піксельна карта з плоскою поверхнею, яка містить прозорі пікселі як "спрайт", незалежно від того, поверхня перпендикулярна осі камери.
supercat

2
Вони, звичайно, можуть, не відмовляючись від своєї "текстурної" назви. Загальноприйняте бачити, як люди посилаються на зображення для надання, скажімо, листя або огорожі ланцюга, як "текстуру листя" або "фактуру огорожі", навіть якщо вони зроблені з прозорістю альфа-тесту / розмальованою або альфа-змішаною . Ми також можемо називати аркуш аркуша «спрайтом листя», якщо він відображатиметься як рекламний щит, орієнтований на камеру, але було б незвично застосовувати назву спрайта, якщо він використовується в перспективній геометрії, як 3D-огорожа.
DMGregory

Під час візуалізації непрозорих об'єктів, відображених текстурою, двигун візуалізації не повинен турбуватися про те, як буде виглядати їх внутрішня частина, оскільки непрозора поверхня буде ховати внутрішню. Я б подумав, що щось подібне до огорожі з дерева або ланцюга найкраще виконати, зробивши непрозорі частини, а потім зробивши частково прозорі частини як дискретні частково прозорі поверхні. Хоча вони можуть не відповідати тому, що деякі люди називають "спрайтами", якщо вони не стикаються з камерою, вони також не будуть такими ж, як "звичайні" об'єкти.
supercat

Це дійсно зазвичай робиться. Геометрія стовпів і стовбурів огорожі відображається в непрозорому проході, а потім геометрія огорож огорожі та листя / гілочок виводиться згодом в альфа-тесті або альфа-змішаному проході.
DMGregory

1
Зазвичай я чую «прозору текстуру» або «альфа-текстуру» / «текстуру з альфа» - можливо, іноді «текстуру вирізу» / «текстуру вирізу», якщо це прозорість з твердим / альфа-тестуванням.
DMGregory

7

Спрайт - це релікт з історії комп'ютерних ігор. Подумайте, 8-бітний Ataris приблизно 1980. Невелике зображення, як правило, з бітовою маскою покриття (або спеціальним «прозорим» кольором), яке має положення на екрані і якесь особливе поєднання на екрані. З отворами, де є "отвори" в спрайті, відповідно до карти покриття. Зазвичай способом "просто працює" та таким чином, що легко дозволяє створити ілюзію рухомих матеріалів, зазвичай, зберігаючи та відновлюючи перезаписані оригінальні пікселі екрану.

Раніше спрайти були апаратною функцією на комп’ютерах, коли ви могли малювати / відкручувати їх, зберігаючи вміст екрана автоматично, раніше ви могли мати лише обмежену кількість (та не перекриваючись, так!) , а раніше вони були досить малі (наприклад, 16х16) і обмежені.

Курсор миші - це те, що найбільше наближається до спрайту в даний час (і раніше це було) було) справжнім спрайтом у деяких системах до десь десяти років тому).

Сьогодні насправді такого немає, але слово залишається. Спрайт - це в основному невелике двовимірне зображення, яке ви десь малюєте (складені). Зазвичай шляхом малювання невеликого текстурованого квадратика.

З іншого боку, текстура - це концепція читабельного зображення, що використовується в дещо сучасніших графічних API. Або, точніше, область пам’яті («буфер» з точки зору сучасних API) з деякими пов'язаними додатковими даними, такими як розмір, які можна вибирати за допомогою певних засобів. Зазвичай, але не обов'язково шейдером, що працює на графічному процесорному блоці. Зазвичай, але не обов'язково, з нормалізованими координатами, і зазвичай, але не обов'язково з фільтруванням (і міп-картами, і деяким конкретним режимом меж, і, і, і ...).

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


3
Належні спрайти накладені апаратними засобами, тому відеодані в пам'яті не змінюються і навіть не повинні використовувати той самий режим (наприклад, на C64, ви можете мати спрайти растрових зображень над текстовим фоном). Об'єкти, які видаються за допомогою збереження растрової карти та заміни даних, називаються BOBs (Blitter OBjects).
Саймон Ріхтер

1
@SimonRichter: Я не знайомий із C64, крім іграшки, але в Amiga їх теж було 8, якщо я правильно пам'ятаю. Не впевнений, як це працювало на апаратному рівні, але, можливо, це було і пряме накладення (здається, ймовірно). На ST, в A00D/ AOOCопкоде спрайт були , звичайно , розіграш / розсовувати фреймбуфер модифицирующего виду. BOBs, так, це теж існувало, типова річ Amiga. Мабуть, це було найбільш близьким до сучасного текстуру (будь-який розмір, завантажуйте в графічний процесор один раз, малюйте багато разів).
Деймон

4

Це порівняння порівняння яблук та апельсинів. Текстура - це лише зображення, а спрайт - це зображення та спосіб його використання.

Ми все ще використовуємо спрайти для 2d-ігор, і вони відображаються в 3d-іграх в ефектах частинок. У наш час спрайти, як правило, посилаються на певний вид текстурованого квадратика, або (рідко, я думаю,) єдиний трикутник. Навіть елементи інтерфейсу часто є текстурованими квадратиками - які я б назвав спрайтами.

Бувало так, що спрайти були попередньо завантажені в пам’ять і зашпаровані (байт-за-байтом, скопійовані) в точки на екрані (буквально, екранна пам'ять), як штампи. Певним чином ми все ще робимо це. Для анімаційних спрайтів ми часто змінюємо зразки координат текстури джерела, щоб копіювати сегменти з текстур, які мають бути відтворені на квадратики. Ефекти шейдерів, такі як відображення ударів, зразки з текстур так само, і, таким чином, все ще використовуються для, скажімо, ефектів світіння у спрайтах.

Точніше до 2d ігор, це стилістичний вибір. Наприклад, можна було складати намальовані вручну або намальовані персонажі в грі за допомогою спрайтів. Прикладом цього є ігри Південного парку.

Таким чином, ви не можете використовувати тільки текстуру замість спрайту.


3

Ось проста і коротка відповідь. Зазвичай я сприймаю спрайт як весь об'єкт сам, поряд із якими функціями та текстурами він застосований до нього. Що стосується текстури, я майже вважаю це просто зображенням, яке можна було б застосувати до чогось.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.