Человеческий глаз создает ощущение движения через визуальный остаток динамической графики, поэтому возникает динамический эффект.
Динамическая графика
Будь то в AE & Animate при создании графики, Отрегулируйте функцию изменения настройки ключевого кадра; Или используйте PS для рисования и экспорта GIF кадр за кадром, По сути, все они создают связную последовательность изображений. Графика движения также включена.
SVGA должен снизить для нас первоначальную стоимость анимационной последовательности. SVGA описывает основные элементы (растровые и векторные), из которых состоит анимация. И экспортируйте его производительность на временную шкалу (альфа и матрица) кадр за кадром.
Логика воспроизведения очень проста, достаточно объединить производительность каждого кадра анимации и визуализировать элементы анимации один за другим. При восстановлении динамического эффекта элементы анимации максимально повторно используются, тем самым снижая стоимость динамического эффекта со всех сторон.
О чем именно мы говорим, когда говорим о SVGA?
"它是个转换插件,把设计师做的动画导出来,放到设备上去播放。"
"它是一个客户端播放器,一种播放动效的方式,酱紫我们就不用手撸动画,可以早点下班。"
"它是一套协议,降低设计师与技术在动效方面的沟通成本"
"它是一份解决方案,本质上解决的是图形效果与实现成本之间的矛盾问题。"
Как клиентский игрок, мы можем обсуждать SVGA с двух точек зрения:
Animation(Player)
Content(Frames)
Tickers(FPS)
.svga(Parser)
序列化
反序列化
SVGA
Animation(Player)
С точки зрения игрока это SVGA(оптимизировано)анимация кадра последовательности, Протолкните кадр последовательности через тикер с заданным интервалом.
В это время некоторые студенты хотят спросить,
"所以 SVGA 与我们常见的序列帧动画有什么区别呢?"
На него можно ответить из двух измерений:
Детализация элементов анимации (Оптимизировать 1): Частицы SVGA очень мелкие и управляемые. Кадры последовательности имеют только один слой.
Содержимое анимированного элемента (Оптимизация 2): SVGA может быть использованвектора такжебитовая картаОбъединено для балансировки накладных расходов ЦП и ГП. Кадры последовательности могут использовать только растровые изображения.
Хотя кадры векторной последовательности также существуют, они менее распространены и здесь не обсуждаются. Та же анимация, форма организации контента следующая:
СВГА:
Последовательность кадров:
Лотти:
То же самое и при игре: Разделяйте анимацию на отдельные элементы, рендерите анимацию каждого элемента покадрово, и не нужно повторно рендерить, если он не движется.
(Элементы пользовательских пользователей, как то же самое)
.svga(Parser)
Компьютеры Designer часто экспортируют множество файлов .svga, которые невозможно просмотреть напрямую.
"这些个不可预览的文件,里面装的到底是什么东西呢?"
Я думал об этом два года назад.
Исходя из принципа "все можно распаковать",
右键-打开方式-The Unarchiver
(╯‵□′)╯︵┻━┻z Какое к черту решение, скрипт так не написан! Это потому, что распакованная .svga 2x, Если вам интересно, вы можете использовать файл 1.x, чтобы разархивировать его.
Ставим слона в холодильник через шаги 1, 2, 3. Он положен в холодильникСериализация, Из холодильникадесериализовать, И шаги 1, 2 и 3 - это то, о чем мы договорились.протокол, Если этот протокол не соблюдается, то из холодильника достают не слона, а Может придумать что-нибудь странное.
Анимация свойства
Свойства включают масштаб, вращение, смещение, прозрачность, цвет и т. д. API, связанные с анимацией свойств, совместимы между AE и клиентом. После экспорта его можно напрямую назначить и использовать.
векторная поддержка
Векторы являются одним из фундаментальных элементов, изучаемых в линейной алгебре.
Если вы думаете о векторе как об отношении между точкой и началом координат, Тогда задачу исследования линейной алгебры можно понимать так: «Графические свойства ряда связанных точек в двумерной (x y) или трехмерной (x y z) системе координат». Связь между рядом точек является функцией.
Полиномиальное уравнение Бесселя является одной из таких функций. Его графическое отношение, то есть диаграмма отношения ряда точек, таково:
Уравнение кривой Безье соответствует кривой Безье, Кривая Безье выглядит следующим образом:
Таким образом, все строки в компьютере,
Оба могут быть использованы:
var curve = new Bezier(
P0.x, P0.y,
P1.x, P1.y,
P2.x, P2.y,
P3.x, P3.y,
);
Создано, все безье! ┬─┬ ノ( ' - 'ノ) {настроить хорошо настроить)
И линии, которые мы обычно видим в компьютере, Или кривая, нарисованная с помощью [Pen Tool] в инструменте дизайнера:
Это тоже принцип.
Вот некоторые осторожные студенты, чтобы спросить: Как упоминалось выше, кривая имеет только четыре точки. Но каждый раз, когда мы перетаскиваем линию в AE, Будет начало и конец, Эти две точки имеют две контрольные точки соответственно, В Цзянцзы шесть часов, что случилось?
При перетаскивании кривой вы можете нажать клавишу Alt, чтобы разделить две контрольные точки, Тогда вы обнаружите, что единственное, что действительно влияет на текущую кривую, это:
Контрольная точка вторая исходной точки;
Контрольная точка одна из конечных точек;
То есть, по сути, в AE он также соответствует правилам, о которых мы говорили выше. Какие два дополнительных очка? они соответственно:
Контрольная точка 2 конечной точки последней кривой;
Контрольная точка Одна из отправной точки следующей кривой;
Это не влияет на текущую кривую.
Путь в SVG
Если вы откроете файл SVG (XML) в текстовом редакторе, Вы найдете абзац в SVG:
Отсутствующий здесь starPoint на самом деле является последним endPoint или movePoint, ** Так что трех баллов в C достаточно, Их порядок таков: endPoint, controlPoint1, controlPoint2; Приведенные выше два предложения являются основной причиной моей недели на работе.
Путь в SVGA
Эта спецификация пути также используется в SVGA, Однако в исходном коде конвертера для SVGA обнаружено, что Порядок C(Curve): controlPoint1, controlPoint2, endPoint; И точка, заданная M(MoveTo): controlPoint1;
Игрок тоже ошибается и сам меняет порядок разбора C(Curve):
В это время M(MoveTo) использует точку: controlPoint1, Экспортированная анимация выглядит так:
Пожалуйста, используйте определитель, чтобы найти теневую область психологии Чжан Чжаня... Исправление, конечно же, заключается в том, чтобы исправить путь в SVGA обратно...
TrimPath в SVGA
TrimPath — это стиль векторной анимации.
TrimPath на самом деле должен называться Trim Bezier, Все линии в SVGA — это кривые Безье. Он имеет три связанных свойства:
trimPathStart,
trimPathEnd,
trimPathOffset,
Они указывают, где начинается Путь, где он заканчивается и как далеко от начальной точки. Что касается того, как его использовать, это зависит от нашего воображения.
В слое формы AE вы можете добавить:
Его можно добавить в свойство Shape или добавить за пределы Shape, чтобы воздействовать на несколько Shapes:
Динамический дисплей:
Анимацию можно разделить на четыре части, Масштабная анимация внутри круговой заливки Внешние три контура обводки окружности и добавление анимации обрезки и ширины.
пройти черезSVGA PreviewМы можем ясно понять его структуру:
Затем мы передаем PathMeasure Android (веб слишком сложен для отладки) для имитации SVGA, чтобы восстановить эффект обрезки этой анимации.
Здесь SVGA используется в бизнесе Amway для восстановления этих эффектов одним щелчком мыши. (Возьми горшок полностью на продукт и дизайн, мы можем уйти с работы пораньше~😯)
SVGAnimation Demo
TrimPathActivity
PathUtil
Подробнее об этом позже.
trimmedPath в SVGA AE Converter
···
маска маска
Маски и маски по сути являются альфа-каналами для направленной обработки нарисованных слоев.
Задайте свойства маски через панель в AE:
Преобразователь получает параметры через, Настройте сценарии воспроизведения на iOS и Android & Web.
Решение по существу состоит в том, чтобы создать слой маски через полученные параметры, Замаскируйте несколько слоев содержимого с помощью маскирующего слоя.
Вы также можете установить свойство маски:
управлять альфа-каналом слоя, Для достижения эффекта отображения только части узора.
Сравнение производительности
«Сначала установила небольшую цель, которая может быть достигнута, например, анимация, достигающая 60 кадров в секунду, анимационный анализ завершен в течение 100 мс».
Накладные расходы на оборудование — это очень общее понятие.Если накладные расходы слишком велики, оборудование будет зависать, пропадать кадры, выделяться тепло, энергопотребление, виновник и корень всех зол.
С точки зрения развития, Размер файла, трудоемкий синтаксический анализ, использование памяти, ЦП и ГП — все параметры, которые могут измерить стоимость. Ниже приведен анализ производительности 1.x, 2.x, кадров последовательности и GIF по этим измерениям.
SVGA 1.x
1.x — исходная версия формата SVGA, Фиг.8 Элемент ресурсов фактически записывается вместе с элементами каждого кадра JSON Performance Performance Data, сжаты по-баллы в ZIP.
SVGA 2.x
SVGA 2.x преобразует файл описания анимации в формате JSON в двоичный файл Protobuf, который значительно улучшает скорость декодирования файла.
Кадры последовательности и GIF-файлы
Кадр последовательности и GIF — это полнокадровые растровые изображения, характеризующиеся тем, что размер файла увеличивается со степенью восстановления движения, и при воспроизведении будет наблюдаться длительное использование памяти.
Сравнение 1.x и 2.x
резюме:
Протестируйте в относительно чистой демо-среде;
Тестовый телефон — iPhone 7P 12.3.1 Xiaomi 6 MIUI 9.6;