# 장소 정보·콘텐츠 수명 시험

2026-10-02. 구역 로딩과 시대 전환에 핫스팟·설명 패널을 연결했다. Three.js BVH·Rapier와 PlayCanvas Ammo에서 아래 기능을 확인했다. [브라우저 JSON](measurements/2026-10-02/content-lifecycle.json), [재현 경로](measurements/2026-10-02/content-lifecycle-driver.js). 측정 릴리스는 `local-4d5905679d2e-6a26beb04091`이며 엔진 속도 비교는 아니다.

## 데이터와 동작

핫스팟은 월드 JSON의 위치·시대·최대 거리·`contentId`로 정의한다. 분할 장면에서는 `chunkId`로 소유 구역을 지정한다. 엔진 객체를 콘텐츠 데이터에 저장하지 않는다. 구역이 준비됐고 시대가 맞을 때 사용할 수 있으며, 실제 버튼 표시는 거리·화면 투영·충돌 메시의 가림 판정도 통과해야 한다. 검사 JSON의 `available`만으로 화면에 보인다고 판단하지 않는다.

설명은 콘텐츠 JSON에서 읽고 표현 종류·확신 수준·출처와 이미지를 패널에 표시한다. 시험 자료는 `illustrative`·`not-applicable`로 표시한다. 문자열은 `textContent`로 출력한다. 역사 자료의 정확성과 출처 검수 자체를 시험한 것은 아니다.

패널이 열리면 일반 이동을 막는다. 닫기·Esc·시대 전환·장면 변경 시 패널 상태와 이미지 URL을 정리한다. 닫은 뒤 키 이동은 다시 가능하며 마우스 잠금은 사용자가 화면을 클릭해 다시 얻는다. 이미지 요청 실패 시 설명·출처와 실패 안내를 유지한다.

## 확인 결과

| 확인 항목 | BVH | Rapier | Ammo |
|---|---|---|---|
| 시작 구역 정보 표시·먼 구역 정보 숨김 | 통과 | 통과 | 통과 |
| 설명·출처·이미지 표시 | 통과 | 통과 | 통과 |
| 패널 중 이동 차단·Esc 후 이미지 URL 정리 | 통과 | 통과 | 통과 |
| 닫은 뒤 끝 구역까지 이동·이전 구역 정보 제거 | 통과 | 통과 | 통과 |
| 새 구역 설명 열기·장면 변경 시 이전 패널 정리 | 통과 | 통과 | 통과 |
| 시대별 정보 교체·전환 시 패널 정리 | 통과 | 통과 | 통과 |
| 벽 뒤 버튼 가림·거리 밖 버튼 숨김 | 통과 | 통과 | 통과 |
| 이미지 실패 안내·다시 열어 이미지 복구 | 통과 | 통과 | 통과 |

브라우저 경로의 JS 예외는 없었다. 이미지 실패 시험에서는 의도적으로 네트워크 오류를 발생시켰다. 콘솔에 아무 오류도 없었다는 뜻은 아니다.

[Three.js 패널](measurements/2026-10-02/content-three-custom-bvh-capsule.png), [PlayCanvas 패널](measurements/2026-10-02/content-playcanvas-ammo-dynamic-capsule.png). PlayCanvas 캡처는 이미지 표시를 기다린 뒤 최종 릴리스 `local-4d5905679d2e-f6ec268ff18a`에서 다시 저장했다. 캡처의 상주 구역은 촬영 시점에 따라 달라 같은 렌더링 조건 비교용이 아니다.

최종 릴리스에서 PlayCanvas의 구역 왕복·설명 이미지, Three.js BVH의 패널 중 이동 차단·닫은 뒤 이동 복귀, Rapier의 최초 선택 로딩을 추가 확인했다. [최종 확인 JSON](measurements/2026-10-02/final-capabilities-sanity.json). 전체 기능 경로의 근거는 위의 별도 측정 JSON이며 최종 확인은 이 세 경로에 한정한다.

## 범위와 제한

- 패널 중 일반 이동이 막혀서 사용자가 패널을 연 채 소유 구역 밖으로 이동하는 경로는 발생하지 않는다. 구역 준비 상태 변경에 따른 사용 가능 판정은 공통 단위 검사로, 장면·시대 변경의 패널 정리는 실제 브라우저로 확인했다. 향후 자동 이동·멀티플레이 이동을 붙이면 별도 경로 검사가 필요하다.
- 가림은 충돌 메시를 기준으로 한다. Gaussian 영상의 작은 틈과 투명도, 원본의 비침을 픽셀 단위로 판별하지 않는다. 콘텐츠 판정과 촬영 자산의 품질 문제는 별도 검수 대상이다.
- 모바일 터치·스크린리더 사용성·대량 핫스팟·실제 역사 콘텐츠 검수는 아직 확인하지 않았다.
- 분할 생성기는 기존 `stream.json`의 핫스팟을 보존한다. 경계를 바꾸면 소유 구역과 위치를 다시 검토해야 하며 잘못된 참조는 월드 검증에서 거부한다.
