Важная информация

User Tag List

Показано с 1 по 7 из 7

Тема: Sprite resize (типа как в Звездных Войнах..)

  1. #1
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,501
    Спасибо Благодарностей отдано 
    197
    Спасибо Благодарностей получено 
    174
    Поблагодарили
    76 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Sprite resize (типа как в Звездных Войнах..)

    Подскажите как оптимальнее сабж сделать?
    Нужно за фрейм, нужен реайл тайм (тоесть
    используется не один спрайт).
    Размер output 12х3
    В принципе можно обойтись только уменьшением (хотя на алгоритм
    это вроде не сильно влияет).
    Перспектива по вертикали никаких проблем у меня не вызывает, но вот с горизонталью проблемы.
    Пока на ум приходит что-то типа:
    ld hl,#4000
    ld de,sprite
    ld c,(hl)
    xor a

    bit 7,c
    jr nz,$+4
    or %100000000
    bit 6,c
    jr nz,$+4
    or %010000000
    bit 5,c
    jr nz,$+4
    or %001000000

    и т.д.
    Я бы и остановился на этом ватрианте, но больно запарно
    для него декрюнчер писать.

    p.s. Минимальный ресайз 50%
    Каждая строка спрайта должна быть по центру.
    Резайс только на четное колво пикселей.
    Последний раз редактировалось newart; 05.07.2005 в 13:47.

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

  3. #2
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,501
    Спасибо Благодарностей отдано 
    197
    Спасибо Благодарностей получено 
    174
    Поблагодарили
    76 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Неужели совсем никто не хочет помочь материализоваться на предстоящем CC, новому игровому шедевру от n-discovery?

  4. #3
    Master
    Регистрация
    16.01.2005
    Сообщений
    615
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    'Как в Звёздных Войнах' - это типа текст, наклонно уплывающий вдаль? Это уже не просто ресайз получается.

    Если спрайтов мало, а памяти много - м.б., хранить их сразу во всех нужных горизонтальных размерах?

  5. #4
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,501
    Спасибо Благодарностей отдано 
    197
    Спасибо Благодарностей получено 
    174
    Поблагодарили
    76 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shiru
    'Как в Звёздных Войнах' - это типа текст, наклонно уплывающий вдаль? Это уже не просто ресайз получается.

    Если спрайтов мало, а памяти много - м.б., хранить их сразу во всех нужных горизонтальных размерах?
    Да, текст наклонно (перспектива) и сужаясь к центру.
    Это обычный ресайз, центровка не сильно осложняет задачу.
    Повторяю мне интересн ресайз именно одной линии, по вертикали
    ресайз уже сделан.
    Памяти много, но спрайты то надо как-то отрендерить так или иначе.
    Последний раз редактировалось newart; 06.07.2005 в 00:12.

  6. #5
    Master
    Регистрация
    16.01.2005
    Сообщений
    615
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от newart
    Это обычный ресайз, центровка не сильно осложняет задачу.
    Ресайз, но по одиночным линиям. Частный случай - вывод стен в Wolf'оподобных играх (только набок повёрнуто).
    Цитата Сообщение от newart
    Памяти много, но спрайты то надо как-то отрендерить так или иначе.
    Для пререндера с уменьшением я-бы, наверное, пошёл по такому пути: сначала одну линию спрайта перевёл-бы в буфер, где один байт представлял одну точку; потом выбирал-бы байты с нужным шагом (типа как при вертикальном ресайзе), и набивал выходную линию по битам. Не очень быстро, зато просто и коротко.

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

  7. #6
    Activist Аватар для Raider
    Регистрация
    24.06.2005
    Адрес
    novosibirsk
    Сообщений
    266
    Записей в дневнике
    5
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Основную проблему у тебя представляет zoom по x и скорость разумеется.
    здесь еще нужно бы знать запросы по памяти. Потому что если с памятью нет проблем, то практчески все можно симулировать через память, держа или перекодировочные таблицы, или precalcaulated.
    Попробуем пойти по дороге precalculated.
    Возьмем 26 букв (или меньше, можно например взять только реально те буквы которые использованы в твоем тексте, так что напиши текст для скролла заранее, хехехехе..)
    нарисуем буквы 5x5 так, чтобы в них было как можно больше similarity по байт-фрагментам. Это для того, чтобы нам хранить (зумленые и сдвинутые) только под-фрагменты букв, а не буквы целиком. Реально, как я понимаю, останется несколько видов горизонтальных белых полосок.
    Создадим несколько постепенно увеличивающихся копий фрагментов.
    Также создадим сдвинутые фрагменты (по x 8шт копий).
    При этом можно шаг увеличения/сдвига выбрать не пиксель, а два, хотя может быть вполне возможно что и попиксельно и пямяти хватит итд.
    Далее (только если потребуется по скорости) нам нужно сесть, и внимательно проанализировать что за данные получились в памяти после сдвига и зуминга фрагментов букв. Возможно что там будут специфичные байтовые последовательности 00, FF итд.
    Далее оптимизируем вывод часто используемых подфрагментов путем написания custom-кода вместо сборки данных из памяти.
    Заметим также, что когда мы выводим зумленую и сдвинутую полоску буквы, то нужно по or/xor накладывать только края, а середину состоящую из FF или чего-то подобного можно просто блиттить на экран.

    ну вот примерно вот так.
    если что-то получится, будет интересно посмотреть что получилось
    Alex Raider, Flash inc. 1992-1997 Новосибирск

  8. #7
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,501
    Спасибо Благодарностей отдано 
    197
    Спасибо Благодарностей получено 
    174
    Поблагодарили
    76 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Raider
    если что-то получится, будет интересно посмотреть что получилось
    Thx!
    Бум пробывать, CC не за горами!

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

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

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

Похожие темы

  1. Ответов: 5
    Последнее: 20.06.2005, 00:10

Ваши права

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