Files
GhiVideo_v4/docs/history/2026-07-13_1358_세그먼트전환-라벨깜빡임-구조수정.md
T
b23042andClaude Fable 5 7d51ba9945 표고 체계 정비·설정 파일 단순화·선형 클리핑·시연 준비
- 타원체고 기준 자동 변환: route.json ellipsoidal_height 선언 시 드론 고도(CSV 정표고)를
  영상 메타(djmd 6.6 타원체고)와의 차(지오이드고 자동 산출)만큼 보정, 세그먼트 전환에도 유지
- KML 표고 파이프라인: 좌표 고도(z) 사용(POI/측점), *_byDem.kml 자동 생성(DEM 조회·높이 속성 포함)
  + 로더의 _byDem 우선 규칙, 선형중심선(LineString) 로딩·경로표고 앵커
- 설정 파일: camera.json/display.json/route.json 단순 이름 인식, 화면표시 옵션 PC 저장/자동 적용,
  초기화 버튼을 환경설정 파일 기준 복원으로 변경, 저장 파일명 단순화
- 선형 표시: 표출된 마지막 측점까지 클립(경계 세그먼트 절단 + 관통 현 처리 — 구간 실종 수정)
- 스테이션바: 시점(0k000) 마크(실통과 위치), 노선밖 프레임 통과 오인 방지, 커서 배지 1m 단위,
  배너 연장/소요 실측값(측점 체이니지·영상 길이 합) 우선
- 세그먼트 전환 라벨 깜빡임 구조 수정(캐시 초기화·최근접 키 조회·이중 재계산 제거) +
  사전계산 프레임 불변값 호이스팅(재생 지연 해소)
- UI: 슬라이더/값 입력칸 휠 조절, 패널 버튼 위치 정렬, 저장 버튼 중복 제거, dev_mode(route.json)로
  영상제어 UI 표시 제어, 지오이드 최대 200, 이격거리 측점 동반 적용
- 시연: start-demo.bat + docs/DEMO.md
- docs/history: 작업 이력 30건

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 20:37:46 +09:00

37 lines
1.9 KiB
Markdown

# 2026-07-13 두 번째 영상 POI 깜빡임 — 구조적 원인 3건 제거
**소요 시간**: 15분
**Context 사용량**: input 1500k / output 6k tokens
## 문제 (제보)
두 번째 영상(세그먼트 2) 재생 시 POI 라벨 깜빡임. 부하/불필요 동작 점검 요청.
## 원인 3건 + 수정 — StationOverlay.tsx
### 1. 세그먼트 전환 시 이전 세그먼트 캐시 혼재 (핵심)
- 라벨 사전계산이 "옛 맵 복사 후 덮어쓰기" 방식 — 세그먼트 전환 시 **이전 세그먼트의 캐시**
(같은 프레임 번호, 다른 위치)가 남은 채 청크가 도착할 때까지 신·구 항목이 섞여
라벨 집합이 프레임마다 뒤바뀜(깜빡임)
- 수정: frames 참조가 바뀌면(전환) 복사 없이 **빈 맵으로 시작** + labelMapRef 즉시 교체.
같은 데이터의 재계산(슬라이더 변경)만 기존처럼 복사
### 2. 캐시 조회의 정확일치/스테일 폴백 교대
- 조회가 `floor(estFrame) 정확일치 ?? currentFrameNumRef(4Hz 갱신 스테일 키)` — 60fps 중
~1/6 프레임은 정확일치, 나머지는 최대 250ms 뒤처진 폴백 키 → **서로 다른 캐시 항목을
교대로 그려** 이동 중 경계 POI 가 깜빡임
- 수정: 캐시 키 배열(labelKeysRef, 오름차순)을 두고 **최근접 키 이진탐색**으로 조회 고정
(채워지는 중엔 인접 ±3 키 폴백)
### 3. 전환 시 사전계산 이중 실행 (불필요 부하)
- storeFrames 가 즉시 effect·디바운스 effect 양쪽 deps 에 있어 전환마다 풀 재계산 2회
- 수정: 디바운스 effect 에서 storeFrames 제거(즉시 effect 전담)
### 보조
- 프레임 ingest 시 currentFrameIdx/NumRef 초기화 — 전환 직후 사전계산 시작 구간이
이전 세그먼트 끝 인덱스(스테일)로 잡히는 것 방지
## 검증
- tsc+vite 빌드 통과, 새 번들(index-1zg4kXAW.js) 서빙