Claude Opus 5.5
Интерактивная 3D-модель UI-элементов, плавно трансформирующихся друг в друга под управлением курсора
Промпт
ПРОМПТ: <inputs> Запроси у меня: от 8 до 12 состояний UI, в которые должна превращаться форма (например, кнопка, загрузчик, проигрыватель, слайдер, переключатель, вкладки, график, палитра команд, всплывающее уведомление), чистый чёрно-белый вариант или один акцентный цвет, а также песню без роялти примерно на 120 BPM (например, Mixkit, бесплатную для коммерческого использования). </inputs> <direction> Движение UI уровня Dribbble. Одна форма, никаких монтажных склеек: каждое состояние — это один и тот же элемент, который меняет размер, радиус и цвет, а его содержимое сменяется с коротким размытием. Курсор управляет каждым изменением с помощью настоящих кликов и перетаскиваний. Светлый тёплый серый фон, чёрно-белые компоненты, один аккуратный UI-шрифт (Geist). Пружины повсюду, максимум — едва заметный перелёт. Камера приближает каждый элемент так, чтобы каждое состояние заполняло кадр. Последний кадр совпадает с первым, поэтому ролик зацикливается. Запрещено: пружинящее easing, всплески частиц, свечение, градиенты на элементах UI, несовпадающая толщина обводки иконок, мёртвое время — всё, что выглядит как шаблон. </direction> <structure> 120 BPM, 7 тактов, что-то происходит на каждой доле. Кнопка → загрузчик → галочка → dynamic island → музыкальный проигрыватель с превращением кнопки воспроизведения в кнопку паузы → перетащить ползунок прогресса → он превращается в слайдер громкости, который растягивается при перетаскивании за максимальное значение → переключатель включается в такт → бегунок превращается в жидкий индикатор вкладок → вкладки раскрываются в график, который рисует себя сам, с подсказкой при наведении → сворачивается в ⌘K → вводить текст для фильтрации → Enter → всплывающее уведомление → обратно в кнопку. </structure> <build> 1. Один HTML-файл, квадратный формат 1440x1440. Каждый стиль вычисляется из времени внутри seek(t): никаких CSS-переходов, таймеров и состояния, сохраняемого между кадрами. 2. Пружины — это замкнутые по формуле переходные функции. Значение, много раз меняющее цель, представляет собой сумму одной пружины на каждое изменение, поэтому остаётся чистой функцией времени. 3. Два края индикатора вкладок движутся на разных пружинах, поэтому передний край растягивается, опережая задний. Такой же приём используется для бегунка переключателя. 4. Перетаскивание — это прямое управление: пока курсор удерживается, значение вычисляется по его положению. После отпускания оно возвращается пружиной из текущего положения. 5. Проанализируй песню с помощью numpy, чтобы определить сетку долей, и начни с сильной доли. Размести каждый звук UI по измеренному пиковому значению. 6. Выполни рендеринг с помощью Playwright: 4 субкадра на каждый кадр, объединённых через ffmpeg tmix для создания размытия движения при 60fps. 7. Перед полным рендерингом отрендери по одному кадру на каждую долю. Исправь всё, что не попадает в сетку, выглядит тесным или плохо читается. </build> <gotchas> Никогда не добавляй will-change к объектам, масштабируемым камерой, или к тексту, который из-за этого становится размытым. Для текста, сменяющегося внутри контейнера с морфингом, нужны отдельные тайминги появления и исчезновения, иначе он накладывается. Сделай последний кадр полностью идентичным первому, включая положение и скорость курсора, иначе цикл будет дёргаться. </gotchas> <start> Запроси у меня входные данные, затем покажи список состояний на сетке долей, прежде чем писать какой-либо код. </start>
<inputs> Ask me for: 8 to 12 UI states I want the shape to become (e.g. button, loader, player, slider, toggle, tabs, chart, command palette, toast), pure black and white or one accent color, and a royalty-free song around 120 BPM (e.g. Mixkit, free for commercial use). </inputs> <direction> Dribbble-level UI motion. One shape, never cut: every state is the same element morphing its size, radius and color while its content swaps with a short blur. A cursor drives every change with real clicks and drags. Light warm-gray canvas, black and white components, one clean UI font (Geist). Springs everywhere, a tiny overshoot at most. The camera zooms so each state fills the frame. The last frame is the first frame, so it loops. Banned: bouncy easing, particle bursts, glows, gradients on UI chrome, mismatched icon strokes, dead time, anything that looks like a template. </direction> <structure> 120 BPM, 7 bars, something happens on every beat. Button → loader → check → dynamic island → music player with a play/pause morph → scrub the progress bar → it becomes a volume slider that stretches when dragged past max → a toggle flips on the beat → the knob becomes a liquid tab indicator → the tabs open into a chart that draws itself, with a tooltip on hover → it collapses into ⌘K → type to filter → enter → toast → back to the button. </structure> <build> 1. One HTML file, square 1440x1440. Every style is computed from time inside seek(t): no CSS transitions, no timers, no state carried between frames. 2. Springs are closed-form step responses. A value that changes target many times is the sum of one spring per change, so it stays a pure function of time. 3. The tab indicator's two edges ride different springs, so the leading edge stretches ahead of the trailing one. Same trick for the toggle knob. 4. Drags are direct manipulation: while the cursor is held, the value is computed from its position. On release it springs back from wherever it was. 5. Analyze the song with numpy for the beat grid and start on a downbeat. Place every UI sound by its measured peak. 6. Render with Playwright: 4 subframes per frame, blended with ffmpeg tmix for motion blur at 60fps. 7. Render one frame per beat before the full render. Fix anything off the grid, cramped or hard to read. </build> <gotchas> Never put will-change on anything the camera scales or the text renders blurry. Text that swaps inside a morphing container needs its own enter and exit timing or it overlaps. Make the last frame identical to the first, cursor position and speed included, or the loop stutters. </gotchas> <start> Ask me for the inputs, then show me the state list on the beat grid before you write any code. </start>
Права на промпт принадлежат автору @twoclipping. За коммерческое использование — продвижение нейросетей, агрегаторов, Telegram-ботов — отвечаете вы: mozgi.io ответственности не несёт. Подробнее →











