Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.12.2014, 17:12
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 1  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
По умолчанию Оптимизация (растеризация) векторной программной анимации для мобильных устройств

И так рассказываю по порядку. Есть схемы навигации торгового центра, выполненные в векторе, в которых с помощью A* находится путь и затем проигрывается анимация отрисовки пути от точки до точки. Каждая схема (один этаж) реализована в виде отдельной swf (сейчас они проигрываются с терминалов). Передо мной встала задача написания мобильного приложения на AIR для навигации по этому торговому центру, в котором указанные схемы можно будет скейлить и вращать + опять же будет работать поиск пути и анимация. Первые же тесты показали, что при вращении и скейлинге векторной схемы (я тестировал на Sumsung Galaxy S III) происходит 1 – 2х секундное падение fps (это четко видимое торможение, которое неприемлемо). Но самое страшное происходит при проигрывании анимации, она вообще тормозит просто жутко. Понятно, что от вектора нужно уходить, и хотелось бы при этом сделать это малой кровью т.е. минимально переделывая существующие флешки, и чтобы это нормально выглядело на различных разрешениях :-).

Какие я вижу стратегии:

1)Тупо перегнать содержимое всех флешек в растр под 3 – 4 скейлфактора. Определять разрешение на устройстве и грузить нужную флешку с растром. Пока считаю этот вариант наиболее быстрым и реалистичным.
2) Грузить схему, определять разрешение устройства, и уже на лету в памяти растеризовать содержимое флешки. Минус – долгое время запуска, по моим прикидкам это может занять 5 – 10 секунд, поправьте, если я не прав.
3)Возможно еще есть какие то хитрожопые стратегии, например, растеризовать схему, а сверху отдельным слоем проигрывать анимацию, созданную программно, но это, видимо, потребует серьезную переделку флешек.

В общем буду рад любому совету на этот счет.

Ну и самое главное – также интересуют программные способы автоматического перегона всего содержимого флешки в растр нужного разрешения (т.к. в моих флешках очень много объектов не хочется делать это вручную) Если есть готовые решения тоже буду им рад.

Заранее спасибо!

Старый 09.12.2014, 17:20
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 2  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Думаю, gaf в вашем случае будет почти идеальным решением.
Можно хранить дополнительно векторный контент для всех нужных расчётов.

Старый 09.12.2014, 17:56
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 3  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Спасибо за ссылку изучаю. Но сразу смутила цена в $995, зная мое начальство, оно скорее всего скажет, за такие деньги делай ручками))

Добавлено через 17 минут
И да, какая то странная у них документация, допустим я конвертнул флешку в gaf формат, и что дальше делать, как с этим форматом во флеше работать? Ничего на их сайте не нашел на эту тему.

Добавлено через 32 минуты
А нашел StarlingGafPlayer

Добавлено через 50 минут
И одну из их демок (слот машину) мне скомпилировать так и не удалось)) Выдает ошибки на
Цитата:
col: 67 Error: Access of possibly undefined property BGR_PACKED through a reference with static type Class.
public static const BGR_PACKED: String = Context3DTextureFormat.BGR_PACKED;
В классе Context3DTextureFormat такой константы действительно нет, откуда они её взяли?

Старый 09.12.2014, 23:23
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
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.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 09.12.2014, 23:47
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 5  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Цитата:
нужно уходить с AIR
А куда? Если в сторону unity, то Вы можете гарантировать
его востребованность в ближайшие лет десять?

Вы из круга избранных, не слышно у Вас там о планах
гугла в направлении канваса или может быть "чего-то на шарпе"?

Старый 10.12.2014, 16:41
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 6  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Да действительно, для этого примера нужен AIR 15. Попробовал запустить на том же устройстве проект с 3D навигацией на flare3D - в целом все нормально, fps не падает ниже 40. Получается 3D на мобилах идет лучше чем вектор))

Старый 10.12.2014, 21:55
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 7  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от Gerbert Посмотреть сообщение
А куда? Если в сторону unity, то Вы можете гарантировать
его востребованность в ближайшие лет десять?

Вы из круга избранных, не слышно у Вас там о планах
гугла в направлении канваса или может быть "чего-то на шарпе"?
За Unity 3D ничего на скажу, но то, что Unity отказались от Flash-target, я точно знаю. Я точно знаю о том, что есть нарекания на продолжительность работы от батареи при эксплуатации даже простых AIR-приложений на iOS, а также практически знаю как AIR работает с памятью, да что там, — я знаю как выглядит инкремент переменной на AIR и Unity, скомпиленных под iOS. И еще я знаю, что Adobe разогнал отдел разработки рантайма AIR и FlashPlayer, оставив необходимый минимум на "разработку 3D фичей". И критикал баги у них не решаются месяцами.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 30.12.2014, 13:44
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 8  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Да, забыл написать как сделал. В итоге получился следующий воркфлоу:
1. Скейлю флешку, экспортирую все содержимое дисплей листа с помощью грейпфрукта. Он выдает набор png файлов и XML в котором описаны имена экспортированных объектов и их zIndex, но не указывает координаты объектов на сцене. Поэтому пришлось дописать к нему немного кода, который дописывает в XML x и y координаты. По сути получилась флешка утилита, с помощью которой можно редактировать схемы (а их в будущем придется редактировать) стандартными флешовыми средствами (Flash Pro)и выгонять сцену в формат понятный старлингу.
2. Затем упаковываю все png TexturePacker в старлинговский атлас.
3. В самом приложении определяю разрешение устройства, загружаю нужный атлас, дергаю из него текстуры (c теми же именами что и мувики в оригинальной версии) и размещаю их по координатам и индексу глубины указанном в XML, получившемся в п. 1.
Таким образом я полностью перенес дисплей лист и всю его структуру из традиционного флеша в старлинг.
P.S. Почему воспользовался именно грейпфруктом - при использовании других экспортеров либо не переносились фильтры наложенные на мувики, либо непонятным мне причинам (а разбираться я не стал) у некоторых мувиков при переносе слетали координаты (например, так у меня получилось с FlashMovieClipConverter)

Старый 30.12.2014, 13:48
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
А с authoring mode масками как дела обстоят?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 30.12.2014, 18:35
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 10  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
У меня в проекте их не было, ничего не могу сказать. Хотя вроде встречал где то упоминание, что грейпфрукт их тоже переносит, но не уверен.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:51.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.