fix renderizacao

This commit is contained in:
Rodrigo Bertoldo de Sousa Martins committed 2026-09-11 15:58:48 -03:00
1 parent 08cb8c426f
commit bfa4552f24
1 file changed
+11 -15
+11 -15
View File
@@ -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);