Загрузка данных
Не утверждай этот план. Claude сейчас пытается не исправить дефект, а замаскировать его шариками на каждом узле. На референсе никаких сферических соединителей нет — там обычные сваренные прутки.
addNodeHub() сделает результат хуже:
балка станет похожа на конструктор с бусинами;
сферы на u=0 и u=length выйдут за границы пролёта на hubRadius;
верхние сферы превысят сохранённый beamH;
нижние сферы залезут в лоток и уменьшат полку под блоки;
68 хабов по 30–50 треугольников добавят примерно 2000–3400 граней, то есть могут почти удвоить геометрию;
истинная проблема крышек и порядка отрисовки останется под шарами.
Численное совпадение центров стержней ещё не доказывает чистый стык: координаты могут быть правильными, но торцевые крышки разных стержней могут перекрывать друг друга в неправильном порядке.
Отправь Claude такой комментарий к плану:
План itr9 НЕ утверждён.
Не добавлять addNodeHub и не ставить сферы на узлы. На референсе нет шаровых соединителей. Сферы будут маскировать дефект, изменят силуэт балки, выйдут за U=0..length на торцах, превысят footprint по высоте и частично займут полки лотка.
Численное совпадение осей стержней подтверждает только координаты центральных линий. Оно НЕ подтверждает корректность:
- торцевых крышек bar3d;
- порядка отрисовки граней в общем узле;
- визуального сопряжения диагонали с поясом;
- отсутствия наложенных coplanar/почти coplanar граней.
Нужна правка самих стыков, а не добавление новой геометрии поверх них.
НОВЫЙ ПЛАН
1. Сначала сделать одинаковые крупные скриншоты:
- одного внутреннего нижнего узла;
- одного внутреннего верхнего узла;
- одного торцевого нижнего узла;
- свободного торца верхнего пояса.
Для каждого узла перечислить:
- какие стержни в нём сходятся;
- какие торцевые крышки реально нарисованы;
- в каком DOM/depth-порядке они отрисованы;
- какая именно грань создаёт видимый шов или тёмный клин.
2. Изменить bar3d, добавив управление крышками:
bar3d(pA, pB, rodRadius, sides, {
capStart,
capEnd,
elementType,
beamId
})
3. Правила крышек:
- Непрерывные верхний и нижние пояса остаются одним стержнем на всю длину.
- У поясов крышки есть только на их настоящих свободных концах.
- У каждого раскоса конец, входящий в пояс, строится БЕЗ торцевой крышки.
- Торцевые крышки раскосов внутри узлов запрещены.
- Боковые грани раскоса заканчиваются точно в математическом узле, без удлинения и offset.
- Никаких сфер, хабов, муфт или декоративных накладок на первом проходе.
4. В местах почти одинаковой глубины ввести детерминированный tie-breaker сортировки:
- сначала грани раскосов;
- затем грани продольных поясов;
- торцевые крышки свободных концов — последними среди граней соответствующего стержня.
Это должно создавать визуальное впечатление, что раскос входит в пояс, а не наклеен поверх него своей крышкой.
Tie-breaker применять только при близких depthKey в пределах отдельного узла. Не ломать общий far-to-near порядок сцены.
5. Не менять:
- leftBottom/rightBottom/top;
- panelCount и pitch;
- координаты узлов;
- длину поясов;
- форму лотка;
- камеру и proj();
- позиции балок;
- остальные объекты и стадии.
6. Добавить проверки:
- ни одна боковая вершина не выходит за U=0..length;
- крышка раскоса отсутствует на каждом конце, соединённом с поясом;
- крышки поясов существуют только на настоящих свободных концах;
- количество сферических или дополнительных узловых объектов равно нулю;
- footprint балки после правки совпадает с itr8.
7. После правки сначала показать одну балку:
- общий вид;
- левый торец крупно;
- правый торец крупно;
- внутренний верхний и нижний узлы крупно.
Только после визуально чистых узлов показывать полную сцену.
Если после отключения лишних крышек останется реальный зазор, сначала показать его крупным планом и объяснить причину. Не добавлять хабы без отдельного подтверждения владельца.
Главная мысль для Claude:
Координаты стержней, возможно, уже правильные. Исправлять нужно не узлы шарами, а торцевые крышки раскосов и порядок отрисовки граней в месте соединения.
И ещё: его фраза «сфера — тот же приём, что сварной узел реальной фермы» неверна. Сварной узел не выглядит как шар диаметром больше арматуры. Это будет заметная чужеродная деталь.