Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Разделение spritesheet с непостоянным размером фрэймов (http://www.flasher.ru/forum/showthread.php?t=206728)

Parez 25.02.2014 07:38

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

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

caseyryan 25.02.2014 08:09

Цитата:

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

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

gloomyBrain 25.02.2014 16:08

Цитата:

Подскажите, есть ли готовое решение этой проблемы или, если такого нет, посоветуйте, что вообще можно придумать. Кажется, что решение где-то близко, но пока ни до чего толкового не додумался.
Поищите по запросу RectangleBinPack.pdf. Я в свое время по этой книжке делал реализацию алгоритма Max Rects. Крутой алгоритм, кстати. Позволяет поворачивать картинки во время упаковки (чтобы больше влезло на меньшую общую площадь). Правда, если будете использовать запакованные картинки в качестве текстур для Starling, то учтите что Starling с повернутыми картинками не умеет работать (по крайней мере когда я проверял - не умел).

Parez 26.02.2014 03:38

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

Цитата:

Сообщение от caseyryan (Сообщение 1160631)
Именно. При создании спрайт листов вместе с ним всегда (если размер кадра не постоянный) идет файл описания, либо 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? Есть какой-то стандарт для всех спрайтщитов?

Akopalipsis 26.02.2014 04:30

Вот недавно было о них.
Возможно окажусь не прав, но надеюсь поправят, лучше всего TexturePacker и сохранять для Starling.
Там легко разобраться и с программой и xml.

Parez 26.02.2014 05:36

Цитата:

Сообщение от Akopalipsis (Сообщение 1160685)
Вот недавно было о них.
Возможно окажусь не прав, но надеюсь поправят, лучше всего TexturePacker и сохранять для Starling.
Там легко разобраться и с программой и xml.

Не совсем понял как данная тема отвечает на мой вопрос. Там (в TexturePacker) разве есть возможность загружать готовый спрайтщит и генерировать по нему данные фреймов?
На данный момент могу обозначить две проблемы:
1. Можно ли как-нибудь из готового спрайтщита получить данные о фреймах
2. Как парсить эти данные (например формат plist - что обозначает каждый из тегов).
С разбивкой изображения внутри Flash мне и так все понятно. С этим проблем возникать не должно. Главное понять откуда взять данные разбивки на фреймы.

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

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

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

caseyryan 26.02.2014 11:20

Цитата:

А есть где-нибудь спецификация того, что есть что в этом xml? Есть какой-то стандарт для всех спрайтщитов?
Нет. Каждый делает так, как ему удобно.
Конкретно в этом случае что не понятно-то? Исходник открытый, все проще простого. Читаем xml файл, и берем из него нужные данные
Цитата:

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

Zebestov 26.02.2014 12:16

Parez, тут в соседней теме было высказано здравое подозрение, что подобные атласы не "найдены там, где раздают бесплатно", а попросту украдены.
Если это не так, ответь на вопрос — где ты раздобыл такой бесплатный текстурный атлас без xml/json?

caseyryan 26.02.2014 13:29

Zebestov, там у него есть xml, он в ней просто не разобрался. Атлас реально лежит в открытом доступе

Zebestov 26.02.2014 13:35

Ок. Это хорошо.


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

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