One Points3D Log, Fully Traced
- The caller constructs
Points3D::new(positions).with_colors(colors)and passes a shared reference toRecordingStream::log. - Generated archetype code exposes
SerializedComponentBatchvalues throughAsComponents. Positions and colors are already Arrow arrays with semantic component descriptors. - The stream creates a time-bearing
RowId, snapshots thread-local timeline state, builds aPendingRow, and pushes it into a cloneableChunkBatcher. - A batching thread linearizes commands, groups compatible rows, and emits
Arrow-backed
Chunkvalues when time or size thresholds fire. Input and output queues share a configured byte-in-flight budget. - A forwarding thread converts chunks to log messages and hands them to a
file, memory, stdout, gRPC, or other
dyn LogSink. Transport moves Arrow record batches rather than reconstructing every point. - The receiver validates the chunk and
EntityDbinserts it intoChunkStore, updating temporal/component indexes, query caches, entity metadata, and subscribers from the resulting events. - On a viewer frame, the spatial view asks
Points3DVisualizerwhich components it requires. A range/latest-at query returns position chunks and optional colors, radii, labels, and annotations for the selected time. - The visualizer memoizes CPU interpretation, fills point/line builders, and
hands draw data to
re_renderer, which uploads or reuses GPU resources and recordswgpucommands.
The convenient call does not hide a second semantic model. The same component descriptors remain recognizable throughout the pipeline.