User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 23

Тема: Поворот спрайта

  1. #11

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    вся проблема именно в том что каждый пиксель размазывается по 4м точкам вместо одной
    и тут надо считать какая из этих 4х будет новой точкой
    угу.

  2. #12

    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если вертеть 50 фпс, то искажения незаметны. См. лого в The Link. Там вообще целыми байтами шлёпается.

  3. #13

    Регистрация
    25.06.2009
    Адрес
    Таганрог
    Сообщений
    151
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    вся проблема именно в том что каждый пиксель размазывается по 4м точкам вместо одной
    и тут надо считать какая из этих 4х будет новой точкой
    именно так все и есть. Но этого не поймут пока сами не попробуют
    ZX Spectrum 48 issue 2, A600, Балтика, Commodore 64 + 1541-II

  4. #14

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Поворот спрайта на произвольный угол - это частный случай двумерной интерполяции. Исходный спрайт можно представить как функцию двух переменных (поверхность), заданную таблично. Требуется найти значения этой функции в точках, которые будут пикселами нового спрайта. Проблема в том, что новые точки в общем случае не совпадают со старыми, поэтому значения функции в них не заданы. Единственный случай, когда точки совпадают - это поворот спрайта на угол, кратный 90 градусам.

    Так вот, значения функции в новых точках не заданы, поэтому их приходится оценивать исходя из имеющихся значений этой функции в старых точках + некоторых представлениях о виде функции.

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

    Второй часто используемый метод - линейная интерполяция. Это по результатам то же самое, что описал SpecialistMK87, но проще в реализации. Значения функции между точками, где оно задано, вычисляется в виде линейной комбинации от координат. Этот метод дает более высокое качество и реализован в большинстве современных видеокарт аппаратно.

    Третий часто используемый метод - кубическая интерполяция. Он считается подходящим для высококачественной обработки изображений, хотя и он дает некоторое ухудшение качества.

    Вышеописанные методы - линейный и кубический - а также другие более сложные методы двумерной интерполяции дают дробные значения для новых пикселов, а в случае Spectrum эти значения нужно округлять до 0 либо 1, что также вносит искажения. Поэтому, даже при использовании самых современных и теоретически обоснованных методов интерполяции, значительное ухудшение качества изображения при повороте неизбежно. При размере спрайта 16х16 я не вижу никаких перспектив в автоматическом повороте. То есть повернуть-то можно, но потом все равно придется руками править, чтобы получить хороший результат. Помню, как мы для игры Monty черепа вращающиеся рисовали - гемор был еще тот.

    Если не в реальном времени - то вращать спрайты лучше всего в каком-нибудь фотошопе. Там реализованы современные методы обработки изображений.

  5. #15

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как много слов

    При повороте спрайта 16х16 на угол менее 90 градусов он превращается в кашу.
    так коротко и понятно
    С уважением,
    Jerri / Red Triangle.

  6. #16

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попробовал вчера средствами BGE сделать поворот с предварительным масштабированием. Для объектов с большим количеством деталей получается плохо. Т.е. никаких линий толщиной в пиксель и отдельно стоящих пикселей. Тогда будет лучше.

  9. #18

    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В каком-то из журналов была статья о повороте спрайта на угол, с последующей обработкой повернутого. Там даже примеры были

  10. #19

    Регистрация
    02.04.2005
    Адрес
    Минск
    Сообщений
    378
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попробовал вчера средствами BGE сделать поворот с предварительным масштабированием. Для объектов с большим количеством деталей получается плохо. Т.е. никаких линий толщиной в пиксель и отдельно стоящих пикселей. Тогда будет лучше.
    Так появился Диззи :-)
    Сферический ламер в вакууме

  11. #20

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так появился Диззи :-)
    А кого же они поворачивали?

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Обрезание спрайта на краю экрана.
    от moroz1999 в разделе Программирование
    Ответов: 29
    Последнее: 18.02.2009, 16:20
  2. Поворот спрайта
    от acidrain в разделе Графика
    Ответов: 9
    Последнее: 06.12.2008, 14:27
  3. Передача координат спрайта для вывода?
    от Keeper в разделе Программирование
    Ответов: 12
    Последнее: 29.09.2008, 16:01

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •