- 텍스트(측점/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>
33 lines
1.4 KiB
Markdown
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` (이 파일)
|