Geometry
Shared-topology geometry compression
Reuse mesh connectivity and UVs while transmitting compressed absolute vertex positions.
Technique
The codebase calls the technique shared-topology geometry compression. The authoring interfaces label it Geometry Compression, while the packet modes are IndependentMesh and PositionUpdate.
It is not delta or residual coding. Dependent packets contain absolute quantized positions, so a lost update does not create accumulated numerical drift.
Topology detection
Each OBJ is converted into a canonical render mesh. Position/UV corner pairs are deterministically expanded so UV seams produce stable render vertices. A 64-bit FNV-1a identifier covers:
- Canonicalization schema version.
- Vertex and triangle counts.
- Exact triangle index order and winding.
- UV presence and 12-bit fixed-point UV values.
- Normal presence.
Positions and normal values are excluded. Matching hashes are followed by an exact comparison of canonical indices, counts, attribute presence, and quantized UVs.
The implementation requires consistent vertex, face, winding, and UV ordering. Equivalent meshes that have been reordered are treated as a topology change; general correspondence recovery is not currently attempted.
Reference and update packets
An IndependentMesh contains a complete Draco mesh. Following matching frames become sequential Draco point clouds containing one three-component position for every canonical render vertex.
The decoder reuses:
- Triangle indices and winding.
- UV coordinates and vertex-to-UV mapping.
- Canonical vertex layout.
Dependent packets carry no indices, UVs, or normals. Normals are reconstructed as area-weighted vertex normals from the updated positions and cached triangles. Arbitrary colours, tangents, skinning weights, and semantic attributes are not part of the current format.
Sequential Draco encoding is required because point order defines vertex correspondence. KD-tree encoding was rejected after reordering points in every controlled test frame.
New reference conditions
A new complete mesh is emitted when:
- Compression is disabled.
- The sequence or topology window starts.
- Topology, winding, UV identity, counts, or attribute presence changes.
- The configured maximum geometry-frame interval is reached.
- An independently addressable MP4 fragment begins.
A configured interval of N permits one reference plus at most N - 1 updates. 1 produces only independent meshes; 0 leaves the window unbounded until another condition forces a reference. Desktop and Quest streaming presets currently use 60- and 30-frame limits respectively.
Seeking and recovery
Reference packets carry OpenVolumetric and MP4 keyframe flags. Seeking resolves backward to the appropriate full topology mesh, then decodes forward to the target. Fragmented output always starts an addressable fragment with aligned video and complete-geometry access points.
The decoder validates generation, topology ID, keyframe number, vertex count, and triangle count before applying an update. A missing or mismatched update is dropped. A Draco decode failure clears the active topology and recovery occurs at the next complete mesh; playback continues rather than restarting or crashing.
Controlled measurements
A 150-frame, five-window fixture with 6,479 render vertices and 12,000 triangles produced:
| Encoding | Geometry payload |
|---|---|
| 150 independent sequential Draco meshes | 16,982,258 bytes |
| Five complete topology references | 534,331 bytes |
| 145 sequential position updates | 3,149,270 bytes |
| Combined topology-aware payload | 3,683,601 bytes |
That is a 78.31% reduction against independent sequential meshes. A fragmented configuration with additional boundary references reported 77.23%.
Sequential point-cloud decoding took 20.25 ms across the controlled 150-frame experiment, approximately 0.135 ms per frame. RMS component error was approximately 0.000029, with a maximum of approximately 0.000051 in source-mesh units.
These are controlled-fixture measurements, not a universal compression claim. A 3,627-frame reconstructed capture changed topology or UV layout every frame, correctly produced no reusable updates, and achieved no topology-reuse saving. Broader dataset and device evaluation remains in progress.