fix render2

This commit is contained in:
Rodrigo Bertoldo de Sousa Martins committed 2026-09-11 16:10:50 -03:00
1 parent 57a8a5fe50
commit 1404db1866
1 file changed
+16 -1
+16 -1
View File
@@ -245,6 +245,19 @@ function stripLeaderLineComponentsUnsafe(mesh) {
// Malha inteira é UM pedaço só conectado — nada pra separar/remover.
if (facesByRoot.size <= 1) continue;
// Uma linha de chamada de verdade no app original é um segmento bem
// simples (poucos vértices) — bem menor que qualquer pedaço real de
// pele/estrutura. Sem esse limite de tamanho, uma faixa real só
// COMPRIDA (ex: a pele bem em cima da coluna, entre as costas
// esquerda e direita) também passa no teste de "reto e fino" e acaba
// sendo apagada por engano, abrindo um buraco de verdade na malha
// (foi exatamente o que aconteceu e o usuário reportou). Limitamos a
// remoção a pedaços pequenos em termos absolutos E relativos ao resto
// da malha.
const totalVerts = posAccessor.getCount();
const MAX_LEADER_LINE_VERTS = 40;
const MAX_LEADER_LINE_SHARE = 0.15;
const keptFaces = [];
let removedAny = false;
for (const faceList of facesByRoot.values()) {
@@ -254,7 +267,9 @@ function stripLeaderLineComponentsUnsafe(mesh) {
vertSet.add(indices[f * 3 + 1]);
vertSet.add(indices[f * 3 + 2]);
}
if (isLeaderLinePointCloud([...vertSet].map(at))) {
const smallEnough =
vertSet.size <= MAX_LEADER_LINE_VERTS && vertSet.size <= totalVerts * MAX_LEADER_LINE_SHARE;
if (smallEnough && isLeaderLinePointCloud([...vertSet].map(at))) {
removedAny = true;
} else {
keptFaces.push(...faceList);