fix 3
This commit is contained in:
1 parent
f6b132623c
commit
81342d834a
4 files changed
+34
-3
No files matched your search
@@ -16,6 +16,7 @@
|
|||||||
"@gltf-transform/core": "^4.0.4",
|
"@gltf-transform/core": "^4.0.4",
|
||||||
"@gltf-transform/extensions": "^4.0.4",
|
"@gltf-transform/extensions": "^4.0.4",
|
||||||
"@gltf-transform/functions": "^4.0.4",
|
"@gltf-transform/functions": "^4.0.4",
|
||||||
|
"meshoptimizer": "^0.22.0",
|
||||||
"pg": "^8.12.0"
|
"pg": "^8.12.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,8 @@
|
|||||||
// - data-pipeline/seed/manifest-real.json (entradas para o seed do banco)
|
// - data-pipeline/seed/manifest-real.json (entradas para o seed do banco)
|
||||||
import { NodeIO } from "@gltf-transform/core";
|
import { NodeIO } from "@gltf-transform/core";
|
||||||
import { ALL_EXTENSIONS } from "@gltf-transform/extensions";
|
import { ALL_EXTENSIONS } from "@gltf-transform/extensions";
|
||||||
import { prune, dedup } from "@gltf-transform/functions";
|
import { prune, dedup, weld, simplify } from "@gltf-transform/functions";
|
||||||
|
import { MeshoptSimplifier } from "meshoptimizer";
|
||||||
import { writeFileSync, mkdirSync } from "node:fs";
|
import { writeFileSync, mkdirSync } from "node:fs";
|
||||||
import path from "node:path";
|
import path from "node:path";
|
||||||
import { fileURLToPath } from "node:url";
|
import { fileURLToPath } from "node:url";
|
||||||
@@ -14,6 +15,8 @@ import { SOURCES, SOURCE_TARGETS, RESPIRATORY_KEYWORDS } from "./sources.mjs";
|
|||||||
import { translateToPt } from "./translate-pt.mjs";
|
import { translateToPt } from "./translate-pt.mjs";
|
||||||
import { SYSTEMS } from "../seed/systems.mjs";
|
import { SYSTEMS } from "../seed/systems.mjs";
|
||||||
|
|
||||||
|
await MeshoptSimplifier.ready;
|
||||||
|
|
||||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
const CONVERTED_DIR = path.resolve(__dirname, "../converted");
|
const CONVERTED_DIR = path.resolve(__dirname, "../converted");
|
||||||
const MODELS_OUT_DIR = path.resolve(__dirname, "../seed/models");
|
const MODELS_OUT_DIR = path.resolve(__dirname, "../seed/models");
|
||||||
@@ -121,7 +124,18 @@ for (const { fbx, key } of SOURCES) {
|
|||||||
console.warn(` ⚠ nenhuma malha nomeada encontrada em ${fbx} — confira o log do assimp/conversão.`);
|
console.warn(` ⚠ nenhuma malha nomeada encontrada em ${fbx} — confira o log do assimp/conversão.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
await doc.transform(prune(), dedup());
|
// Malhas do Z-Anatomy vêm pensadas para um app desktop (Unity), com
|
||||||
|
// densidade de polígonos bem maior do que um visualizador web aguenta
|
||||||
|
// com dezenas de estruturas na tela ao mesmo tempo — sem isso os .glb
|
||||||
|
// ficam grandes demais para transferir e derrubam o contexto WebGL
|
||||||
|
// (GPU sobrecarregada). Reduzimos para ~15% dos triângulos originais,
|
||||||
|
// que mantém a forma reconhecível para fins de estudo.
|
||||||
|
await doc.transform(
|
||||||
|
weld(),
|
||||||
|
simplify({ simplifier: MeshoptSimplifier, ratio: 0.15, error: 0.01 }),
|
||||||
|
prune(),
|
||||||
|
dedup(),
|
||||||
|
);
|
||||||
|
|
||||||
const outPath = path.join(MODELS_OUT_DIR, target.modelFile);
|
const outPath = path.join(MODELS_OUT_DIR, target.modelFile);
|
||||||
await io.write(outPath, doc);
|
await io.write(outPath, doc);
|
||||||
|
|||||||
@@ -80,5 +80,9 @@ server {
|
|||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
# Arquivos .glb grandes (dezenas de MB) e o host com outras
|
||||||
|
# aplicações rodando podem passar do timeout padrão de 60s.
|
||||||
|
proxy_read_timeout 300s;
|
||||||
|
proxy_send_timeout 300s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+13
-1
@@ -44,6 +44,10 @@ http {
|
|||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
# Consultas grandes (milhares de estruturas) ou o host sob carga de
|
||||||
|
# outras aplicações podem passar de 60s (default do nginx).
|
||||||
|
proxy_read_timeout 300s;
|
||||||
|
proxy_send_timeout 300s;
|
||||||
}
|
}
|
||||||
|
|
||||||
location /models/ {
|
location /models/ {
|
||||||
@@ -53,7 +57,15 @@ http {
|
|||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
add_header Cache-Control "public, max-age=604800, immutable";
|
proxy_read_timeout 300s;
|
||||||
|
proxy_send_timeout 300s;
|
||||||
|
# NÃO usar "immutable"/cache longo aqui: os arquivos .glb têm nome
|
||||||
|
# fixo por sistema (ex: muscular.glb) mas o CONTEÚDO muda toda vez
|
||||||
|
# que o pipeline roda de novo — com cache "immutable" o navegador
|
||||||
|
# nunca mais rebaixava a versão nova, mesmo com hard-refresh.
|
||||||
|
# "no-cache" ainda permite resposta 304 (rápida) quando o arquivo
|
||||||
|
# realmente não mudou, via ETag do @fastify/static.
|
||||||
|
add_header Cache-Control "no-cache";
|
||||||
}
|
}
|
||||||
|
|
||||||
# SPA fallback.
|
# SPA fallback.
|
||||||
|
|||||||
Reference in new issue
Block a user