|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Оптимизация (растеризация) векторной программной анимации для мобильных устройств
И так рассказываю по порядку. Есть схемы навигации торгового центра, выполненные в векторе, в которых с помощью A* находится путь и затем проигрывается анимация отрисовки пути от точки до точки. Каждая схема (один этаж) реализована в виде отдельной swf (сейчас они проигрываются с терминалов). Передо мной встала задача написания мобильного приложения на AIR для навигации по этому торговому центру, в котором указанные схемы можно будет скейлить и вращать + опять же будет работать поиск пути и анимация. Первые же тесты показали, что при вращении и скейлинге векторной схемы (я тестировал на Sumsung Galaxy S III) происходит 1 – 2х секундное падение fps (это четко видимое торможение, которое неприемлемо). Но самое страшное происходит при проигрывании анимации, она вообще тормозит просто жутко. Понятно, что от вектора нужно уходить, и хотелось бы при этом сделать это малой кровью т.е. минимально переделывая существующие флешки, и чтобы это нормально выглядело на различных разрешениях :-).
Какие я вижу стратегии: 1)Тупо перегнать содержимое всех флешек в растр под 3 – 4 скейлфактора. Определять разрешение на устройстве и грузить нужную флешку с растром. Пока считаю этот вариант наиболее быстрым и реалистичным. 2) Грузить схему, определять разрешение устройства, и уже на лету в памяти растеризовать содержимое флешки. Минус – долгое время запуска, по моим прикидкам это может занять 5 – 10 секунд, поправьте, если я не прав. 3)Возможно еще есть какие то хитрожопые стратегии, например, растеризовать схему, а сверху отдельным слоем проигрывать анимацию, созданную программно, но это, видимо, потребует серьезную переделку флешек. В общем буду рад любому совету на этот счет. Ну и самое главное – также интересуют программные способы автоматического перегона всего содержимого флешки в растр нужного разрешения (т.к. в моих флешках очень много объектов не хочется делать это вручную) Если есть готовые решения тоже буду им рад. Заранее спасибо! |
|
|||||
Спасибо за ссылку изучаю. Но сразу смутила цена в $995, зная мое начальство, оно скорее всего скажет, за такие деньги делай ручками))
Добавлено через 17 минут И да, какая то странная у них документация, допустим я конвертнул флешку в gaf формат, и что дальше делать, как с этим форматом во флеше работать? Ничего на их сайте не нашел на эту тему. Добавлено через 32 минуты А нашел StarlingGafPlayer Добавлено через 50 минут И одну из их демок (слот машину) мне скомпилировать так и не удалось)) Выдает ошибки на Цитата:
|
|
|||||
.
|
BGR_PACKED Константа
public static const BGR_PACKED:String = "bgrPacked565" Язык версии: ActionScript 3.0 Версии среды выполнения: Flash Player 11.7, AIR 3.7 16 бит, формат bgr, упакованный в качестве 5:6:5 Вероятно, нужно компилировать с использованием playerglobal или airglobal не ниже этих версий. Вообще нужно уходить в сторону использования Stage3D и мешей. А по возможности, нужно уходить с AIR. |
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Цитата:
его востребованность в ближайшие лет десять? Вы из круга избранных, не слышно у Вас там о планах гугла в направлении канваса или может быть "чего-то на шарпе"? |
|
|||||
Да действительно, для этого примера нужен AIR 15. Попробовал запустить на том же устройстве проект с 3D навигацией на flare3D - в целом все нормально, fps не падает ниже 40. Получается 3D на мобилах идет лучше чем вектор))
|
|
|||||
.
|
За Unity 3D ничего на скажу, но то, что Unity отказались от Flash-target, я точно знаю. Я точно знаю о том, что есть нарекания на продолжительность работы от батареи при эксплуатации даже простых AIR-приложений на iOS, а также практически знаю как AIR работает с памятью, да что там, — я знаю как выглядит инкремент переменной на AIR и Unity, скомпиленных под iOS. И еще я знаю, что Adobe разогнал отдел разработки рантайма AIR и FlashPlayer, оставив необходимый минимум на "разработку 3D фичей". И критикал баги у них не решаются месяцами.
|
|
|||||
Да, забыл написать как сделал. В итоге получился следующий воркфлоу:
1. Скейлю флешку, экспортирую все содержимое дисплей листа с помощью грейпфрукта. Он выдает набор png файлов и XML в котором описаны имена экспортированных объектов и их zIndex, но не указывает координаты объектов на сцене. Поэтому пришлось дописать к нему немного кода, который дописывает в XML x и y координаты. По сути получилась флешка утилита, с помощью которой можно редактировать схемы (а их в будущем придется редактировать) стандартными флешовыми средствами (Flash Pro)и выгонять сцену в формат понятный старлингу. 2. Затем упаковываю все png TexturePacker в старлинговский атлас. 3. В самом приложении определяю разрешение устройства, загружаю нужный атлас, дергаю из него текстуры (c теми же именами что и мувики в оригинальной версии) и размещаю их по координатам и индексу глубины указанном в XML, получившемся в п. 1. Таким образом я полностью перенес дисплей лист и всю его структуру из традиционного флеша в старлинг. P.S. Почему воспользовался именно грейпфруктом - при использовании других экспортеров либо не переносились фильтры наложенные на мувики, либо непонятным мне причинам (а разбираться я не стал) у некоторых мувиков при переносе слетали координаты (например, так у меня получилось с FlashMovieClipConverter) |
Часовой пояс GMT +4, время: 22:18. |
|
« Предыдущая тема | Следующая тема » |
|
|