Files
GhiVideo_v4/docs/history/2026-06-24_1758_라벨팝업-속도적응평활-1배속떨림제거.md
T
b23042andClaude Fable 5 d38b842e8d GhiVideo 소스 복제 — v4 작업 시작 기준
기존 GhiVideo 저장소 HEAD의 트래킹 소스 362개 파일을 복제.
(node_modules·storage·빌드 산출물·대용량 미디어는 .gitignore 규칙대로 제외)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 14:32:51 +09:00

34 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 1배속에서 POI 라벨·팝업 떨림 제거 — 속도 적응형 평활(One Euro 방식)
**날짜**: 2026-06-24
**수정 파일**: `client/src/components/overlay/StationOverlay.tsx`
## 증상
빠른 배속에선 POI 라벨/팝업이 부드러운데, **1배속(느린 이동)에선 흔들려 보임**.
## 원인
라벨 화면좌표에 **일정 진폭의 떨림(GPS/투영 잔여 노이즈)**이 있음. 빠른 배속은 프레임당 이동량이
커서 떨림이 묻히고, 1배속은 이동이 작아 떨림이 도드라짐. 화면 EMA(`emaAlpha`)가 1.0(평활 거의 없음)
이라 그대로 노출됨.
## 조치 — `smoothStep` 을 속도 적응형으로(One Euro 필터 방식)
고정 alpha → **속도에 따라 가변**:
- 속도 벡터를 평활(`vx,vy` EMA, β=0.25). 떨림은 매 프레임 방향이 번갈아 → 평활속도≈0,
실제 이동은 방향 일관 → 평활속도 큼. (떨림과 실제 이동을 속도로 구분)
- `alpha = min(maxAlpha, MIN(0.12) + (maxAlpha0.12)·min(1, speed/SPEED_REF(0.01)))`
- 정지/떨림(speed≈0) → alpha≈0.12 → **강한 평활(1배속 안정)**.
- 빠른 이동(speed≥0.01) → alpha→maxAlpha(패널 EMA α=1.0) → **즉시 추종(빠른 배속 지연 없음)**.
- 이상치 거부(REJECT_DIST)·연속한계는 유지. `DispPos` 에 vx/vy 추가.
## 효과
- 1배속·먼 POI(떨림 잘 보임) → 강하게 평활돼 안정.
- 가까운/빠른 이동 POI → 즉시 추종(지연 없음).
- 팝업도 라벨 displayed 좌표를 따라가므로 함께 안정.
- 패널 **EMA α** 슬라이더 = 빠를 때의 추종 상한(기본 1.0).
## 검증
- `npm run build -w client` (node20) tsc + vite build 통과.
**소요 시간**: 약 10분
**Context 사용량**: input ~960k / output ~4k tokens