# Superpoint Story Views ## What A Superpoint Is A superpoint is a local over-segmentation unit in a point cloud: nearby points with similar geometric structure are grouped before the downstream network learns semantics. This delivery bundle now uses `segmentator` as the default source and still supports three label sources: - `existing`: the current `superpoint.npy` already stored with the dataset. - `segmentator`: the PoVo-style reference logic, namely `knn_graph(points, k=50)` followed by `segmentator.segment_point(points, normals, edges, kThresh=0.01, segMinVerts=20)`. - `canonical`: the older voxel-plus-normal-bin deterministic fallback kept only for comparison. ## What The Blender Views Mean These are analysis images, not training-result images: - `Semantic-Family Superpoints`: each superpoint inherits the hue family of its dominant semantic label, while neighboring superpoints in the same semantic region vary only in saturation/value. - `Superpoint Blocks`: each superpoint gets a stable pseudo-random color. - `Superpoint Boundary`: orange marks points whose local `k`-NN neighborhood mixes multiple superpoints strongly. - `Semantic Boundary`: blue marks points whose local `k`-NN neighborhood mixes multiple semantic labels strongly. - `Boundary Relation`: red = both boundaries, orange = superpoint-only, blue = semantic-only, white/gray = neither. - `Focus Superpoint`: crops to one representative superpoint and shows its local shell. ## How Boundary Handling Works The boundary visualization is point-based rather than raster edge-based. For each sampled point, we look at its `k` nearest neighbors: - if at least `SP_BOUNDARY_RATIO` of those neighbors belong to a different superpoint, the point is marked as a superpoint boundary point; - if at least `SEG_BOUNDARY_RATIO` of those neighbors belong to a different semantic segment, the point is marked as a semantic boundary point. This gives a boundary band in point-cloud space, which is much more stable than trying to draw a thin 2D line after projection. ## White Background White background is supported directly and is now the default theme for the bundle and the shell wrapper. The shell wrapper now also defaults to `SOURCE=segmentator` and writes into `outputs/superpoint_delivery/story_segmentator_white`. Use `BACKGROUND_THEME=white` in the shell wrapper or `--background_theme white` in the Python entrypoint. ## Commands Generate PoVo-style segmentator labels without overwriting dataset files: ```bash cd /mnt/data/AODUOLI/PAMI2026 python3 superpoint_delivery_bundle.py generate \ --room Area_1/office_1 \ --output_root /mnt/data/AODUOLI/PAMI2026/outputs/superpoint_delivery/generated_segmentator ``` Render white-background story views from the reference-method labels (default behavior, now including the semantic-family view first): ```bash cd /mnt/data/AODUOLI/PAMI2026 bash run_blender_superpoint_story.sh ``` Render white-background story views from the current dataset labels only when you explicitly need that comparison: ```bash cd /mnt/data/AODUOLI/PAMI2026 SOURCE=existing BACKGROUND_THEME=white OUT_ROOT=/mnt/data/AODUOLI/PAMI2026/outputs/superpoint_delivery/story_existing_white bash run_blender_superpoint_story.sh ``` ## Output Layout Outputs are written under the chosen output root, for example: - `/mnt/data/AODUOLI/PAMI2026/outputs/superpoint_delivery/story_segmentator_white//` - `/mnt/data/AODUOLI/PAMI2026/outputs/superpoint_delivery///` Each room contains: - individual PNGs for the analysis views; - `*_story_grid.png` as a contact sheet; - `assets/*.npz` Blender-ready render assets; - `*_summary.json` with the sampled statistics and boundary counts.