From bfa4552f24ae8ba7ca3262dca085dbe7288cd3a1 Mon Sep 17 00:00:00 2001 From: Rodrigo Bertoldo de Sousa Martins Date: Fri, 11 Sep 2026 15:58:48 -0300 Subject: [PATCH] fix renderizacao --- data-pipeline/scripts/extract-manifest.mjs | 26 +++++++++------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/data-pipeline/scripts/extract-manifest.mjs b/data-pipeline/scripts/extract-manifest.mjs index 4f42fba..1e3e770 100644 --- a/data-pipeline/scripts/extract-manifest.mjs +++ b/data-pipeline/scripts/extract-manifest.mjs @@ -6,8 +6,8 @@ // - data-pipeline/seed/manifest-real.json (entradas para o seed do banco) import { NodeIO } from "@gltf-transform/core"; import { ALL_EXTENSIONS } from "@gltf-transform/extensions"; -import { prune, dedup, weld, simplify, meshopt } from "@gltf-transform/functions"; -import { MeshoptSimplifier, MeshoptEncoder } from "meshoptimizer"; +import { prune, dedup, weld, simplify } from "@gltf-transform/functions"; +import { MeshoptSimplifier } from "meshoptimizer"; import { writeFileSync, mkdirSync } from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; @@ -21,7 +21,6 @@ import { MUSCLE_DESCRIPTIONS } from "./muscle-descriptions.mjs"; import { NERVE_DESCRIPTIONS } from "./nerve-descriptions.mjs"; await MeshoptSimplifier.ready; -await MeshoptEncoder.ready; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const CONVERTED_DIR = path.resolve(__dirname, "../converted"); @@ -184,12 +183,7 @@ function classifySystem(key, rawName) { return RESPIRATORY_KEYWORDS.some((kw) => lower.includes(kw)) ? "respiratorio" : "visceral"; } -// registerDependencies com a chave "meshopt.encoder" é o que permite ao -// io.write() de fato aplicar a compressão EXT_meshopt_compression pedida -// no transform() abaixo — sem isso, ela seria ignorada silenciosamente. -const io = new NodeIO() - .registerExtensions(ALL_EXTENSIONS) - .registerDependencies({ "meshopt.encoder": MeshoptEncoder }); +const io = new NodeIO().registerExtensions(ALL_EXTENSIONS); const manifest = []; let totalStructures = 0; @@ -355,12 +349,14 @@ for (const { fbx, key } of SOURCES) { simplify({ simplifier: MeshoptSimplifier, ratio: 0.5, error: 0.01 }), prune(), dedup(), - // Comprime os atributos de vértice (posição/normal/UV) com o mesmo - // codec Meshopt já usado pra simplificação — reduz bastante o tamanho - // do .glb final (os floats crus de posição/normal dominam o arquivo), - // e o carregamento no navegador não precisa de nada extra: o useGLTF - // do drei já vem com o decoder Meshopt ligado por padrão. - meshopt({ encoder: MeshoptEncoder, level: "medium" }), + // Chegamos a testar compressão Meshopt aqui (EXT_meshopt_compression) + // pra reduzir o tamanho final do .glb — mas ela quantiza posição/normal + // pra poucos bits, e em superfícies grandes e lisas (a pele do sistema + // "regioes", por exemplo) isso ficou visível como um efeito de + // manchas/facetas na iluminação. Não vale a troca: o ganho de banda + // não compensa a qualidade visual pior justamente no sistema mais + // visível do app. Removido — ver histórico do git se quiser retomar + // com bits de quantização mais altos. ); const outPath = path.join(MODELS_OUT_DIR, target.modelFile);