Files
dronevideoplayer/docs/history/2026-04-01_StationOverlay-렌더링분석.md
minsung 2aae3d1c0d feat: StationOverlay 렌더링 최적화 및 스무딩 적용 close #1
- 텍스트(측점/POI) 전 프레임 사전 계산 Map (requestIdleCallback 백그라운드)
- 드론 데이터 이동 평균 스무딩 (smoothFrame ±N프레임)
- 30fps→60fps 프레임 간 선형 보간 (performance.now() 기반)
- EMA(지수이동평균) 표시 위치 스무딩 (α=0.01 기본값)
- 글씨 2배 크기, bold, strokeText 테두리, 배경 박스 제거
- 카메라 파라미터 패널에 smooth/EMA α 슬라이더 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 15:11:39 +09:00

33 lines
1.4 KiB
Markdown

# StationOverlay 렌더링 끊김 분석 + history 자동화 규칙 추가
**소요 시간**: 약 15분
**Context 사용량**: input ~8k / output ~3k tokens
**이슈**: 없음
---
## 작업 내용
### 1. StationOverlay 렌더링 파이프라인 분석
- `client/src/components/overlay/StationOverlay.tsx` 코드 분석
- 렌더링 구조: RAF 루프(60fps) + renderCache useEffect(드론 프레임 변경 시)
- 끊김 원인 파악:
- `panelDroneFrame` 상태 변경 시 `useEffect`에서 수백~수천 개 좌표 변환(`toCameraCoords` + `pixelFromCamera`)이 메인 스레드에서 동기 실행
- 계산이 16ms 초과 시 RAF 프레임 드롭 → 뚝뚝 끊김
- 측정 방법 제안: `performance.now()` 로깅으로 캐시 빌드 시간 측정
| 항목 | 실제 |
|------|------|
| RAF draw 횟수 | ~60fps (항상) |
| 캐시 재빌드 횟수 | ~30fps (드론 프레임 변경 시) |
| 끊김 원인 | 캐시 빌드 시 메인 스레드 블로킹 |
### 2. history 자동화 규칙 CLAUDE.md 추가
- 사용자 기대: 작업 완료 시 날짜+주제별 history 파일 자동 작성
- 현재 훅은 "리마인더/가드"만 담당, 파일 생성은 Claude 몫
- CLAUDE.md 상단에 "작업 완료 시 필수 — 히스토리 기록" 섹션 추가
## 산출물
- `CLAUDE.md` — 히스토리 기록 규칙 섹션 추가
- `docs/history/2026-04-01_StationOverlay-렌더링분석.md` (이 파일)