fix render4

This commit is contained in:
Rodrigo Bertoldo de Sousa Martins committed 2026-09-11 16:27:38 -03:00
1 parent c3af49d3e8
commit e8ef385237
1 file changed
+14
@@ -113,6 +113,19 @@ function resolveSkeletalBone(rawName) {
// apagar uma estrutura real. // apagar uma estrutura real.
const LEADER_LINE_SOURCE_KEYS = new Set(["nervous", "regions"]); const LEADER_LINE_SOURCE_KEYS = new Set(["nervous", "regions"]);
// Uma linha de chamada de verdade do app original é um objeto decorativo
// simples — poucos vértices, só o suficiente pra desenhar um segmento fino
// (às vezes com um pequeno gancho na ponta). Uma faixa real de pele, MESMO
// estreita (ex: bem em cima da coluna), é parte de uma superfície contínua
// do corpo e tem muito mais vértices, porque segue o contorno real do
// tronco em vez de ser um segmento reto desenhado à mão. Sem esse teto, o
// teste de "reto e fino" sozinho não distingue as duas (uma faixa comprida
// e estreita também passa) — foi exatamente o que causou o buraco na pele
// da coluna. Esse limite só torna a classificação MAIS RESTRITIVA (nunca
// exclui mais do que excluía antes), então não tem como abrir um buraco
// novo — na pior hipótese, deixa passar algum tracinho residual.
const MAX_LEADER_LINE_MESH_VERTS = 60;
function isLeaderLineMesh(mesh) { function isLeaderLineMesh(mesh) {
try { try {
// Antes, cada primitivo era julgado sozinho ("every"). Isso deixava // Antes, cada primitivo era julgado sozinho ("every"). Isso deixava
@@ -135,6 +148,7 @@ function isLeaderLineMesh(mesh) {
points.push([arr[i * 3], arr[i * 3 + 1], arr[i * 3 + 2]]); points.push([arr[i * 3], arr[i * 3 + 1], arr[i * 3 + 2]]);
} }
} }
if (points.length > MAX_LEADER_LINE_MESH_VERTS) return false;
return isLeaderLinePointCloud(points); return isLeaderLinePointCloud(points);
} catch { } catch {
return false; return false;