mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-29 08:13:14 +00:00
ad113e1283
The coarse motion threshold (15 px vs the 3 px still floor) followed the per-frame "did the camera move" test directly. During a slow drag on a janky main thread — the 66-model web session at 20 fps, mouse events coalesced — some frames see no camera change, so the cull alternated between thresholds every few frames: 84% of the visible set vanishing and reappearing (139k <-> 22k objects in the log), with a full visible-set re-upload at each flip feeding the very jank that caused the gaps. On screen it read as the model sporadically jumping and returning while orbiting slowly, easing as streaming and caching settled — which is exactly how it was reported. The motion state now latches: any camera movement arms it, and it only drops after 250 ms of stillness, with the render loop kept alive over the hold so the fine-threshold re-cull actually runs in an on-demand loop. A drag degrades once at its start and restores once shortly after it ends. Measured with a deliberately gappy scripted drag: two transitions for the whole drag where each 120 ms pause previously flipped it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>