Воскресенье, 17 Ноября 2024, 23:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как определить количество кадров в спрайте.
MorfayДата: Пятница, 20 Января 2012, 09:47 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Доброе утро. Разбираюсь с 2D графикой. Написал загрузку и отображение графики и кадров в спрайте (довольно прикольный алгоритм, позволяющий отобразить любой кадр спрайта заменой 1-2 символов). Как это работает:
Спрайт представляет собой таблицу, с одинаковой шириной и высотой отдельного кадра. Зная номер столбца, строки, а также ширину и высоту кадра находим координаты нужные нам и выводим на экран (Работа с графикой через SDL).
Но хочу сделать автоматическое распознавание кадров в спрайте. То есть, при загрузке спрайта, зная ширину и высоту, мы автоматически разбиваем спрайт на ячейки с кадрами. После считываем каждую ячейку. Если в ней есть изображение, то это кадр анимации. Если пусто (просто фон или его отсутствие), то кадры одной анимации закончены. Цель: сделать автоматический загрузчик спрайта с разбивкой на кадры и/или анимации.

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

З. Ы. Была идея создавать файл с описанием кадров, но тогда вся идея ни к чему - автоматизмом и не пахнет.
zodiakДата: Пятница, 20 Января 2012, 10:39 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Или делай все файлы с одинаковой разметкой (сеткой кадров) или создавай файл с описанием. Сделать такой умный алгоритм будет очень трудно. И все равно будут ситуации, когда он будет давать сбои. Оно тебе надо. Затраты труда на создание такого алгоритма во много раз превысят время на создание файла описания.
Проще уж сделать программу для сбора кадров в один спрайт, которая будет автоматом создавать файл описания.


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
MorfayДата: Пятница, 20 Января 2012, 10:48 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Quote (zodiak)
Проще уж сделать программу для сбора кадров в один спрайт, которая будет автоматом создавать файл описания


А это идея. happy

Алгоритм написать не сложно, проблема в том, что он будет как костыль - помогать будет, но не всегда, да и "бегать" с ним будет сложновато. По крайней мере, выдрать пиксель на SDL, судя по документации, сложностей не представляет. Но твоя идея однозначно лучше.

Есть ли у кого еще варианты?
DemeronДата: Пятница, 20 Января 2012, 11:08 | Сообщение # 4
User created in C++
Сейчас нет на сайте
Quote (Morfay)
Но хочу сделать автоматическое распознавание кадров в спрайте. То есть, при загрузке спрайта, зная ширину и высоту, мы автоматически разбиваем спрайт на ячейки с кадрами.

А если в одной текстуре несколько анимаций?

Quote (Morfay)
Есть ли у кого еще варианты?

В HGE, в классе анимации реализован неплохой алгоритм.


Сообщение отредактировал Demeron - Пятница, 20 Января 2012, 11:08
zodiakДата: Пятница, 20 Января 2012, 14:46 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Quote (Morfay)
Но твоя идея однозначно лучше.

Это не моя идея, а вот отсюда - http://gcup.ru/forum/6-14775-1


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
MorfayДата: Пятница, 20 Января 2012, 16:12 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Quote (Demeron)
А если в одной текстуре несколько анимаций?

Тоже учитывал такой вариант. Вполне подходило все под сложившиеся условия. К примеру спрайт состоящий из кадров: 1,2,3 - кадр есть. 0 -пустая область.

1111
1000
2222
2222
2200
3330

Определяем кадры до первого пустого места - это и будет 1-я анимация. Так определяем вторую, третью и далее. Сама проблема и была в определении - сложно сделать уникальный алгоритм, который точно будет определять кадры.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг