Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.02.2014, 07:38
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 1  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
Tools Разделение spritesheet с непостоянным размером фрэймов

Здравствуйте.
Недавно заинтересовался темой спрайтщитов. Нашел для начала несколько бесплатных в интернете и решил попытаться воссоздать из них анимации персонажей.
Обнаружил следующую проблему: большинство скачанных спрайтщитов имеют непостоянный размер фрейма. То есть первый фрейм с персонажем может иметь размеры 100x100, а второй с тем же персонажем уже 115x80 и т.д. Пытаюсь найти/придумать алгоритм, который разделял бы такое изображение на фреймы так, чтобы в каждом фрейме полностью умещался персонаж и не было обрезанных кусков от соседних фреймов.
Пока я над этим думал у меня не раз появлялось чувство, что я занимаюсь бесполезными вещами или изобретаю велосипед.
Подскажите, есть ли готовое решение этой проблемы или, если такого нет, посоветуйте, что вообще можно придумать. Кажется, что решение где-то близко, но пока ни до чего толкового не додумался.

Вот ссылка на пример спрайтщита с указанной проблемой: http://www.36peas.com/storage/ninja/...te%20sheet.png

Старый 25.02.2014, 08:09
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
у меня не раз появлялось чувство, что я занимаюсь бесполезными вещами или изобретаю велосипед.
Именно. При создании спрайт листов вместе с ним всегда (если размер кадра не постоянный) идет файл описания, либо xml либо json. В этом файле и указано какой кадр какого размера и с какой позиции его нужно вырезать

Собственно, для этого ниндзя он лежит вот здесь http://www.36peas.com/storage/ninja/
а конкретно этот файл http://www.36peas.com/storage/ninja/...%20sheet.plist

Старый 25.02.2014, 16:08
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 3  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Подскажите, есть ли готовое решение этой проблемы или, если такого нет, посоветуйте, что вообще можно придумать. Кажется, что решение где-то близко, но пока ни до чего толкового не додумался.
Поищите по запросу RectangleBinPack.pdf. Я в свое время по этой книжке делал реализацию алгоритма Max Rects. Крутой алгоритм, кстати. Позволяет поворачивать картинки во время упаковки (чтобы больше влезло на меньшую общую площадь). Правда, если будете использовать запакованные картинки в качестве текстур для Starling, то учтите что Starling с повернутыми картинками не умеет работать (по крайней мере когда я проверял - не умел).
__________________
...вселенская грусть

Старый 26.02.2014, 03:38
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 4  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
Спасибо всем. Раз тут такое дело с описанием спрайтщитов, то, пожалуй, пока обойдусь без шаманства с разделением png на прямоугольники)

Цитата:
Сообщение от caseyryan Посмотреть сообщение
Именно. При создании спрайт листов вместе с ним всегда (если размер кадра не постоянный) идет файл описания, либо xml либо json. В этом файле и указано какой кадр какого размера и с какой позиции его нужно вырезать

Собственно, для этого ниндзя он лежит вот здесь http://www.36peas.com/storage/ninja/
а конкретно этот файл http://www.36peas.com/storage/ninja/...%20sheet.plist
Код:
<key>striking4.png</key>
<dict>
	<key>frame</key>
	<string>{{135, 2}, {131, 190}}</string>
	<key>offset</key>
	<string>{-2, -5}</string>
	<key>rotated</key>
	<false/>
	<key>sourceColorRect</key>
	<string>{{30, 38}, {131, 190}}</string>
	<key>sourceSize</key>
	<string>{195, 256}</string>
</dict>
А есть где-нибудь спецификация того, что есть что в этом xml? Есть какой-то стандарт для всех спрайтщитов?

Старый 26.02.2014, 04:30
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 5  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Вот недавно было о них.
Возможно окажусь не прав, но надеюсь поправят, лучше всего TexturePacker и сохранять для Starling.
Там легко разобраться и с программой и xml.

Старый 26.02.2014, 05:36
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 6  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
Цитата:
Сообщение от Akopalipsis Посмотреть сообщение
Вот недавно было о них.
Возможно окажусь не прав, но надеюсь поправят, лучше всего TexturePacker и сохранять для Starling.
Там легко разобраться и с программой и xml.
Не совсем понял как данная тема отвечает на мой вопрос. Там (в TexturePacker) разве есть возможность загружать готовый спрайтщит и генерировать по нему данные фреймов?
На данный момент могу обозначить две проблемы:
1. Можно ли как-нибудь из готового спрайтщита получить данные о фреймах
2. Как парсить эти данные (например формат plist - что обозначает каждый из тегов).
С разбивкой изображения внутри Flash мне и так все понятно. С этим проблем возникать не должно. Главное понять откуда взять данные разбивки на фреймы.

С ниндзей повезло. Там действительно есть файл plist с описанием фреймов (и то, как я уже сказал, мне непонятно, какой тег что показывает). Возьмем конкретный пример спрайтщита из интернета, к которому я никакого файла с данными не нашел: http://www.spriters-resource.com/res...s/42/44812.png
Что я могу с этим сделать? Или придется вручную находить координаты и размеры каждого фрейма?

Кажется, нашел решение. Возможно, не лучшее, но тем не менее, универсальное.
Есть бесплатная программа Shoebox (спасибо Akopalipsis за ссылку на тему). Так вот, одна из интересных возможностей программы - разбивка спрайтщита на отдельные спрайты. То есть первым шагом я разбиваю спрайтщит на множество отдельных png файлов, а вторым - заново воссоздаю спрайтщит, но уже со сгенерированным xml файлом, содержащим информацию о фреймах (который уже удобно парсить во Flash).

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


Последний раз редактировалось Parez; 26.02.2014 в 06:12.
Старый 26.02.2014, 11:20
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
А есть где-нибудь спецификация того, что есть что в этом xml? Есть какой-то стандарт для всех спрайтщитов?
Нет. Каждый делает так, как ему удобно.
Конкретно в этом случае что не понятно-то? Исходник открытый, все проще простого. Читаем xml файл, и берем из него нужные данные
Цитата:
Есть бесплатная программа Shoebox (спасибо Akopalipsis за ссылку на тему). Так вот, одна из интересных возможностей программы - разбивка спрайтщита на отдельные спрайты. То есть первым шагом я разбиваю спрайтщит на множество отдельных png файлов, а вторым - заново воссоздаю спрайтщит, но уже со сгенерированным xml файлом, содержащим информацию о фреймах (который уже удобно парсить во Flash).
Только вот как она определит нужное положение картинок? Хоть на пиксель ошибется, и о плавной анимации можно забыть


Последний раз редактировалось caseyryan; 26.02.2014 в 11:33.
Старый 26.02.2014, 12:16
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 8  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Parez, тут в соседней теме было высказано здравое подозрение, что подобные атласы не "найдены там, где раздают бесплатно", а попросту украдены.
Если это не так, ответь на вопрос — где ты раздобыл такой бесплатный текстурный атлас без xml/json?
__________________
Поймай яблоко 2!

Старый 26.02.2014, 13:29
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Zebestov, там у него есть xml, он в ней просто не разобрался. Атлас реально лежит в открытом доступе

Старый 26.02.2014, 13:35
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 10  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Ок. Это хорошо.
__________________
Поймай яблоко 2!

Создать новую тему Ответ Часовой пояс GMT +4, время: 04:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
sprite sheet , spritesheet , анимация , разделение изображения , спрайтщит
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 04:47.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.