tegumentar

This commit is contained in:
Rodrigo Bertoldo de Sousa Martins committed 2026-09-10 19:08:05 -03:00
1 parent cd6d60cb20
commit 077e451902
1 file changed
+31 -2
+31 -2
View File
@@ -31,6 +31,35 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
const structures = []; const structures = [];
// O Z-Anatomy-Sample (verificado na íntegra em Assets/Models/1.0 Models,
// via API do GitHub) NÃO tem nenhum arquivo de pele/tegumento — só
// SkeletalSystem, MuscularSystem, NervousSystem, CardioVascular,
// VisceralSystem, Joints, LymphoidOrgans, Regions e Reference lines —
// confirma o que já estava documentado: não existe dataset de corpo
// inteiro com camadas de pele, daqui vem a necessidade do bloco esquemático.
//
// Todo o desenho abaixo é escrito em "unidades de projeto" (a escala
// original, pensada peça por peça) e só na hora de gerar a estrutura final
// o add() aplica o fator SCALE — assim dá pra aumentar/diminuir o bloco
// inteiro (pedido do usuário: "aumente o tamanho dele") mudando um único
// número, sem precisar recalcular à mão a posição de cada uma das ~20 peças.
const SCALE = 3;
function scaleShape(shape) {
const scaled = { ...shape };
for (const key of ["w", "h", "d", "r", "rt", "rb"]) {
if (scaled[key] != null) scaled[key] *= SCALE;
}
return scaled;
}
// Escala a posição em torno da âncora do bloco (CX, CY, Z_TOP) — assim o
// bloco cresce a partir do ponto onde "gruda" no antebraço, em vez de só se
// afastar dele.
function scalePosition([x, y, z]) {
return [CX + (x - CX) * SCALE, CY + (y - CY) * SCALE, Z_TOP - (Z_TOP - z) * SCALE];
}
function add(system, slug, namePt, nameEn, region, shape, position, opts = {}) { function add(system, slug, namePt, nameEn, region, shape, position, opts = {}) {
structures.push({ structures.push({
system, system,
@@ -42,8 +71,8 @@ function add(system, slug, namePt, nameEn, region, shape, position, opts = {}) {
regionPath: region, regionPath: region,
modelFile: `${system}.glb`, modelFile: `${system}.glb`,
meshName: slug, meshName: slug,
shape, shape: scaleShape(shape),
position, position: scalePosition(position),
rotation: opts.rotation ?? [0, 0, 0], rotation: opts.rotation ?? [0, 0, 0],
color: opts.color, color: opts.color,
}); });