tegumentar
This commit is contained in:
1 parent
cd6d60cb20
commit
077e451902
1 file changed
+31
-2
@@ -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,
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in new issue
Block a user