Загрузка данных


Да, теперь промт уже пригоден для отправки Claude Pro: структура однозначная, геометрия задана формулами, запрещены плоские линии, предусмотрены проверки и обязательные рендеры.

Но я бы внёс две последние правки, чтобы Claude не ушёл в огромную переделку всего рендера.

1. Ограничить глобальную сортировку

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

Замени начало пункта 5 на:

5. Сортировка граней.

Сначала изучить существующий порядок рендера сцены. Запрещено заранее переписывать весь render pipeline стен, колонн, блоков и остальных стадий.

Обязательный минимум:
- все грани ВСЕХ четырёх балок собираются в единый массив beamRenderFaces;
- грани разных стержней и разных балок сортируются совместно far→near;
- балки не сортируются отдельными замкнутыми beamG-группами;
- весь слой балок сохраняет прежнее место относительно слоёв стен, колонн, блоков и пола.

Расширять общую сортировку на геометрию стен, колонн или блоков разрешено ТОЛЬКО если после правильной совместной сортировки всех граней балок на контрольных скриншотах остаётся доказанная ошибка перекрытия с конкретным объектом сцены.

Не проводить масштабный рефакторинг всей сцены без визуально подтверждённой необходимости.

А требование requestAnimationFrame лучше ослабить:

Во время .drop все грани одной балки получают один и тот же transform и движутся как единое целое.

Пересчёт depthKey через requestAnimationFrame добавлять только в том случае, если контрольные кадры 25/50/75% доказывают, что порядок перекрытия действительно меняется во время падения. Не создавать новый покадровый render loop заранее.

Так Claude сначала решит саму балку, а не потратит весь контекст на новый графический движок.

2. Не придумывать beamRevealAbove

Сейчас написано:

blockTopZ = wallTop + beamH − beamRevealAbove

Если beamRevealAbove отсутствует в исходнике, Claude может создать новое число и подогнать результат.

Замени на:

blockTopZ вычислять из ФАКТИЧЕСКИХ мировых вершин существующей геометрии блока:

blockTopZ = max(worldZ всех верхних вершин блока).

Не вводить новую константу beamRevealAbove, если её уже нет в исходном коде.

Ассерт:
trussTopZ > blockTopZ + eps.

Это намного надёжнее.

Вердикт

После этих двух замен — отправляй. Больше расширять промт не стоит: он уже очень подробный. Дальнейшие добавления могут не улучшить результат, а заставить Claude распыляться.

Самое важное теперь зафиксировано:

одна функция generateBeam;
локальные координаты;
два нижних и один верхний пояс;
две синхронные плоскости зигзагов;
объёмные восьмигранные прутки;
одинаковый шаг без обрезанной последней панели;
никакой связи между соседними балками;
обязательная изолированная проверка;
три финальных скриншота;
запрет сдавать работу без визуального соответствия.