вторник, 26 февраля 2013 г.

TexturePacker - добротный упаковщик спрайтов.


Привет, меня зовут +Сергей Вихирев, мы только что закончили работу над Evil In Trouble и мне захотелось рассказать о замечательной утилите TexturePacker, любезно предоставленной нам её разработчиком. Спасибо, Andreas Löw! :)

TexturePacker предназначен для запаковывания мелких спрайтов в атласы и на наш взгляд является наиболее продуманным и удобным инструментом для этого. По-крайней мере, из тех, которые мы тестировали.


Зачем вообще нужны атласы? Ну... хотя бы из-за вот таких двух преимуществ:

  • Возможность группировать спрайты при отрисовке так, чтобы избегать ненужного переключения текстур или и вовсе отрисовывать все за один раз(batching)
  • Экономия памяти устройства. Так как графические чипы работают только с текстурами размеры которых являются степенью двойки (а некоторые к этому добавляют требование, чтобы текстура была квадратной), то это может стать неявной причиной перерасхода памяти. Давайте представим, что у нас есть некий элемент интерфейса, или элемент декора уровня, шириной 280px и высотой 40px. Если загрузить данную текстуру в любой графической библиотеке, то ей придется загрузить его в текстуру размером 512x512. А если таких текстур несколько? Представляете сколько Вы можете потерять памяти, просто так?
А теперь о том, из-за чего нам понравился именно TexturePacker.

TexturePacker имеет очень много полезных опций и настроек, которые позволяют учитывать все требования к генерации атласов, которые нами на данный момент предъявляются, а именно:

Экспорт

Возможен экспорт для множества различных игровых и не очень движков.
Например, cocos2d, corona, libGDX, Shiva3D, Unity3D.
Форматы текстур получаемых на выходе - png, jpg, bmp, tga, tiff, pvr, а также pvr.gz и pvr.ccz. Не хватает, наверное, только DDS.

Форматы текстур также разнообразны - это RGBA8888, RGBA4444, RGB888, RGB565. Это не полный список форматов, их там гораздо больше, просто привожу самые популярные.

Также присутствует опция создания автоматического уменьшения размеров текстур, например для iPad версии, из версии для iPad Retina.

Размещение спрайтов

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

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

Есть также возможность удалять со спрайтов избыточную 100% альфу, это помогает экономить место в атласе.

Стоит отметить возможность определения одинаковых спрайтов, вместо дублирования, TexturePacker вставит ссылки на уже имеющиеся спрайты.

Командная строка

Имеется возможность паковать спрайты в атласы из командной строки. Обязательно постараемся автоматизировать часть asset pipeline с помощью этого в наших следующих проектах :) Список аргументов в консольном режиме позволяет задавать все те же настройки, что и и при использовании приложения с GUI.

Платформы

TexturePacker является кроссплатформенным приложением, который имеет одинаковый функционал на Windows, MacOS, Ubuntu linux.

Хотелось бы добавить, что TexturePacker регулярно обновляется, не только исправляя недочеты но и расширяя функционал. Я смотрел TexturePacker год назад и могу сказать, что он очень сильно вырос в плане функциональности.

Комментариев нет:

Отправить комментарий