v0.3.0
Fast follow-on to v0.2.0 focused on performance hardening, a new 3DGS evaluation feature, and an architecture cleanup.
Highlights
ca geometry-evaluate --splat-method ellipsoid— opt-in splat-aware ellipsoid surface sampling for 3DGS PLY exports. Readsscale_0..2(log-σ) androt_0..3(wxyzquaternion) and surface-samples each splat. Default remains--splat-method centers;--splat-samples K(default 8) sets points per splat. Vectorized vianp.einsum.benchmarks/3dgs/synthetic-room/now ships the full 3DGS PLY schema so the new sampler can be exercised against the bundled fixture without external data.map_evaluategraduates toca.core— adoptedNNThresholdMapEvaluateStrategyand its contract now live inca/core/map_evaluate.py. CLI no longer reaches into experiments. The reference-freevoxel_entropylane stays underca/experimentsuntil a single GT-free metric is settled.
Performance
- Vectorize PLY vertex parsing +
ca splittile bucketing. ASCII PLY uses onenp.loadtxt; binary little-endian PLY usesnp.frombufferwith a structured dtype. Tile bucketing runsnp.unique(axis=0)+np.argsort. Real 3DGS (1M+ splats) and city-scaleca splitruns drop from ~1 minute to well under a second. - Vectorize voxel-based
ca ground-evaluate. The four set-of-tuples comprehensions per evaluation are replaced bynp.unique(axis=0)+np.intersect1don a void view of each row.
See CHANGELOG.md for the full list of merges. PyPI install:
pip install --upgrade cloudanalyzer==0.3.0