Dream Loop

Сборка впечатляющих 3D-сцен через цикл сверки визуальной точности с концепт-артом.

Метаданные навыка

ИсточникОпциональный (устанавливается по запросу) — hermes skills install official/creative/dream-loop
Путьoptional-skills/creative/dream-loop
Версия1.0.0
АвторAnshu Chimala (adapted by Nous Research)
ЛицензияMIT
Платформыlinux, macos
Теги3d, games, webgl, threejs, image-generation, visual-fidelity, creative
Связанные навыкиp5js, claude-design, manim-video

Справочник: полный SKILL.md

инфо

Ниже — полное определение навыка, которое Hermes загружает при его срабатывании. Именно это агент видит как инструкции, когда навык активен.

Навык Dream Loop

Автономный процесс для создания предельно впечатляющей графики, прежде всего 3D-сцен (игры, приложения, обычно three.js/WebGL в браузере): сгенерировать фотореалистичный концепт-арт идеального результата, собрать его, снять скриншот живой сборки, отдать судье, который оценивает скриншот против концепта по ступенчатой шкале, и итерировать до сходимости. Цель — максимально эффектная картинка при приемлемой частоте кадров для целевой платформы (например, 60 fps в браузере, 120 fps на современном мобильном устройстве).

Навык НЕ покрывает общую функциональность веб-приложений, дизайн 2D-интерфейсов и невизуальное качество — только цикл визуальной точности.

Когда использовать

  • Пользователь говорит «dream loop» или просит игру/сцену/приложение с очень высоким уровнем графической детализации.
  • Повторные проходы доводки существующего визуального продукта (см. «Повторные циклы» ниже).

Требования

  • Концепт-арт: инструмент image_generate. Если недоступен — остановитесь и попросите у пользователя концепт-изображение (или API генерации изображений для подключения).
  • Скриншоты: browser_exec — поднимите сборку локально (python3 -m http.server для статических сборок), затем new_tab(url), wait_for_load(), capture_screenshot().
  • Судейство: vision_analyze (обходной приём «одно изображение за вызов» — в разделе про судью).
  • Опционально: Blender для моделирования ассетов — см. навык blender-3d-automation. delegate_task для параллельной работы над ассетами и судейства в чистом контексте.

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

Краткая справка

ЭтапЧто происходитАртефакты (.dream-loop/)
1. ЦельПолучить/подтвердить описание от пользователязаметки
2. КонцептСгенерировать концепт-арт в виде «скриншота из движка»concept.png
3. БюджетЗафиксировать бюджет времени и время старта (если задан)заметки
4. СборкаРеализовать концепт максимально хорошо за один заходисходники, планы
5. СкриншотСнять живую сборку в разрешении концептаround-N.png
6. СамопроверкаСтрогий аудит бок о бок перед судействомжурнал оценки
7. СудьяСравнение по ступенчатой шкале, конкретные директивыжурнал вердиктов
8. Итерация/выходОтработать директивы или выйти по критериям—

Процедура

1. Целевой концепт

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

Рабочий контекст и файлы складывайте в .dream-loop/ и добавьте каталог в gitignore (если не сказано иначе).

2. Концепт-арт

Концепт — это реалистичная, качественная, впечатляющая цель: вид современной AAA-игры, работающей в реальном времени. Физически правдоподобные материалы (мокрый камень, шлифованный металл, ткань, стекло) с настоящей шероховатостью и деталями нормалей, верные пропорции, атмосфера (туман, дымка, дождь, пыль, объёмный свет), кинематографичное освещение с чётким ключевым источником и насыщенными тенями. Он НЕ должен быть стилизованным или «художественной интерпретацией» — он должен выглядеть как настоящий скриншот идеального результата.

Избегайте этих провалов при генерации через image_generate:

  • Перегруз: фотографический хаос, зерно плёнки, сотни уникальных мелких объектов, избыточная детализация каждой поверхности, читающаяся как шум. Real-time-сборка со смоделированными ассетами до такого не дотянется, да и выглядеть это хорошо не будет.
  • Упрощение: мультяшный или игрушечный вид, плоская заливка, бесформенные примитивы, пустые поверхности. Скучно; пользователя не впечатлит.

Цельтесь в середину: красивые поверхности и материалы, которые хорошо рендерятся шейдерами, сильная атмосфера и освещение, интересная палитра и сфокусированные «герои» кадра с мелкой детализацией, притягивающей взгляд (а не все элементы, дерущиеся за внимание).

В промпте просите скорее «скриншот из движка», чем «концепт-арт», и отговаривайте от шумного/зернистого вида. Проверьте изображение через vision_analyze; если оно попало в один из провалов, отправьте его обратно в image_generate в режиме редактирования и попросите исправить проблему. Сохраните как .dream-loop/concept.png.

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

3. Бюджет времени

Если пользователь задаёт бюджет времени, зафиксируйте время старта и сверяйтесь с часами между раундами. Не жертвуйте визуальной точностью ради бюджета — стремитесь к лучшему из возможного и не гоните работу к судье второпях. Распараллеливайте и распределяйте работу (например, delegate_task для независимых ассетов), чтобы уложиться в срок, но без срезания углов: лучше подойти к лимиту времени с осмысленным, красивым прогрессом, чем с чем-то в целом законченным, но уродливым.

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

4. Цикл сборки

Посмотрите на концепт-арт и реализуйте его за один заход, вложившись в первый проход по всем ступеням шкалы оценки: композиция, текстуры, освещение, детали. Лепите и моделируйте ассеты тщательно (или берите внешние, если разрешено); не довольствуйтесь базовыми процедурными элементами и плоскими поверхностями, если этого не требует художественный стиль. Промежуточные файлы и планы пишите в .dream-loop/.

  • Если установлен Blender и концепт подразумевает 3D-ассеты, предпочитайте моделирование в Blender (см. навык blender-3d-automation). Сложные ассеты делегируйте субагентам через delegate_task.
  • Если пользователь разрешает внешние ассеты, предпочитайте их моделированию, кроме совсем простых ассетов. Если не оговорено — считайте, что внешних ассетов из сети НЕТ.
  • Не ленитесь с важными деталями окружения (пейзаж, пол, здания): простые формы выглядят угловато, глянцево, плоско и фальшиво. Мелкие детали и текстурирование важны и требуют ручной лепки.
  • Используйте image_generate для текстур, карт нормалей, скайбоксов и т. п. — выглядит лучше и делается быстрее процедурных.

5. Скриншот

Поднимите сборку (например, python3 -m http.server в каталоге сборки), затем через browser_exec: new_tab('http://localhost:8000'), wait_for_load(), дайте сцене устояться, capture_screenshot(). Целитесь в то же разрешение и соотношение сторон, что у концепт-арта, чтобы сравнение было честным. Сохраните как .dream-loop/round-N.png.

6. Самопроверка перед судейством

Каждый раз просматривайте скриншот-кандидат сами, прежде чем отправлять. Не отправляйте сырую работу. Сравните скриншот и концепт бок о бок и запишите честную оценку готовности к судейству; отправляйте, только если уверены, что заметно подняли балл. Будьте строги и проверяйте каждый пиксель: крупное (отсутствующие или неверные объекты, ошибочный масштаб, перспектива, расположение) и мелкое (глюки рендера, плоские нетекстурированные поверхности, некрасивое освещение, слабый контраст, блёклый или перенасыщенный цвет, крапинки, некрасивые тени). Проходите поверхность за поверхностью, объект за объектом, и перечислите находки.

7. Судья

Судить в идеале должен свежий субагент с чистым контекстом в каждом раунде (delegate_task) — так объективнее и дешевле. Передайте судье последний скриншот, концепт и (со второго раунда) скриншот и вердикт предыдущего раунда.

Механика: vision_analyze принимает одно изображение за вызов. Либо пусть судья делает последовательные вызовы (концепт, затем скриншот, затем сравнение по памяти собственных описаний), либо — лучше — склейте подписанный композит бок о бок через ImageMagick (convert concept.png shot.png +append compare.png) или PIL и анализируйте одно это изображение.

Промпт для судьи:

Ты — арт-директор, сверяющий real-time-рендер с его концепт-артом. Сравни скриншот с концептом и оцени его от 0 до 10 по этой шкале. Шкала ступенчатая: кадр не может получить балл выше потолка ступени, пока не выполнено каждое требование ступеней ниже. Будь строг к порогам.

  • Ступень 1, форма (0-3): камера, кадрирование, композиция, а также положение и примерный масштаб каждого крупного объекта совпадают с концептом. Раскладка, а не отделка: каждый крупный элемент присутствует, в нужной области кадра (в пределах ~10% ширины/высоты кадра), примерно нужного размера (в пределах ~25%). Нужное место и примерно верный силуэт проходят, даже если края и поверхность не те; придирки к точности прибереги для ступени 4. Потолок 3, пока не выполнено.
  • Ступень 2, свет и цвет (3-5): направление и цвет ключевого света, общая экспозиция (без провалов в чёрное или белое), глубина теней, палитра, контраст, атмосфера. Обращай внимание на отражения, свечения и т. п. Убедись, что сцена не слишком светлая и не слишком тёмная относительно концепта. Суди весь кадр, а не мелкие детали (ступень 4). Потолок 5, пока освещение/отражения/цвет/контраст в целом не верны.
  • Ступень 3, материалы и поверхности (5-7): каждая поверхность с первого взгляда читается как нужный материал: текстуры, шероховатость, полупрозрачность, влажность, отражения. Ассеты не должны выглядеть процедурными, угловатыми, гладкими/пластиковыми; доминирующие в кадре элементы должны быть как следует вылеплены и детализированы. Потолок 7, пока не выполнено.
  • Ступень 4, мелкие детали (7-9): мелочи. Придирайся беспощадно; рассматривай каждый мелкий объект вблизи. Раскладка совпадает почти идеально; материалы крайне убедительны. Потолок 9, пока не доведено.
  • Ступень 5, неотличимо (9-10): выдерживает сравнение бок о бок и при увеличении. Придирайся к каждому пикселю.

Если предоставлены предыдущий вердикт и скриншот: ты один из рецензентов в последовательности, а не первый. Сохраняй последовательность. Сначала отметь каждую предыдущую директиву как LANDED, PARTIAL или NOT DONE по новому скриншоту; всё PARTIAL и NOT DONE перенеси дальше. Не отменяй прежнюю директиву, если результат не стал явно хуже, — а если отменяешь, скажи об этом и объясни почему.

Формат вывода:

  1. Балл в первой строке; «Tier N» (высшая полностью пройденная ступень) во второй. 1b. Если дан предыдущий вердикт: список LANDED / PARTIAL / NOT DONE.
  2. «Blocking:» — конкретные провалы порога следующей ступени. Строитель должен закрыть их прежде, чем засчитается что-либо ещё. Назови элемент и изменение, с величинами: «Камни: заменить сложенные овальные валуны одной сплошной расколотой плитой; трещины шириной 2-5 см, тёмные внутри, добавить фактуру поверхности, чтобы не выглядели плоскими/пластиковыми» — а не «камни выглядят искусственно».
  3. Затем не более 4 дополнительных директив с более высоких ступеней, в том же стиле, упорядоченных по количеству баллов, которые можно отыграть.

Никаких замечаний, по которым нельзя действовать («выглядит синтетически»), — называй конкретные причины. Каждая директива должна быть выполнима в этом раунде. Не округляй вверх: если порог не пройден полностью, потолок держится.

8. Критерии выхода

  • Балл >= 8 и целевой FPS приемлем: готово. Покажите пользователю последний скриншот; спросите, нужны ли ещё итерации.
  • Балл >= 8, но FPS неприемлем: оптимизируйте — сначала выигрыши без потерь, затем с минимальным визуальным ущербом. После этого пересудите, чтобы подтвердить отсутствие регрессии.
  • Приближается застой (лучший балл не вырос на целый пункт за 2 раунда, или судья трижды назвал одну и ту же проблему): прекратите точечные правки. Отступите и спросите себя, что в подходе ограничивает балл. Сделайте одно крупное структурное изменение за раунд: смените стратегию ассетов (лепка в Blender, реальные модели/текстуры/HDRI, если разрешено), перепишите модель освещения, пересоберите композицию, поменяйте камеру. Самопроверку делайте тщательно — крупные изменения ломают вещи. Возвращайтесь к подгонке параметров, только если можете объяснить, почему на этот раз сработает.
  • Застой (крупное структурное изменение уже пробовали, балл стоит 3 раунда, судья придирается или требует невозможного вроде трассировки лучей на машине без GPU): остановитесь, объясните пользователю, почему заблокированы, предложите варианты.
  • Иначе: закрывайте в этом раунде все или большинство самых весомых пробелов, а не только главный — раунды дорогие. Приоритет пробелам, которые двигают результат сильнее всего (освещение, текстуры, детализация мешей). Откатывайтесь только если балл упал на целый пункт и больше; небольшие просадки — шум судьи, а откат целого раунда выбрасывает хорошие правки вместе с плохими. Если одно изменение явно ухудшило результат, отмените только его. Повторяйте цикл.

Повторные циклы

Когда дорабатываете существующий продукт (или пользователь снова вызывает навык для доводки), не создавайте новый концепт-арт в вакууме — он может разойтись с тем, что уже есть. Вместо этого снимите живой скриншот текущего продукта и попросите image_generate отрисовать его лучшую возможную версию (текущий скриншот → тот же кадр в AAA-графике), а потом используйте это как цель. По запросу несколько экранов могут идти через параллельные циклы судейства — ценой большего расхода токенов.

Подводные камни

  • Перегруженный или упрощённый концепт-арт (см. провалы) — исправьте концепт, прежде чем строить под него.
  • Отправка сырых скриншотов судье; порог самопроверки существует не зря.
  • Скриншот в другом разрешении/соотношении сторон, чем концепт, — нечестное сравнение, шумные вердикты.
  • Зацикливание на точечных правках, когда судья говорит, что вы идёте не туда.
  • Судейство обоих изображений одним вызовом vision_analyze — он принимает одно изображение; сначала склейте композит.
  • Скриншот до того, как сцена загрузилась и устоялась, — добавьте ожидание после wait_for_load() на подгрузку ассетов и разгон анимации.

Проверка

  • .dream-loop/concept.png существует и прошёл проверку на провалы (и подтверждение пользователем, если был сгенерирован).
  • У каждого раунда есть скриншот, записанная самооценка и вердикт судьи с баллом, ступенью и директивами.
  • Выход только по явному критерию выхода; финальный скриншот показан пользователю вместе с итоговым баллом и замером FPS.

Адаптировано из dream-loop Аншу Чималы (Anshu Chimala, MIT). Лицензия апстрима вложена как LICENSE.txt.

перевод и редактура:

обновлено

⌕ ESC