Вторник, 12.12.2017, 09:19
Поиск
Никнэйм
Сертификат на никнейм Olelucoye, зарегистрирован на Тимофеев Константин Михайлович
Зарегистрируй свой никнейм
Обратная связь
olelucoye.tk@yandex.ru
Реклама AdSense
Реклама
Друзья сайта
  • Лига медицинского права
  • Гостиница "Зай"
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » Статьи » libGDX

    TexturePacker. Создаем атлас текстур.

    TexturePacker. Создаем атлас текстур.

    Что такое текстура? Это изображение особым образом сохраненное в памяти, для удобства работы с ней. Мы можем создавать текстуры в коде из обычных .png и .jpg картинок.

    Texture texture = new Texture("image.png");

    Кстати, все ресурсы (картинки, звуки) в libGDX проектах содержаться в единственном экземпляре в андроид-проекте в папке assets. В остальных проектах присутствуют только ссылки на эту папку. Это сделано для того, чтобы не плодить дубликаты файлов для каждого проекта.

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

    TextureAtlas atlas = new TextureAtlas(Gdx.files.internal(".../atlas.atlas"));
    TextureRegion texture_region1 = atlas.findRegion("image1");
    TextureRegion texture_region2 = atlas.findRegion("image2");

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

    Для создания атласов текстур в libGDX есть специальный инструмент TexturePacker. Он будет включен в проект при создании, если отметить расширение Tools, как мы сделали в предыдущей статье при создании заготовки для нашей игры. Его исходники можно посмотреть в папке Referenced Libraries desktop-проекта.

    Чтобы воспользоваться пакером нам нужно в desktop-проекте создать класс с точкой входа (т.е. с методом main)

    import com.badlogic.gdx.tools.texturepacker.TexturePacker;
    public class MyPacker {
        public static void main (String[] args) throws Exception {
            TexturePacker.process("inputFolder", "outputFolder", "packName");
        }
    }

     

    inputFolder - папка с исходными изображениями.

    outputFolder - папка. куда будет помещен готовый атлас

    packName - имя атласа

    Причем папка с исходными изображениями должна находиться в корне desktop-проекта. Выходная папка создастся там же. В данном случае пакер создает атлас с настройками по умолчанию. Если нужно задать какие-то дополнительные условия создания атласа, можно настроить их в коде с помощью TexturePacker.Settings, либо с помощью .json файла. Подробности настройки можно почитать на русскоязычной вики.

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

    Создадим атлас для нашей будущей игры. Она, кстати, будет улучшенной версией игры, которая приведена в качестве примера на www.libgdx.ru. В оригинале задача в игре - просто ловить ведром падающие капли. Игра не имеет условий окончания. Мы добавим игре немного смысла - по мере сбора капель в ведре будет расти цветок и когда он расцветет, игра закончится. Для этого я подготовил несколько изображений горшка с цветком в разных стадиях роста. Причем длины сторон изображений рекомендуется делать степенью двойки. Это связано с особенностями работы с изображениями OpenGL (ранние версии библиотеки вообще работали только с такими изображениями). У меня получились картинки размером 64х128 пикселей. Вот какой атлас сформировался у меня:

    Почему столько пустого пространства? Потому, что атлас формируется с учетом выше приведенного правила - длина сторон должна быть степенью двойки. Учитывая отступы между картинками и от краев ближайший подходящий размер атласа будет 512х256. Так что возникновение пустот в атласах есть неизбежное зло в борьбе за производительность.

    Какие еще ресурсы понадобятся для игры? Это изображение капли и две картинки с надписями о победе и проигрыше, а также mp3 с шумом дождя и звук падающей капли .wav. Все это можно скачать архивом здесь. В архиве полное содержание папки assets, а также папка inputImage с исходными изображениями для атласа, для тек кто захочет создать атлас сам.

    Создаем проект на движке libGDX
    Кастомизация EditText
    Кастомизация SeekBar'а
    9-patch изображения для Андроид
    Кастомный ползунок в виде дуги (аналог SeekBar)
    Программируем калькулятор на андроид. Урок 1.
    Андроид приложение - Списки
    Пластилиновый калькулятор для Андроид
    Пластилиновая игра
    Календарь-органайзер
    Анимация в Андроид
    Кастомизация элементов управления в Android
    Смартфон DEXP Ixion ML 5, обзор.
    Создание кастомного View-элемента интерфейса.
    Создание виджета - электронные часы с кастомным шрифтом

    Категория: libGDX | Добавил: Olelucoye (28.03.2015)
    Просмотров: 4098
    | Теги: текстура, атлас текстур, TexturePacker, libGDX | Рейтинг: 4.0/1
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Меню сайта
    Категории раздела
    Андроид разработка [23]
    libGDX [24]
    Мои андроид проекты [6]
    Excel [7]
    Железяки [5]
    Скрипты в блокноте [4]
    Разное [1]
    Форма входа
    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Яндекс Метрика
    Яндекс.Метрика