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

1.9 KiB

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) 서빙