A camera rig orbits the scene; its translucent frustum (drawn with THREE.CameraHelper) is the region the detector can currently "see". Each object carries a small cloud of surface keypoints, rendered as one instanced point cloud. Every frame, each object's centre is tested against the rig's view frustum and against an angle/distance falloff that mimics a real sensor losing confidence toward the edge of the lens and at range.
score = (1 − angle/halfFOV) · (1 − dist/farPlane)
score *= 1 + noise · (rand() − 0.5) noise = sensor-noise slider
detected = inFrustum AND score ≥ threshold
- Confidence threshold — the decision gate: an object only earns a bounding box and lit keypoints once its score clears this bar, just like a real detector's confidence cutoff.
- Scan speed — how fast the rig orbits, sweeping the frustum across the scene.
- Sensor noise — injects random jitter into every score, simulating motion blur or poor lighting; push it up and detections start flickering in and out even for objects dead-centre in frame.
- Edge grid — toggles the viewfinder overlay attached to the rig, standing in for an edge-detection pass on the live sensor image.
This mirrors a real single-shot detector pipeline: a region proposal (the frustum) narrows down candidates, per-candidate confidence scoring decides what survives, and only detections above the gate get drawn and reported.