mozgi ← Все промпты
Claude Opus 5.5

Интерактивный 3D-арбуз из желе на WebGPU: его можно тянуть как мармелад и резать стальным ножом

Промпт

ПРОМПТ:
Создай "Melon Jelly Knife" — один автономный HTML-файл (melon-jelly-knife.html) с интерактивным физически симулируемым ломтиком арбуза из жевательного мармелада, который можно растягивать как желе И разрезать на части видимым стальным ножом с анимацией каждого разреза.

── Платформа ──
- Только WebGPU + WGSL, весь JS/CSS встроен, без внешних библиотек. ES-модуль в одном <script type="module">.
- Если отсутствует navigator.gpu / adapter, показывай элегантную редакционную карточку-заглушку ("This specimen needs WebGPU.") с конкретным объяснением — никогда не имитируй работу с помощью упрощённого рендерера. В этом состоянии отключай элементы управления.
- Восстанавливайся после потери устройства (пересобирай рендерер не более двух раз), выводи ошибки компиляции WGSL через getCompilationInfo.
- Фиксированный шаг симуляции 60 Гц с аккумулятором (не более 3 шагов за кадр), переключатель скорости ¼, пауза (Space), клавиши: N — толкнуть, R — сбросить, K — переключить нож, H — рука.

── Дизайн страницы (редакционное «исследование материала») ──
- Тёплый бумажный фон студии #E2DFDA; 3D-пол — бесконечная студийная циклорама, точно совпадающая по тону с этим цветом.
- В левом верхнем углу: небольшой капительный лейбл "MATERIAL STUDIES / NO. 009", огромный курсивный заголовок с засечками "Melon / Jelly." (вторая строка с отступом) и слоган из 3 строк с засечками.
- В правом верхнем углу статусная плашка "WEBGPU · LIVE / PAUSED / UNAVAILABLE".
- Правая панель (тонкие границы 1px, полупрозрачная бумага): Tool (сегментированные кнопки Hand | Knife с небольшими линейными иконками), образцы Variety (Crimson, Golden, Rosé — каждый меняет цвет мякоти, корки, семян, оттенка тени и акцента интерфейса), ползунки Firmness (trembling ↔ set) и Internal damping (lively ↔ syrupy), кнопки "Give it a nudge", Reset, Pause, флажки ¼ speed и Show mesh.
- В левом нижнем углу: подсказка об инструменте курсивным шрифтом с засечками, строка показателей в реальном времени (Mass ≈ g, Volume % of rest, Kinetic µJ, Pieces) и сноска "illustrative scale" (1 sim unit ≈ 3.5 cm, gummy 1.3 g/cm³).
- В правом нижнем углу сворачиваемый блок "Inside the experiment" с заметками, простыми словами объясняющими физику, рендеринг и способ разрезания.
- Пунктирная направляющая линия SVG во время рисования траектории ножа; небольшие всплывающие сообщения ("Missed — draw the blade across the slice.", "Too thin to cut there.", "That's plenty of pieces.").
- Камера помещает ломтик в свободную область между заголовком, панелью и показателями (сдвиг объектива), вращается при перетаскивании по пустому пространству, масштабируется колесом, двойной щелчок сбрасывает вид, мягко следует за ломтиком, если тот далеко отброшен.
- Адаптивность: при ширине менее ~860px компоновка выстраивается вертикально (заголовок, canvas ~58vh, подсказка, панель) с сенсорными областями размером не менее 44px; prefers-reduced-motion смягчает вступительную анимацию и демпфирование.

── Ломтик ──
- Толстый (T ≈ 0.58) ломтик арбуза в форме сектора с половиной угла ~32°, внутренним радиусом ~1.62, все углы в плоскости скруглены (ρ = 0.17), верхние и нижние грани с фаской (~0.13).
- Слои по глубине, начиная от корки: тёмно-зелёная кожура с нерегулярными более тёмными полосами, светлая кремово-зелёная прослойка, затем полупрозрачная красная мякоть; чёрные семечки-капли, расположенные дугами, и несколько крошечных пузырьков воздуха, взвешенных внутри.
- Рендеринг как полупрозрачной конфеты: преломление сцены позади в экранном пространстве, толщина в каждом пикселе по проходу глубины задних граней, поглощение по Beer–Lambert для каждого преломлённого семпла (ограничено толщиной сзади, чтобы вокруг семян не появлялись ореолы), размытое изображение с джиттером, рассеивание по типу подповерхностного и свечение в сторону ключевого источника света, блики Fresnel + GGX, мягкое студийное окружение (процедурные софтбоксы).
- Пол: мягкая тень PCSS-lite от ключевого источника света сзади-слева-сверху (тень окрашена в цвет мякоти), контактное AO по карте высот сверху вниз. MSAA ×4, HDR, тональное отображение PBR-Neutral, sRGB, дизеринг.

── Физика (ощущается как настоящий мармелад) ──
- Мягкое тело из тетраэдров (триангуляция Делоне для решётки с джиттером внутри формы), XPBD с небольшими шагами (~10 подшагов, по 1 итерации):
• сопоставление формы для каждого тетраэдра с совместным вращением (взвешенная массой ковариация, извлечение вращения кватернионом Мюллера, равномерная доля жёсткости) — без инверсий и паразитного крутящего момента;
• ограничения объёма для каждого тетраэдра (почти несжимаемые);
• демпфирование относительной скорости рёбер, управляемое ползунком damping; firmness преобразуется в податливость формы по логарифмической шкале;
• контакт с полом со статическим/кинетическим трением, лёгкое сопротивление воздуха, демпфирование при покое, ограничение скорости, защита от NaN с мягким сбросом.
- Инструмент Hand: захват в любой точке (лучевой выбор на поверхности со скиннингом, снисходительный запасной вариант в экранном пространстве), мягкое прикрепление участка (радиус ~0.4), следующего за указателем на плоскости, обращённой к камере, ограничение досягаемости, запрет продавливания в пол; колесо мыши или второй палец закручивает захваченный участок. Nudge = игривый импульс. Reset снова роняет весь ломтик.
- Сетка рендера получает скиннинг по тетраэдрам через барицентрическое встраивание; нормали пересчитываются каждый кадр.

── Разрезание на части ──
- Мир представляет собой список частей. Каждая часть — выпуклый многоугольник I в исходной плоскости ломтика; его контур расширен диском радиусом ρ (скруглённые углы), выдавлен на толщину ломтика с теми же фасками, слоями корки, семенами и пузырьками (семена/пузырьки сохраняются только там, где помещаются внутри).
- Разрез преобразует мировую плоскость в исходную систему координат каждой пересечённой части (наилучшая жёсткая система координат деформированной части), пересекает её со средней плоскостью → получается прямая; обрезает I до двух половин со смещением на ±ρ, чтобы оба пересобранных контура точно сходились в месте разреза; отбрасывает тонкие фрагменты ("too thin").
- Все части объединяются в ОДНУ симуляцию (идентификатор компонента для каждой частицы) и ОДНУ сетку рендера; каждая часть остаётся отдельным мягким телом, которое можно захватывать, растягивать и снова разрезать; части сталкиваются друг с другом (взаимодействия частица–частица, предварительно отсекаемые по AABB, сдвиг на несколько мм за проход, чтобы свежие поверхности плавно расходились, а не резко разлетались). Максимум 14 частей. Готовые сетки кэшируются для каждой части, поэтому Reset выполняется мгновенно.
- Перенос состояния при каждой пересборке: новые исходные частицы встраиваются в старые тетраэдры и получают интерполированные позиции и скорости.

── Видимый нож (главная звезда этой версии) ──
- Небольшая овощечистка в стиле nakiri, процедурно смоделированная: прямоугольное лезвие (длина ~1.72, высота ~0.63 — выше ломтика), прямая режущая кромка с лёгким подъёмом и скруглённым носиком спереди, тонкая заточенная фаска вдоль кромки, плоская заточка до обуха ~0.03, чёткие складки (дублированные вершины), полированная стальная больстерная часть, овальная рукоять из ореха, слегка расширяющаяся, с тремя стальными заклёпками и плоскими торцевыми крышками. Локальная система координат: +x направлена к острию, кромка находится на y=0.
- Материалы в шейдере сцены: шлифованная сталь с градиентом предметной съёмки (тёмная плита отражается внизу, яркая полоса сверху), полосы софтбоксов, более светлая атласная фаска, зеркальная больстерная часть; орех с прямой текстурой волокон, атласным масляным блеском и заклёпками. Жёстко позиционируется на CPU каждый кадр.
- Нож отрисовывается на проходе сцены (за поверхностью желе), поэтому часть, погружённая в желе, видна сквозь него с преломлением; он отбрасывает тень, но не учитывается в карте высот AO.
- Поведение:
• Наведение (инструмент Knife): нож парит примерно в 0.42 над ломтиком, а его кромка находится точно под курсором; лезвие обращено боком к камере и слегка наклонено к зрителю; при выборе инструмента опускается сверху; в режиме Hand скрыт.
• Во время рисования: выравнивается вдоль траектории, кромка проходит чуть выше желе, рукоять всегда слева (каноническое направление относительно правой стороны камеры).
• При отпускании: траектория, прочитанная на поверхности, над которой она была проведена, задаёт ВЕРТИКАЛЬНУЮ плоскость лезвия; разрез планируется, а новые части + новое мягкое тело предварительно строятся немедленно (поэтому последующая замена занимает всего ~10 мс и во время анимации не возникает рывка).
• Хореография (~1.1 с, учитывает ¼ скорости и паузу): выравнивание (0.16 с) → нажатие: кромка погружается примерно на ~0.13 ниже верха, а физический коллайдер вдавливает желе, формируя под ним округлую борозду — оно сминается, прежде чем поддаться (до 0.42 с) → прорыв: новый мир подменяется, лезвие продолжает движение к доске, а клиновидный коллайдер плавно разводит две новые поверхности (ограничение в несколько мм за подшаг, зазор увеличивается с глубиной) и удерживает края разреза внизу на глубине прорыва → короткая пауза → подъём обратно в положение наведения, освобождающий края, чтобы они пружинисто вернулись с дрожанием.
• Промахи показывают всплывающее сообщение, и нож остаётся на месте; новые траектории игнорируются, пока выполняется разрез; Reset отменяет его.

── Планка качества ──
- Плавные 60 fps на GPU ноутбука среднего класса; никаких выделений памяти в цикле кадра, кроме выполнения разрезов.
- Детерминированный тестовый хук в window (например, __melon с sim, camera, pick, planCut, startCut, advance(seconds), статистикой по каждой части), чтобы анимацию можно было пошагово воспроизводить и делать скриншоты.
- Отточенная, спокойная, музейная типографика; всё должно быть читаемо на телефоне и настольном компьютере.
Открыть в каталоге
Права на промпт принадлежат автору @vib3coded. За коммерческое использование — продвижение нейросетей, агрегаторов, Telegram-ботов — отвечаете вы: mozgi.io ответственности не несёт. Подробнее →
Модель
Claude Opus 5.5
Формат
16/9
Автор
@vib3coded
Оригинал
x.com ↗

Похожие промпты

Все промпты для Claude Opus 5.5

Скопировано