Моушн-дизайн

Дизайн морфинг-анимации интерфейса

14-секундный ролик, целиком созданный кодом: одна форма превращается в плеер, вкладки и командную палитру, а каждое изменение вызывает курсор в темпе 120 BPM.

OpenDesignАдаптация в коде и продакшн
Официальный
Дизайн морфинг-анимации интерфейса14s · Моушн-дизайн
Чёрная карточка музыкального плеера с градиентной обложкой альбома, полосой прогресса и символами воспроизведения.
Кадр из моушн-дизайна

Для чего подходит

  • Дизайн промо-роликов продуктаКороткие циклы, показывающие несколько состояний интерфейса без склеек между экранами.
  • Шоурилы микровзаимодействийПоследовательности, где переключатели, слайдеры, вкладки и палитры показаны как одна связная история.
  • Анимация интерфейса под музыкуРаботы, в которых действия курсора попадают в фиксированную сетку битов.

Особенности анимации

  • Одна форма без склеекКаждое состояние — деформация того же контейнера, а не смена сцены.
  • Изменения вызывает курсорКаждый переход начинается с видимого действия указателя.
  • Замкнутый циклПоследний кадр совпадает с первым, поэтому воспроизведение повторяется без шва.

Как одна форма проводит через весь ролик

Ролик длится 14 секунд при 120 BPM, что по исходным заметкам делится на 7 тактов. Одна форма начинает как кнопка Generate, затем становится лоадером, галочкой, dynamic island, музыкальным плеером, слайдером громкости, переключателем, индикатором вкладок, графиком, командной палитрой и тостом, после чего возвращается к кнопке.

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

Этапы карты битов и что показывает каждый
ЭтапВидимое изменениеСледствие для дизайна
Кнопка, лоадер, галочкаКнопка Generate превращается в состояние прогресса, затем в подтверждение.Запрос, ожидание и результат читаются как один объект, а не как три экрана.
Dynamic island и музыкальный плеерКомпактная пилюля разворачивается в тёмную карточку с обложкой, названием, полосой перемотки и кнопками управления.Рост от пилюли до карточки показывает, как один контейнер вмещает и состояние для беглого взгляда, и подробное состояние.
Слайдер, переключатель, вкладкиСлайдер громкости растягивается за максимум, затем следуют переключатель и пилюля вкладок Day / Week / Month.Мелкие элементы используют тот же скруглённый язык, поэтому изменение ощущается скорее в движении, чем в оформлении.
График, палитра, тостГрафик рисуется сам, в палитре печатается «frame», а тост замыкает цикл.Самые насыщенные состояния стоят ближе к концу, когда зритель уже усвоил логику формы.

Как читать кадры с плеером, вкладками и палитрой

Три захваченных кадра показывают, насколько по-разному может выглядеть одна и та же форма. В плеере чёрная скруглённая карточка несёт градиентную обложку, «motion study 02», полосу перемотки на 0:49 с остатком −2:09 и значки «назад», «играть» и «вперёд». В кадре с вкладками белая пилюля содержит Day, Week и Month, а за Day расположен чёрный индикатор.

В палитре набранное слово «frame» приводит к двум результатам: «Frame rate · 60fps» и «Every frame is code», первый из которых выделен.

Состояние музыкального плеера: прошедшее и оставшееся время находятся под полосой перемотки, курсор приближается к кнопкам управления.
Состояние музыкального плеера: прошедшее и оставшееся время находятся под полосой перемотки, курсор приближается к кнопкам управления.

Читаемые состояния воспроизведения

Метки прошедшего и оставшегося времени расположены под полосой прогресса. Это иллюстративное содержимое интерфейса внутри 14-секундного ролика, а не длительность видео showcase. При адаптации плеера под меньший холст сохраняйте обе метки чёткими.

Индикатор вкладки — движущийся объект

Чёрная пилюля Day находится внутри белой дорожки, пока курсор наведён на Month. Поскольку индикатор — отдельная форма, он может скользить и растягиваться между подписями, а не просто менять подсветку.

Текст палитры соответствует ролику

Результаты «Frame rate · 60fps» и «Every frame is code» говорят о самой работе. Используйте эту идею, но замените строки словарём вашего продукта.

Построение через время и его компромиссы

Исходные заметки описывают единую функцию render(t), которая рисует весь кадр по времени главного таймлайна. Каждое видимое значение — чистая функция от t с использованием easing, пружин или ключевых кадров, а состояние между кадрами не переносится. Поэтому перемотка назад воспроизводит идентичные кадры.

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

  1. Держите одни часы

    Главный таймлайн GSAP — единственные часы. Слои читают его текущее время, а не запускают собственные таймеры.

  2. Суммируйте пружины для каждого изменения

    Заметки по адаптации требуют суммировать пружины для каждого изменения, чтобы перекрывающиеся движения смешивались, а не перезапускались.

  3. Пусть курсор вызывает всё

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

Источник и границы

Это официальный ремейк и адаптация кодом от OpenDesign моушн-работы, изначально опубликованной @twoclipping в X. Он воссоздан в коде по опубликованной работе, а 14-секундный саундтрек — оригинальная музыка, а не аудио из источника. Упоминание автора служит фактической ссылкой и не подразумевает одобрения со стороны оригинального автора.

Это отрендеренное моушн-исследование, а не готовый интерфейсный продукт. Плеер, график и палитра внутри ролика не реагируют на ввод. Шаблон взят из предлагаемого видеопроцесса OpenDesign; доступность зависит от установленной версии.

Адаптация морфинга под ваш продукт

Заметки советуют заменить состояния в определении SHAPE и их содержимое, сохранив три правила: одна форма без склеек, пружины суммируются для каждого изменения, и за каждым изменением стоит курсор. Начните со списка пяти состояний продукта, которые важнее всего показать, затем расположите их от самого маленького контейнера к самому большому.

Если нужен цикл, сделайте первое и последнее состояния одинаковыми. Если состояния сильно различаются по размеру, ожидайте, что промежуточные кадры будут выглядеть растянутыми, и соответственно замедлите темп.

Выбирайте меньше, но сильнее

В ролике около десяти состояний за 14 секунд. Промо продукта с четырьмя состояниями даёт каждому больше времени на экране.

Меняйте тему в одном месте

Текст, палитра и тайминги вынесены в константы в начале референса, поэтому изменение тёплого серого холста или чёрных компонентов — небольшая правка.

Избегайте тяжёлых эффектов холста

Заметки предупреждают, что крупные градиенты и попиксельный шум делают каждый захваченный кадр дорогим, что замедляет экспорт в MP4.

Как создать дизайн морфинг-анимации интерфейса в OpenDesign

  1. Скачайте и установите OpenDesign

    Скачайте десктопное приложение, установите его и завершите настройку. Создайте проект для своего дизайна.

    Скачать OpenDesign
  2. Определите форму и её состояния

    Перечислите состояния, через которые должен пройти ваш единый контейнер, от компактной кнопки до самой большой формы. Решите, какое действие указателя запускает каждое изменение, и зафиксируйте темп до начала рисования.

    Рекомендуемый промпт

    Создай 14-секундный зацикленный моушн-ролик интерфейса на теплом светло-сером холсте 1920x1080. Используй одну черно-белую скругленную форму, которая никогда не прерывается монтажной склейкой. В темпе 120 BPM превращай её из кнопки Generate в лоадер, галочку, музыкальный плеер с полосой перемотки, пилюлю вкладок Day / Week / Month и командную палитру, в которой печатается короткое слово. Каждое изменение должен вызывать видимый курсор. Сделай последний кадр совпадающим с первым, чтобы ролик зацикливался. Используй только примерный текст, не добавляй реальные данные и рабочие элементы управления.

  3. Управляйте всем через время

    Попросите вычислять каждое видимое значение по времени таймлайна, чтобы при перемотке назад кадры получались идентичными. Храните текст, палитру и тайминги как константы, которые можно править в одном месте.

  4. Проверьте звук, цикл и темп

    Убедитесь, что последний кадр равен первому, что действия курсора попадают в биты и что насыщенные состояния не проносятся слишком быстро. Используйте только аудио, которое вам разрешено использовать, или оставьте ролик без звука.

  5. Экспортируйте дизайн и получите ссылку для публикации

    Экспортируйте готовый дизайн, затем воспользуйтесь функцией Share в OpenDesign, чтобы получить ссылку. Откройте ссылку в отдельном окне браузера и убедитесь, что нужная версия со всеми ресурсами доступна, прежде чем отправлять её.