Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Компоновка spritesheet (http://www.flasher.ru/forum/showthread.php?t=190969)

wvxvw 30.12.2012 01:23

Компоновка spritesheet
 
Вложений: 1
Вот давече задался целью написать. На картинке - результат (понятно, что он не идеальный, и я еще буду дорабатывать, т.как наверняка и баги есть и т.п.)
Несмотря на это, вопрос к публике. Нужно ли оно кому-нибудь кроме меня?
Если нужно, то опишите чего бы вы ожидали, кроме, непосредственно скомпонованой картинки. CSS? Может быть AS3 код сгенерировать, который картинку нарезает на Bitmap/ BitmapData? Или одну картнику и кучу прямоугольников?
Да, написано на Лиспе :) что значит, что нужно будет немного задуматься при установке (но с другой стороны все ж таки кроссплатформенно!). Ну и, понятное дело, что в повседневной жизни програмировать на Лиспе ее не нужно будет, будет какой-нибудь интерфейс (консольный).

Вложение 28908

BBOY Ильич 30.12.2012 01:46

Штука полезная, но ведь есть уже такие няшки:
https://github.com/scriptum/Cheetah-Texture-Packer
http://www.codeandweb.com/texturepacker/

mooncar 30.12.2012 02:38

wvxvw, пару бы слов, для чего это. Битмапный лист - я немного знаю, а спрайтный?
И вообще, почему не блог-запись? Для "флейма" не очень годится. Вполне себе тематическая проф-заявка разработчика, несмотря на открытый тобой вопрос по востребованности.

wvxvw 30.12.2012 02:50

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

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

Tails 30.12.2012 03:17

Прикольно. В крупных играх такая система частенько используется, ещё в некоторых библиотеках JS встречал подобное.

Написано на лиспе. А как его к флеш плееру применить?

Zebestov 30.12.2012 03:19

Было бы здорово увидеть алгоритм, дабы реализовать его средствами AS3 для упаковки атласа "на лету" из разных форматов разрозненных изображений.

caseyryan 30.12.2012 10:07

wvxvw, было бы очень круто на ас3 такой упаковщик. Результат очень даже приличный, по-моему.

Я как-то занимался портированием атласа текстур с джавы, но так руки и не дошли все к нормальному виду привести.

wvxvw 30.12.2012 11:51

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

Да, но, кстати, например для квадратных картинок, есть версия которая доказано оптимально складывает 32 квадрата разного размера. Сейчас как раз читаю описание этого алгоритма.

Котяра 30.12.2012 15:17

Это есть в Flash CS6, но на сам алгоритм упаковки интересно взглянуть.
Что бы допилить? Генерацию xml для старлинга.

wvxvw 30.12.2012 15:58

Ну я, как всегда, сначала сделал, а потом пошел читать, о том, как надо было :)
Но мне все равно интересно породолжить свой вариант... хотя надежд мало.
Вобщем, в двух словах, проверенная и хорошая стратегия заключается примерно в следующем:
Найти оптимальную площадь куда можно сложить все фигуры (т.е. просто сумма всех площадей). Для нее, естесственно, оптимальным периметром будет квадрат.
Попытаться разместить все фигуры.
Если получилось - мы закончили программу, иначе, увеличить площадь или увеличить периметр, не изменяя площадь, и попробовать разместить снова, и так, пока не поместится.


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

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