![]() |
Компоновка spritesheet
Вложений: 1
Вот давече задался целью написать. На картинке - результат (понятно, что он не идеальный, и я еще буду дорабатывать, т.как наверняка и баги есть и т.п.)
Несмотря на это, вопрос к публике. Нужно ли оно кому-нибудь кроме меня? Если нужно, то опишите чего бы вы ожидали, кроме, непосредственно скомпонованой картинки. CSS? Может быть AS3 код сгенерировать, который картинку нарезает на Bitmap/ BitmapData? Или одну картнику и кучу прямоугольников? Да, написано на Лиспе :) что значит, что нужно будет немного задуматься при установке (но с другой стороны все ж таки кроссплатформенно!). Ну и, понятное дело, что в повседневной жизни програмировать на Лиспе ее не нужно будет, будет какой-нибудь интерфейс (консольный). Вложение 28908 |
Штука полезная, но ведь есть уже такие няшки:
https://github.com/scriptum/Cheetah-Texture-Packer http://www.codeandweb.com/texturepacker/ |
wvxvw, пару бы слов, для чего это. Битмапный лист - я немного знаю, а спрайтный?
И вообще, почему не блог-запись? Для "флейма" не очень годится. Вполне себе тематическая проф-заявка разработчика, несмотря на открытый тобой вопрос по востребованности. |
Так оно еще не сделано :) делал для себя, для немного другой цели, но так уже по-дороге получилось, вот стою в раздумии: толи допилить до состояния, когда и другие могут пользоваться, ну, чтобы с документацией там и выложить на общественную раздачу, или может а ну его :)
Я как догадывался, что существуют такие вещи уже, но писать обертку для чего-то чужого, как-то стало влом. Спрайт-листы, ну это не флешевые спрайты, это своего рода экономия на загрузке / упаковке. Ну, это актуально в CSS, где часто есть много маленьких картинок, которые по отдельности загружать, ну просто очень не с руки, т.как сам по себе запрос - уже половина картинки, ну и на общение с сервером много ресурсов тратится - легче один файл скачать, чем кучу маленьких. Ну и в играх, типа раскадровки персонажа, например, или текстуры - ну, собственно, пройти по сылкам Иллича, там все видно стразу. |
Прикольно. В крупных играх такая система частенько используется, ещё в некоторых библиотеках JS встречал подобное.
Написано на лиспе. А как его к флеш плееру применить? |
Было бы здорово увидеть алгоритм, дабы реализовать его средствами AS3 для упаковки атласа "на лету" из разных форматов разрозненных изображений.
|
wvxvw, было бы очень круто на ас3 такой упаковщик. Результат очень даже приличный, по-моему.
Я как-то занимался портированием атласа текстур с джавы, но так руки и не дошли все к нормальному виду привести. |
Такая упаковка в общем случае не решаемая (т.е. мы говорим о проверке всех пермутаций всех картинок, а это факториал от количества картинок - что как бы выходит за рамки полиномиальной сложности), и, в моем случае - это делается методом "сначала сложить более-менее", а потом попытаться улучшить, но вот стратегия улучшения, пока что не ахти. В любом случае, это не мгновенный процесс. Для сотни картинок это отнимает около секунды - двух, но если поменять стратегию - это может и в минуты легко перерасти.
Да, но, кстати, например для квадратных картинок, есть версия которая доказано оптимально складывает 32 квадрата разного размера. Сейчас как раз читаю описание этого алгоритма. |
Это есть в Flash CS6, но на сам алгоритм упаковки интересно взглянуть.
Что бы допилить? Генерацию xml для старлинга. |
Ну я, как всегда, сначала сделал, а потом пошел читать, о том, как надо было :)
Но мне все равно интересно породолжить свой вариант... хотя надежд мало. Вобщем, в двух словах, проверенная и хорошая стратегия заключается примерно в следующем: Найти оптимальную площадь куда можно сложить все фигуры (т.е. просто сумма всех площадей). Для нее, естесственно, оптимальным периметром будет квадрат. Попытаться разместить все фигуры. Если получилось - мы закончили программу, иначе, увеличить площадь или увеличить периметр, не изменяя площадь, и попробовать разместить снова, и так, пока не поместится. |
| Часовой пояс GMT +4, время: 11:08. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.