Back to Body Journal
SOURCE / PINNED RELEASE

Made of little things.

Body Journal

Release
e8049f8da4e2…
Author-recorded commit
61c04bf0e8aa…
License
LICENSE
Author’s source reference
nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-6c4554844c7

Archive hash verified: 4369d778da046a8b…. The source-to-build association is the author’s claim; it has not been independently rebuilt.

tests/layers.test.mjs
import assert from 'node:assert/strict';
import test from 'node:test';
import {readFileSync} from 'node:fs';
import {createHash} from 'node:crypto';
import {resolve,dirname} from 'node:path';
import {runInNewContext} from 'node:vm';
import ts from 'typescript';
import * as three from 'three';
const cache=new Map();
function load(file){
 const path=resolve(file);if(cache.has(path))return cache.get(path).exports;
 const module={exports:{}};cache.set(path,module);
 runInNewContext(ts.transpileModule(readFileSync(path,'utf8'),{compilerOptions:{module:ts.ModuleKind.CommonJS,target:ts.ScriptTarget.ES2022}}).outputText,{module,exports:module.exports,TextEncoder,TextDecoder,require:name=>name==='three'?three:load(resolve(dirname(path),name.replace(/\.js$/,'.ts')))});return module.exports;
}
const {decodeAtlas}=load('src/atlas-data.ts');
const {muscleCatalog,organCatalog}=load('src/atlas-catalog.ts');
const {SkinModel,decodeSkin}=load('src/skin-model.ts'),{decodeSkeleton}=load('src/skeleton-data.ts');
const {draftString,parseDraft,casePayload}=load('src/case-record.ts'),{parseSession,sessionString}=load('src/session-record.ts');
const {profile,makeConcern}=load('src/case.ts'),{skeletonCatalog}=load('src/skeleton-catalog.ts');
const bytes=file=>{const b=readFileSync(file);return b.buffer.slice(b.byteOffset,b.byteOffset+b.byteLength);};
const data=decodeSkin(bytes('assets/skin/body-skin.bin')),skeleton=decodeSkeleton(bytes('assets/skeleton/skeleton.bin'));
const muscles=decodeAtlas(bytes('assets/anatomy/muscles.bin'),'bp3d-muscles-1'),organs=decodeAtlas(bytes('assets/anatomy/organs.bin'),'bp3d-organs-1');
const {MeshStandardMaterial,Vector3,Raycaster,Triangle}=three;
function model(){const m=new SkinModel(data,new MeshStandardMaterial(),skeleton,[muscles,organs]);m.setLayer('skeleton');m.update();return m;}
function pick(m,label){
 const asset=m.layer==='muscles'?muscles:m.layer==='organs'?organs:skeleton;
 const info=asset.parts.find(p=>p.label===label),mesh=m.surfaces.find(s=>s.name===info.id);
 const positions=mesh.geometry.getAttribute('position'),indices=mesh.geometry.index;
 mesh.geometry.computeBoundingBox();const target=mesh.geometry.boundingBox.getCenter(new Vector3());let face=0,distance=Infinity;
 for(let i=0;i<indices.count;i+=3){const center=[0,1,2].reduce((v,k)=>v.add(new Vector3().fromBufferAttribute(positions,indices.getX(i+k))),new Vector3()).multiplyScalar(1/3);const d=center.distanceToSquared(target);if(d<distance){distance=d;face=i;}}
 const verts=[0,1,2].map(i=>mesh.localToWorld(mesh.getVertexPosition(indices.getX(face+i),new Vector3())));
 const center=verts.reduce((p,v)=>p.add(v),new Vector3()).multiplyScalar(1/3),normal=Triangle.getNormal(...verts,new Vector3());
 const hit=new Raycaster(center.clone().addScaledVector(normal,.003),normal.clone().negate(),0,.006).intersectObject(mesh,false)[0];
 assert.ok(hit,label);return m.mark(hit,.012,1);
}
test('pinned skeleton has complete finite geometry, unique FMA IDs, named structures and bounded indices',()=>{
 const provenance=JSON.parse(readFileSync('assets/skeleton/provenance.json'));
 assert.equal(createHash('sha256').update(readFileSync('assets/skeleton/skeleton.bin')).digest('hex'),provenance.sha256);
 assert.equal(skeleton.parts.length,238);assert.equal(new Set(skeleton.parts.map(p=>p.id)).size,238);
 for(const p of skeleton.parts){
  const pos=new Float32Array(skeleton.buffer,skeleton.start+p.positions,p.vertices*3),indices=new Uint16Array(skeleton.buffer,skeleton.start+p.indices,p.triangles*3);
  assert.ok(pos.every(Number.isFinite),p.label);assert.ok(indices.every(i=>i<p.vertices),p.label);
  assert.ok(p.bone>=0&&p.bone<53);assert.equal(skeletonCatalog.find(c=>c.id===p.id).triangles,p.triangles);
 }
});
test('skin/skeleton raycasts are isolated; named bone anchors survive shape, sitting and IK',()=>{
 const m=model();assert.ok(!m.mesh.visible);assert.ok(m.surfaces.every(s=>s.name.startsWith('FMA')));
 for(const label of ['Left femur','Right humerus','Left tibia','Mandible']){
  const {mark}=pick(m,label),serialized=JSON.stringify(mark),before=m.group.localToWorld(m.anchor(mark).point.clone());
  assert.equal(mark.surface.label,label);assert.equal(mark.surface.model,'bp3d-skeleton-1');
  m.joints.get('left-hip').rotation.x=-1.48;m.joints.get('left-knee').rotation.x=1.48;
  m.shape(190,130,'Female');m.update();const anchor=m.anchor(mark),world=m.group.localToWorld(anchor.point.clone());
  const normal=anchor.normal.clone().transformDirection(m.group.matrixWorld);
  const mesh=m.surfaces.find(s=>s.name===mark.surface.zone);
  const hit=new Raycaster(world.clone().addScaledVector(normal,.003),normal.clone().negate(),0,.006).intersectObject(mesh,false)[0];
  assert.ok(hit,label);assert.ok(hit.point.distanceTo(world)<1e-5);
  if(label==='Left femur')assert.ok(world.distanceTo(before)>.1);
  assert.equal(JSON.stringify(mark),serialized);
  m.setLayer('skin');assert.ok(m.mesh.visible);assert.ok(!m.surfaces.includes(mesh));m.setLayer('skeleton');
 }
 m.solveLimb('left-hip',m.endpoint('left-hip').add(new Vector3(.05,.1,.06)));
 assert.ok(pick(m,'Left tibia').mark.point.every(Number.isFinite));m.dispose();
});
test('layers and anchors round-trip; cross-layer, wrong structure and oversized triangle data are rejected',()=>{
 const m=model(),c=makeConcern(1,'Left femur','sitting');c.layer='skeleton';c.marks=[pick(m,'Left femur').mark];
 const raw=draftString(profile,[c]),saved=parseDraft(raw);assert.equal(saved.concerns[0].layer,'skeleton');assert.ok(m.anchor(saved.concerns[0].marks[0]));
 const payload=casePayload(profile,[c]);assert.equal(payload.concerns[0].illustratedLayer,'skeleton');assert.match(payload.evidenceLimits.join(' '),/does not establish that a bone, muscle or organ causes/);
 for(const mutate of [c=>c.layer='skin',c=>c.layer='organs',c=>c.marks[0].surface.zone='FMA-unknown',c=>c.marks[0].surface.triangle=999999]){const bad=JSON.parse(raw);mutate(bad.concerns[0]);assert.throws(()=>parseDraft(JSON.stringify(bad)));}
 const session={version:1,draft:saved,view:{page:'map',panel:'body',selectedId:1,pose:'sitting',layer:'skeleton',exampleAttachment:false}};
 assert.equal(parseSession(sessionString(session)).view.layer,'skeleton');
 const old=JSON.parse(draftString(profile,[makeConcern(2,'Knee','standing')]));delete old.concerns[0].layer;assert.equal(parseDraft(JSON.stringify(old)).concerns[0].layer,'skin');m.dispose();
});

for(const [layer,asset,catalog] of [['muscles',muscles,muscleCatalog],['organs',organs,organCatalog]]) {
 test(`${layer}: pinned named geometry and normalized blended weights are complete`,()=>{
  const provenance=JSON.parse(readFileSync(`assets/anatomy/${layer}-provenance.json`));
  assert.equal(createHash('sha256').update(readFileSync(`assets/anatomy/${layer}.bin`)).digest('hex'),provenance.sha256);
  assert.equal(asset.parts.length,provenance.structures);assert.equal(new Set(asset.parts.map(p=>p.id)).size,asset.parts.length);
  assert.ok(asset.parts.length>30);
  for(const p of asset.parts){
   const positions=new Float32Array(asset.buffer,asset.start+p.positions,p.vertices*3),faces=new Uint16Array(asset.buffer,asset.start+p.indices,p.triangles*3);
   const indices=new Uint16Array(asset.buffer,asset.start+p.skinIndices,p.vertices*4),weights=new Float32Array(asset.buffer,asset.start+p.skinWeights,p.vertices*4);
   assert.ok(positions.every(Number.isFinite));assert.ok(faces.every(i=>i<p.vertices));assert.ok(indices.every(i=>i<53));
   assert.ok(weights.every(w=>Number.isFinite(w)&&w>=0&&w<=1));
   for(let i=0;i<p.vertices;i++)assert.ok(Math.abs(weights.slice(i*4,i*4+4).reduce((a,b)=>a+b,0)-1)<1e-6);
   assert.equal(catalog.find(c=>c.id===p.id).triangles,p.triangles);assert.ok(p.label.length>2);
  }
  assert.throws(()=>decodeAtlas(bytes(`assets/anatomy/${layer}.bin`),'unknown-model'));
 });
 test(`${layer}: real posed ray hits stay anchored through morph, IK and saved sessions`,()=>{
  const m=model();m.setLayer(layer);
  const labels=layer==='muscles'?['Left rectus femoris','Long head of right biceps brachii','Left tibialis anterior']:['Stomach','Left kidney','Urinary bladder'];
  const concerns=[];
  for(const [i,label] of labels.entries()){
   const {mark}=pick(m,label),initial=JSON.stringify(mark);assert.equal(mark.surface.label,label);
   const before=m.anchor(mark).point.clone();
   m.joints.get('left-hip').rotation.x=-1.4;m.joints.get('left-knee').rotation.x=1.4;m.joints.get('right-elbow').rotation.x=-1.2;
   m.shape(188,115,'Female');m.update();
   const anchor=m.anchor(mark),world=m.group.localToWorld(anchor.point.clone()),normal=anchor.normal.clone().transformDirection(m.group.matrixWorld);
   const mesh=m.surfaces.find(s=>s.name===mark.surface.zone);
   const hit=new Raycaster(world.clone().addScaledVector(normal,.002),normal.clone().negate(),0,.004).intersectObject(mesh,false)[0];
   assert.ok(hit,label);assert.ok(hit.point.distanceTo(world)<1e-5,label);assert.equal(JSON.stringify(mark),initial);
   if(label==='Left rectus femoris')assert.ok(anchor.point.distanceTo(before)>.1);
   const c=makeConcern(i+1,label,'sitting');c.layer=layer;c.marks=[mark];concerns.push(c);
   for(const other of ['skin','skeleton',layer==='muscles'?'organs':'muscles']){m.setLayer(other);assert.ok(!mesh.visible);assert.ok(!m.surfaces.includes(mesh));}m.setLayer(layer);
  }
  const raw=draftString(profile,concerns),saved=parseDraft(raw);assert.equal(saved.concerns[0].layer,layer);
  const edited=JSON.parse(raw);edited.concerns[0].marks[0].surface.label='untrusted name';assert.equal(parseDraft(JSON.stringify(edited)).concerns[0].marks[0].surface.label,labels[0]);
  for(const change of [c=>c.layer='skin',c=>c.marks[0].surface.zone='FMA-unknown',c=>c.marks[0].surface.triangle=999999,c=>c.marks[0].surface.model='future-version']){const bad=JSON.parse(raw);change(bad.concerns[0]);assert.throws(()=>parseDraft(JSON.stringify(bad)));}
  assert.equal(casePayload(profile,concerns).concerns[0].illustratedLayer,layer);
  const session={version:1,draft:saved,view:{page:'map',panel:'body',selectedId:1,pose:'sitting',layer,exampleAttachment:false}};
  assert.equal(parseSession(sessionString(session)).view.layer,layer);
  m.solveLimb('left-hip',m.endpoint('left-hip').add(new Vector3(.04,.05,.03)));assert.ok(m.anchor(concerns[0].marks[0]).point.toArray().every(Number.isFinite));m.dispose();
 });
}

test('reproductive structures follow sex or the explicit illustration override; hidden anchors are retained safely',()=>{
 const m=model();m.setLayer('organs');
 const visible=sex=>{m.shape(172,70,sex);m.update();return m.surfaces.map(mesh=>organs.parts.find(p=>p.id===mesh.name)?.label);};
 assert.ok(!visible('').includes('Prostate'));assert.ok(visible('Male').includes('Prostate'));assert.ok(!visible('Male').includes('Uterus · schematic'));
 const male=pick(m,'Left testis').mark;const maleJSON=JSON.stringify(male);
 assert.ok(visible('Female').includes('Uterus · schematic'));assert.ok(!m.anchor(male));
 assert.ok(!m.surfaces.some(mesh=>mesh.name===male.surface.zone));
 const female=pick(m,'Uterus · schematic').mark;
 m.joints.get('left-hip').rotation.x=-1.3;m.shape(180,90,'Female');m.update();assert.ok(m.anchor(female));
 m.shape(180,90,'Female','penis');m.update();assert.ok(m.anchor(male));assert.ok(!m.anchor(female));
 m.shape(172,70,'Male','vulva');m.update();assert.ok(m.anchor(female));assert.ok(!m.anchor(male));
 for(const sex of ['','Intersex','Prefer not to say']){visible(sex);assert.ok(!m.anchor(male));assert.ok(!m.anchor(female));}
 m.shape(172,70,'Male','none');assert.ok(!m.anchor(male));assert.ok(m.surfaces.length===70);
 const c=makeConcern(1,'Left testis','standing');c.layer='organs';c.marks=[male];const saved=parseDraft(draftString({...profile,sex:'Male'},[c]));
 assert.equal(JSON.stringify(saved.concerns[0].marks[0]),maleJSON);m.shape(172,70,'Male');m.update();assert.ok(m.anchor(saved.concerns[0].marks[0]));
 m.dispose();
});

test('arm motion cannot pull the abdominal wall or opposite hip; torso organs retain their proportions across sex/BMI',()=>{
 const m=model();m.setLayer('muscles');
 const observations=['Left external oblique','Right gluteus medius'].map(label=>pick(m,label).mark);
 const before=observations.map(mark=>m.anchor(mark).point.clone());
 m.joints.get('left-arm').rotation.z=1;m.joints.get('right-arm').rotation.z=-1;m.update();
 observations.forEach((mark,i)=>assert.ok(m.anchor(mark).point.distanceTo(before[i])<1e-7));
 m.setLayer('organs');const heart=m.surfaces.find(mesh=>organs.parts.find(p=>p.id===mesh.name)?.label==='Wall of ventricle');
 const positions=()=>heart.geometry.getAttribute('position');const size=()=>{heart.geometry.computeBoundingBox();return heart.geometry.boundingBox.getSize(new Vector3());};const original=size();
 for(const [height,weight,sex] of [[135,160,'Female'],[210,40,'Male'],[172,70,'']]){m.shape(height,weight,sex);m.update();assert.ok(size().distanceTo(original)<1e-6,'The clavicle must not shear the heart');assert.ok(positions().array.every(Number.isFinite));}
 m.dispose();
});