Создать живые обои

Создать живые обои

Здравствуйте, друзья!
Столкнулся со следующей проблемой:
Не так давно задумал сделать живые обои для Android в подарок жене.
Являясь 3D-художником и аниматором быстро реализовал графическую часть своей задумки — создал необходимого персонажа, сцену, анимировал, сделал покадровый рендеринг, смонтировал видео.
Далее приступил к поиску решений технической реализации. Здесь скажу, что далёк от программирования и Android SDK, поэтому мой выбор пал на адаптированные под простого юзера решения -конструкторы живых обоев.
Погуглив, самым простым решением выбрал ресурс Appgeyser от отечественных разрабов. К сожалению, работает он вполне ожидаемо…
Испробовав практически каждый созданный формат анимированной картинки, начиная от AVI и MPEG, заканчивая GIF и FLV не получил никакого результата, кроме ошибки сборки APK.
Общение с поддержкой дало нулевые плоды, они там вообще не читают сообщения, отвечая копипастом не глядя.
Далее я стал искать аналогичные ресурсы в сети, нашел достаточное количество платных и бесплатных площадок схожего характера, однако ни на одной из них не нашел необходимого мне каркаса под Live Wallpaper. Везде конструкторы блогов, чатов, галерей, браузеров, etc.
Нашел один якобы специализирующийся сайт по сборке конкретно LW, но он у меня не вызвал ни малейшего доверия ввиду абсолютно вырвиглазного интерфейса (я не шучу, это действительно финиш) и вездесущей буквально на каждом квадратном сантиметре страницы кнопки КУПИ (при этом больше никакой информации на сайте не было — ни описаний, ни демо, в общем вы поняли)
После всех неудачных попыток отыскать онлайновый конструктор обратился за помощью к софтварным решениям. Опять же, погуглив, обнаружил программу CLWC, финалка которой выходила 02.04.2017 — она бесплатная, красивая, дружелюбная к пользователю, но также не смогла победить. Я задумался, а не в руках ли дело, или может в голове, перепроверил всё еще раз, соблюдая все требования программы, перепробовал все комбинации форматов файлов, но, увы, APK-шник не билдился.
Продолжив гуглить, наткнулся на платную программу Live Wallpaper Creator 2.6, стоимостью в $70 и любезно предоставленным триалом. Ознакомившись с описанием и содержимым интерфейса понял для себя ее экспериментальность. Может быть меня подводит зрение, но детально рассмотрев все вкладки я не нашел даже элементарной функции редактирования разрешения канвы или подгонки по готовому изображению.
Понимаю, вы скажете: «Ну есть же специальные приложения для Дроида, которые позволяют ставить на фон любое видео! Чё ж0пY мучать?» Тут отвечу — это не мой вариант.
Моя цель — создание APK, которое человек может получить, установить, открыть, нажать «SET», и получить результат — живую обоину на своём телефоне. Я не сторонник полумер и уже тем более всяческого колхоза.
Серфинг XDA дал мне парочку очень сухих и скудных статей, направленных, разумеется, на девелоперов, а не на далёкого от кодинга юзера.
Проще говоря, мои поиски ни к чему не привели, хотя начал я их еще в ноябре месяце минувшего года.
За сим решил обратиться к людям сведущим.
ТЗ у меня следующее:
Мне не нужно никаких излишеств, я просто хочу поставить на фон анимированное полотно, запаковав его в APK.
Проще говоря у меня есть анимация заданного разрешения — ее формат я могу сделать любой: хоть GIF, хоть MP4, хоть PNG покадрово.
Эту анимацию надо запаковать в APK так, чтобы получились живые обои.
Есть ли бескровные методы решения моей задачи? Или без кодинга в Android SDK мне не обойтись?
Существует ли какой-то програмный шаблон\кодинговый каркас живых обоев, куда можно только подставлять готовую графику как переменную?
FAQ:
— Почему не заюзать 3D сцену для отрисовки в OpenGL?
— Я хочу использовать заранее готовые кадры потому что они рендерились на Path Tracing рендере со всеми необходимыми мне эффектрами освещения, размытия, пост-обработки и так далее, на что мобильный рендер попросту не способен. По картинке всё равно, что сравнивать фотореализм с «объемным текстом» из 98го ворда.
— Хорошо ли ты погуглил онлайн сервисы по сборке APK?
— Да, я потратил на это несколько ночей беспрерывных попыток. Основная масса онлайн-конструкторов не имеют необходимого для выполнения задачи функционала, там где он есть не проходит сборка конечного файла. На XDA также не нашёл инфу, способную к переварению мной.
— Неужели больше нет программных продуктов для данной задачи?
— Я гуглил по англоязычному сектору инета и нашёл только две тулзы. Может, конечно, дело во мне, если что-то найдете — поправьте, буду только рад.
— Почему задал вопрос в паблик?
— Я задаю вопросы сообществу только тогда, когда действительно не могу найти ответ самостоятельно.

Независимо от того, какие обои вы задумали сделать, существуют 2 различных подхода к реализации ваших задумок: SGL (в дальнейшем Canvas) и OpenGL. Когда я создавал свои первые обои у меня ушло несколько дней, чтобы попробовать различные средства и методы, поэтому эта статья сэкономит вам немного времени и быстро введет вас в курс дел.

Canvas

Если работает для вас — даже и не думайте об OpenGL
Что же такое Canvas? Это главный способ рисования GUI в андроид. Все формы, кнопочки и переключатели отрисовываются с помощью данной технологии. Нам дается Bitmap определенного размера (1024х600 например), на котором мы должны рисовать. Рисовать мы можем с использованием класса Canvas, который имеет богатое высокоуровневое АПИ для рисования. Скажем, нарисовать окружность заданной толщины определенного цвета с включенным сглаживанием не составляет никакой сложности. Есть даже поддержка шейдеров.
Но зачем тогда спрашивается OpenGL?
Недостатки Canvas:

  • низкая скорость. Вся работа с графикой производится без аппаратного ускорения (есть исключение). То есть ваш Bitmap вы будите заполнять усилиями центрального процессора, с чем он отлично справляется, если Bitmap умеренного размера. Скорость рисования пропорциональна площади и сильно замедляется при ее увеличении.
  • никакого 3d и наворотов. Канва не поддерживает 3d, свойства материалов, расстановку и настройку источников света и др. Если вам нужно, что-то из этого списка, то придется эмулировать это самим, что еще больше замедлит и без того низкую скорость отрисовки.

Преимужества Canvas:

  • простота интеграции в приложение. Рисование с помощью Canvas доступно вам сразу. Не надо создавать специальных поверхностей на которую будет выводится изображение созданное с помощью OpenGL. Не надо создавать поток, в котором работает OpenGL и синхронизировать его с вашим сервисом обоев (очень нетривиальная задача).
  • простое высокоуровневое АПИ. У канвы есть готовая функция рисования почти на все случаи жизни. Требуется 5 минут, чтобы прочитать документацию на класс и начать успешно использовать его.

К канве мы еще вернемся, теперь поговорим об альтернативном подходе.

OpenGL

Если Canvas не справляется, то больше ничего не остается.
OpenGL, DirectX — все мы слышали эти «крутые» слова. На Андроид у нас доступен OpenGL, но не простой (не такой как на десктопе), а урезанный. Причем у нас даже есть выбор: OpenGL ES 1.0/1.1 (работает везде) или OpenGL ES 2.0 (Android 2.2+). Что такое ES в названии? ES говорит нам о том, что это урезанная версия OpenGL, из которой убрали все лишнее, чтобы сделать АПИ как можно более компактнее и не тащить за собой на мобильные устройства вещи, которые легко эмулировать на центральном процессоре. То есть не все примеры из книжек по обычному OpenGL у вас заработают, но в принципе осталось все также.

Как было замечено версий у нас две: 1.0/1.1 и 2.0. Почитать об их отличиях можно в википедии (выбрать английский язык). Причем не все устройства одинаково поддерживают все расширения OpenGL ES, перед тем как использовать некоторые, нужно убедится, что это поддреживается (почитать можно ).
Недостатки OpenGL:

  • тяжело интегрировать в приложение. Чтобы выводить графику на экран устройства с помощью OpenGL необходимо создать специальную поверхность и специальный поток, который будет на этой поверхности рисовать. Необходимо также позаботиться о синхронизации системы и потока.
  • сложное низкоуровневое АПИ. У нас нет функции нарисовать квадрат, нет функции вывести картинку. Зато есть куча флагов и режимов рисования. Если механизмы задания вершин полигонов, матриц преобразования координат, функции загрузки текстур и средства управления наложением… В общем все очень запутано, если вы раньше никогда не имели дело с OpenGL. На освоение уйдет несколько дней.

Преимущества OpenGL:

  • высокая скорость работы. Никогда ваше приложение с использованием Canvas не будет работать быстрее и плавнее чем с использованием OpenGL (при наличии прямых рук конечно же).
  • поддержка 3d и наворотов. Трехмерные гонки или стрелялки? Все это возможно с использованием OpenGL. Создавайте источники света, управляйте камерой, создайте реалистичный эффект водной поверхности, используйте материалы и др.

И что же делать?

OpenGL. Делаем проще.

Когда тяжело в одиночку — просим помощи.
Понятно, что мы далеко не первые, кто решил использовать OpenGL и все мы уже играли в красивые игрушки, перерезали веревки и спасали сворованные яйца. Редко когда игра пишется абсолютно с нуля, обычно используются движки, которые берут на себя все скучные занятия и предлагают нам более простое АПИ для реализации наших фантазий. И оказываться, применительно к живым обоям, вариантов сделать проще у нас 2…

GLSurfaceView adapted for 3D Live Wallpapers

Так называется статья Роберта Грина, где он рассказывает о созданных им классах (основной из которых GLWallpaperService), которые выполняют всю работу по настройке за нас. Нам же остается писать код, который рисует. Скачав с github файлы проекта (проект живой и недавно обновлялся), вы получите готовые обои, которые правда ничего не делают красивого (просто заливают весь фон цветом), но они уже работают. Вам остается только написать требуемый код для рисования. Об интерфейсе взаимодействия с системой и базовой настройке OpenGL уже позаботились. У Роберта используется OpenGL 1.0/1.1, но перейти на 2.0 не представляет никакой сложности. Стоит так же заметить, что никаких дополнительных средств для рисования не предоставляется, рисовать придется все тем же OpenGL ES АПИ.

AndEngine

AndEngine это настоящий 2d движок для создания игр. Движок поддерживает несколько расширений, среди которых и physicsbox2d для создания физики. Сам движок довольно популярный с открытым кодом (Java). Все средства движка можно использовать для создания обоев. Есть много примеров, которые являются единственной «документацией» движка. Если надо что-то сделать — вспоминаем в каком примере мы это видели и смотрим как это там реализовано. Так же есть форум, где можно попросить помощи (форум активный, быстро помогают).
Теперь о плохом.
Версии у движка 2. Первая (GLES1) использует OpenGL ES 1.0/1.1, вторая (GLES2) — ES 2.0. АПИ в GLES2 намного продвинулось вперед, поэтому лучше использовать GLES2, но мы тогда теряем пользователей Андроида версии 2.1 (GLES2 на нем не работает, a живые обои замечательно работают). Мне удалось запустить обои используя обе версии AndEngine. Но в GLES1 сразу же столкнулся с невозможностью изменить настройки камеры при изменении ориентации экрана (приходится изменять масштаб сцены по одной из осей, в GLES2 АПИ это позволяет).
Движок создан для 2d игр, поэтому никакого АПИ для поддержки 3d не предоставляется (никто не запрещает использовать OpenGL напрямую). Так же отсутствуют казалось бы такие нужные функции как рисование окружности и даже треугольника. Движок больше ориентирован на спрайты. Добавить функцию рисования той же окружности, так чтобы она вписывалась в систему классов движка довольно тяжело — никакой документации нет. Поэтому придется перелопатить много кода и разбираться что к чему.

Заключение.

Начнем делать выводы с того, что я приведу пример: один кадр созданных мной обоев с помощью Canvas рисуется за 17мс на Kindle Fire (6 из которых «лочится» и «анлочится» канва). Это много, для заполнения фона текстурой 16х16px, вывода изображения 350х180px и отрисовки 4х окружностей различной толщины и радиуса. При использовании OpenGL это делается на порядок быстрее. О хорошем: код отрисовки я написал за час с небольшим, 17мс немного — анимация плавная.

В остатке.

Используйте канву, если вам не важно 3d, если ваша анимация не очень сложна и не требует больших вычислительных ресурсов.
Используйте AndEngine, если вы делаете 2d обои. Изучив примеры и почитав форум, вы быстро приступите к созданию вашей анимации, а дополнительные расширения движка позволят вам с легкостью внедрить в вашу анимацию эффектные решения (физика, система частиц и др.)
Используйте GLWallpaperService Роберта Грина. Если вы хорошо владеете OpenGL и делаете 3d обои, он позволит вам, не отвлекаясь на рутину, быстро приступись к кодированию вашей анимации.
Вы также можете адаптировать многие ваши любимые графические OpenGL движки для создания живых обоев. Используя код GLWallpaperService и/или AndEngine в качестве примера.

Как сделать живые обои на андроид самостоятельно?

Если вы задаетесь вопросом как сделать живые обои для андроид, то попали по адресу. Ниже по тексту мы рассмотрим несколько способов добиться подобного эффекта на android телефоне или планшете. Для этого нам не понадобится каких-либо специальных навыков программирования или использования дорогостоящих онлайн сервисов. Реализовать задуманное можно с помощью одного из нескольких бесплатных приложений:

  • Video Live Wallpaper
  • VideoWall — Video Wallpaper
  • Pixel 2 Live Wallpapers

Каждое из них имеет как свои сильные стороны, так и недостатки, но в целом, все они отвечают нашим требованиям по созданию динамической фоновой картинки для телефона. Примеры живых обоев, которые можно скачать бесплатно себе на телефон или планшет можно найти на сайте androfon.ru

Создание живых обоев в Video Live Wallpaper.

Получить анимированный gif файл, который в дальнейшем можно использовать в качестве фонового изображения экрана можно с помощью программы Video Live Wallpaper. Скачать ее можно прямо из Play Store. Установите VLV на телефон, затем, запустив его с экрана рабочего стола. На следующем этапе в рабочей области необходимо выбрать видеоряд, которой вы планируете использовать в качестве исходника. После подтверждения программа использует для создания анимации, занимает весь процесс не более пары секунд. В этом же меню есть возможность установить значение «произвольно”, чтобы живые обои менялись в случайном порядке. Вы также можете использовать заранее подготовленные видео, оптимизированные для экрана смартфона, из каталога приложения.

Живые обои с помощью программы VideoWall — Video Wallpaper.

Еще одно приложение, позволяющее создавать живые обои прямо на смартфоне. Программа также находится в каталоге Google. Функционал программы аналогичен Video Live Wallpaper, с той лишь разницей, что вы можете выбрать определенный фрагмент видео, который будет использоваться в качестве основы для создания обоев. Если Вы приобретете платную версию программы, то получите дополнительные возможности редактирования, как например изменение пропорций изображения или добавление фонового звука в вашу композицию.

Анимированные обои от Pixel 2 Live Wallpapers.

Компания Google разработала специальные образцы высококачественных живых обоев для линейки собственных телефонов Pixel. Эта продвинутая версия обоев реагирует на действия пользователя, изменения положения телефона в пространстве, время суток и т.д. К счастью, сегодня добавить эту красоту на экран своего смартфона может любой владелец с версией Android не ниже 6.0. Живые обои Pixel 2 добавят элемент интерактивности Вашему гаджету.
Скачать приложение можно на сайте APKMirror, после установки перейдите в раздел «Обои”. В самом низу экрана у вас появится новая вкладка – живые обои, где вы сможете просмотреть наборы анимаций и выбрать понравившийся вариант.

Что в итоге.

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

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

Именно это подвигло команду русских разработчиков создать небольшое приложение, которое способно превратить любые изображения на вашем Samsung Galaxy в уникальную и безупречную трехмерную панораму с различными эффектами. Достаточно выбрать любое понравившееся изображение, настроить дополнительные динамические эффекты и установить всё это в качестве изображения рабочего стола – это позволит вам насладиться шикарными трехмерными живыми обоями. Только представьте, как эффектно будет выглядеть, к примеру, ваше фото с отдыха!

Оживите свои фото либо просто понравившиеся картинки.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *