cockpit/torso: anisotropic surface-fit splat + per-node SoA switch + /torso-map#53
Conversation
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
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
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
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.
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],quataligns 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 itsnode_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 addressTorsoMap.tsx: click a gaussian → itsnode_row→ O(1) into the SoA → FMA label + partonomy breadcrumb; the structure list highlights its gaussians (graph → splat). Theosint-cad-splatthesis 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-map— new; the pick-to-FMA map.Verification
tsc clean. splat3d frames verified by eye. The
/torso-mapraycast-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