Skip to content

cockpit/torso: anisotropic surface-fit splat + per-node SoA switch + /torso-map#53

Merged
AdaWorldAPI merged 3 commits into
claude/fma-torso-splatfrom
claude/torso-anisotropic-map
Jun 24, 2026
Merged

cockpit/torso: anisotropic surface-fit splat + per-node SoA switch + /torso-map#53
AdaWorldAPI merged 3 commits into
claude/fma-torso-splatfrom
claude/torso-anisotropic-map

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

What

The structural upgrade on top of the torso splat (#52): the splat stops being a detached isotropic point cloud and becomes the GUID / value-tenant substrate seen as oriented geometry. One pass over the BodyParts3D meshes does all of it.

Stacked on #52 (claude/fma-torso-splat). GitHub auto-retargets this to main when #52 merges.

SPL2 format (supersedes SPL1): hdr 40B [SPL2|count|node_count|radius|bbox]; body 21B [pos 3f | normal 3i8 | rgb 3u8 | opacity u8 | node_row u16]. Laid out helix-orderable + residual-ready for the queued codec PR.

Anisotropic surface-fit — "connect the dots"

BodyParts3D OBJ ships per-vertex normals (vn) — free, no face traversal. The splat3d render driver orients each gaussian flat-to-surface (scale=[t,t,thin], quat aligns local-z to the normal); tangent 0.004 connects within a structure while rib gaps stay visible. Oriented disks blend into continuous surfaces with real 3D form — not isotropic blobs, not a discrete voxel grid. (Verified by viewing the re-rendered turntable: connected anatomical surfaces, form from orientation.)

Per-node SoA + O(1) switch — the GUID backbone

torso.nodes.json = one row per FMA structure (178 rows, 91 own meshes), carrying the value-tenants of one identity: fma id, name, depth, HHTL tier-ranks, colour, the gaussian RANGE (start+count), and the OBJ-geometry tenant (centroid + bbox + FJ handles). Each gaussian carries its node_row; a consumer builds the switch (row → node) once → O(1) tenant reads.

Position = real BodyParts3D coordinate; identity = the FMA node — the inverse of the heart (which had no geometry, so the GUID generated the position).

/torso-map — graph ↔ splat, one node at one address

TorsoMap.tsx: click a gaussian → its node_row → O(1) into the SoA → FMA label + partonomy breadcrumb; the structure list highlights its gaussians (graph → splat). The osint-cad-splat thesis made literal: geometry, graph, and splat are three tenants of one identity, switch-selected.

Pages

  • /torso — re-rendered anisotropic turntable (splat3d CPU, no GPU).
  • /torso-live — decodes SPL2 (still the point cloud you liked).
  • /torso-mapnew; the pick-to-FMA map.

Verification

tsc clean. splat3d frames verified by eye. The /torso-map raycast-on-Points pick logic is standard three.js but not exercised in a real browser here — flagging honestly. Geometry: BodyParts3D, CC-BY 4.0 / CC-BY-SA 2.1 JP, © The Database Center for Life Science (attribution in-view).

Next (queued)

The Helix-48 residue codec: helix-order (= identity/GUID order) → anchor = FMA node (SoA centroid, random-access via the switch) + motion (gaussian offset from anchor) + x265-style residual (helix-ordered SH delta) → anisotropic/edge-aware reconstruction (node_row-bounded + normal-oriented = crisp colours, free) → bonus: deform anchors = animated anatomy (Motion-Blender GS; the partonomy is the rig). Every input it needs is already in SPL2 + the node SoA.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TzqvDqbFRzyx17EkLKBoZF


Generated by Claude Code

The structural upgrade you greenlit: the torso splat stops being a detached
isotropic point cloud and becomes the GUID/value-tenant substrate seen as
oriented geometry. One pass over the BodyParts3D meshes does all of it.

SPL2 format (supersedes SPL1): hdr 40B [SPL2|count|node_count|radius|bbox];
body 21B [pos 3f | normal 3i8 | rgb 3u8 | opacity u8 | node_row u16]. Helix-
orderable + residual-ready (the Helix-48 codec slots in here next).

- Anisotropic surface-fit ("connect the dots"): BodyParts3D OBJ ships per-vertex
  normals (vn) — free, no face traversal. The splat3d render driver orients each
  gaussian flat-to-surface (scale=[t,t,thin], quat aligns local-z to the normal);
  tangent 0.004 connects within a structure while rib gaps stay visible. Oriented
  disks blend into continuous surfaces with real 3D form — not isotropic blobs,
  not a discrete voxel grid.
- Per-node SoA + O(1) switch (the GUID backbone): torso.nodes.json = one row per
  FMA structure (178 rows, 91 own meshes) carrying the value-tenants of one
  identity — fma id, name, depth, HHTL tier-ranks, colour, gaussian RANGE
  (start+count), and the OBJ-geometry tenant (centroid+bbox+FJ handles). Each
  gaussian carries its node_row; consumers build the switch (row->node) once ->
  O(1) tenant reads. Position = real BodyParts3D coordinate; identity = FMA node.
- /torso-map (TorsoMap.tsx): click a gaussian -> node_row -> O(1) into the SoA ->
  FMA label + partonomy breadcrumb; structure list highlights its gaussians
  (graph <-> splat). The osint-cad-splat thesis made literal: graph and splat,
  one node at one address, switch-selected.
- /torso-live decodes SPL2 (still points); /torso shows the re-rendered
  anisotropic turntable. main.tsx: /torso-map route.

Verified by viewing the rendered frames (connected anatomical surfaces, upright,
form from orientation). tsc clean; browser pick-interaction not exercised here
(raycast-on-Points is standard). Geometry: BodyParts3D, CC-BY 4.0 / CC-BY-SA 2.1
JP, (c) The Database Center for Life Science (attribution in-view).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TzqvDqbFRzyx17EkLKBoZF
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@coderabbitai

coderabbitai Bot commented Jun 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 6ac3f71c-770e-4916-b6d8-4bddf9ef99d3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

tools/spl_codec.py — the "x265 for gaussians" the design converged on, as a
MEASUREMENT tool that proves the structure before it is wired into render/anim.

Maps the x265 pipeline onto signals already in SPL2 + torso.nodes.json:
  helix    = 3D Morton of position = identity/GUID order (locality-preserving)
  anchor   = FMA node (SoA centroid + per-node colour) = the I-frame, random-access
  motion   = gaussian offset from its node anchor
  residual = helix-ordered zig-zag delta of (motion, normal)
  colour   = ANCHOR-PREDICTED -> 0 per-gaussian bytes (node palette)

Measured on the real torso (231,515 gaussians):
  SPL2 21.0 B/g -> SPL3 7.47 B/g  =  2.8x smaller (zlib entropy stand-in)
  colour: exact, 887 B for ALL colour (crisp by construction, no boundary bleed)
  position round-trip RMSE 0.00001 (16-bit quant, effectively lossless)
  node_row RLE 35 KB / 231K (structures contiguous in helix order)
  streams: motion 1.02 MB, normal 671 KB (the target: octahedral + range coder)

Validates "crisp colours without overhead" exactly: colour is fully predicted by
the node anchor, so it costs 0 per-gaussian bytes and cannot bleed across a
structure boundary. Next: octahedral normals + range coder; decode-at-load +
anisotropic/edge-aware reconstruction; deform anchors -> animated anatomy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TzqvDqbFRzyx17EkLKBoZF
osint/torso: helix-anchor codec (x265-for-gaussians), measured — 2.8× + free crisp colour
@AdaWorldAPI AdaWorldAPI merged commit ce1906b into claude/fma-torso-splat Jun 24, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants