Моушн-дизайн
Дизайн морфинг-анимации интерфейса
14-секундный ролик, целиком созданный кодом: одна форма превращается в плеер, вкладки и командную палитру, а каждое изменение вызывает курсор в темпе 120 BPM.
Для чего подходит
- Дизайн промо-роликов продуктаКороткие циклы, показывающие несколько состояний интерфейса без склеек между экранами.
- Шоурилы микровзаимодействийПоследовательности, где переключатели, слайдеры, вкладки и палитры показаны как одна связная история.
- Анимация интерфейса под музыкуРаботы, в которых действия курсора попадают в фиксированную сетку битов.
Особенности анимации
- Одна форма без склеекКаждое состояние — деформация того же контейнера, а не смена сцены.
- Изменения вызывает курсорКаждый переход начинается с видимого действия указателя.
- Замкнутый циклПоследний кадр совпадает с первым, поэтому воспроизведение повторяется без шва.
Превью морфинг-анимации интерфейса
Как одна форма проводит через весь ролик
Ролик длится 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, пружин или ключевых кадров, а состояние между кадрами не переносится. Поэтому перемотка назад воспроизводит идентичные кадры.
Это делает экспорт предсказуемым, но требует от автора больше работы. Взаимодействия, которые с обработчиками событий были бы тривиальны, например наведение или набор текста, нужно описывать как ключевые кадры по времени.
Держите одни часы
Главный таймлайн GSAP — единственные часы. Слои читают его текущее время, а не запускают собственные таймеры.
Суммируйте пружины для каждого изменения
Заметки по адаптации требуют суммировать пружины для каждого изменения, чтобы перекрывающиеся движения смешивались, а не перезапускались.
Пусть курсор вызывает всё
Перед каждой сменой состояния нужно действие указателя. Без этого правила морфинг выглядит украшением, а не взаимодействием.
Источник и границы
Это официальный ремейк и адаптация кодом от OpenDesign моушн-работы, изначально опубликованной @twoclipping в X. Он воссоздан в коде по опубликованной работе, а 14-секундный саундтрек — оригинальная музыка, а не аудио из источника. Упоминание автора служит фактической ссылкой и не подразумевает одобрения со стороны оригинального автора.
Это отрендеренное моушн-исследование, а не готовый интерфейсный продукт. Плеер, график и палитра внутри ролика не реагируют на ввод. Шаблон взят из предлагаемого видеопроцесса OpenDesign; доступность зависит от установленной версии.
Адаптация морфинга под ваш продукт
Заметки советуют заменить состояния в определении SHAPE и их содержимое, сохранив три правила: одна форма без склеек, пружины суммируются для каждого изменения, и за каждым изменением стоит курсор. Начните со списка пяти состояний продукта, которые важнее всего показать, затем расположите их от самого маленького контейнера к самому большому.
Если нужен цикл, сделайте первое и последнее состояния одинаковыми. Если состояния сильно различаются по размеру, ожидайте, что промежуточные кадры будут выглядеть растянутыми, и соответственно замедлите темп.
Выбирайте меньше, но сильнее
В ролике около десяти состояний за 14 секунд. Промо продукта с четырьмя состояниями даёт каждому больше времени на экране.
Меняйте тему в одном месте
Текст, палитра и тайминги вынесены в константы в начале референса, поэтому изменение тёплого серого холста или чёрных компонентов — небольшая правка.
Избегайте тяжёлых эффектов холста
Заметки предупреждают, что крупные градиенты и попиксельный шум делают каждый захваченный кадр дорогим, что замедляет экспорт в MP4.
Как создать дизайн морфинг-анимации интерфейса в OpenDesign
Определите форму и её состояния
Перечислите состояния, через которые должен пройти ваш единый контейнер, от компактной кнопки до самой большой формы. Решите, какое действие указателя запускает каждое изменение, и зафиксируйте темп до начала рисования.
Рекомендуемый промптСоздай 14-секундный зацикленный моушн-ролик интерфейса на теплом светло-сером холсте 1920x1080. Используй одну черно-белую скругленную форму, которая никогда не прерывается монтажной склейкой. В темпе 120 BPM превращай её из кнопки Generate в лоадер, галочку, музыкальный плеер с полосой перемотки, пилюлю вкладок Day / Week / Month и командную палитру, в которой печатается короткое слово. Каждое изменение должен вызывать видимый курсор. Сделай последний кадр совпадающим с первым, чтобы ролик зацикливался. Используй только примерный текст, не добавляй реальные данные и рабочие элементы управления.
Управляйте всем через время
Попросите вычислять каждое видимое значение по времени таймлайна, чтобы при перемотке назад кадры получались идентичными. Храните текст, палитру и тайминги как константы, которые можно править в одном месте.
Проверьте звук, цикл и темп
Убедитесь, что последний кадр равен первому, что действия курсора попадают в биты и что насыщенные состояния не проносятся слишком быстро. Используйте только аудио, которое вам разрешено использовать, или оставьте ролик без звука.
Экспортируйте дизайн и получите ссылку для публикации
Экспортируйте готовый дизайн, затем воспользуйтесь функцией Share в OpenDesign, чтобы получить ссылку. Откройте ссылку в отдельном окне браузера и убедитесь, что нужная версия со всеми ресурсами доступна, прежде чем отправлять её.



