3.0 KiB
3.0 KiB
하조대 해안 구현 계획
설계
사용자가 요청한 하조대 지형 추출, 해안선과 바다 구현을 수행한다. 기존 Three.js/SunCalc와 지형 전처리 패턴을 재사용한다. 기본 장면은 하조대이며 관악산은 링크로 유지한다. 실측하지 않은 관측점은 임시값으로 표시한다.
선택: 관측점 중심 3×3km DSM을 추출하고 OSM 해안선으로 육지/바다를 구분한다. 단순 바다 평면만 겹치는 방법은 높이 0인 해변을 침수시키므로 제외한다. 해안 근접 형상을 위해 10m로 재표본화하되 원본 정확도는 30m급으로 명시한다. 해안 마스크는 2m 간격이며 원본 OSM 정확도를 높이는 것이 아니다. 해안에서 30m 이내 표면은 시각적으로 해수면에 접속하며 정밀 지반/수심 데이터로 취급하지 않는다.
바다는 지구 곡률을 반영한 메시와 절차적 물결/태양 반사를 사용한다. 바다 이동은 차단한다. 건물·등대 모델링, 실제 날씨/조석, 정밀 암반은 범위 밖이다. 날짜·시간·눈높이·기존 관악산 기능을 유지한다. 데이터와 렌더링 상수는 기능별 constants 파일에 둔다.
작업
scripts/prepare-hajodae.py: 기존 rasterio/pyproj로 DSM, OSM 마스크/해안선 추출; public/terrain/hajodae/에 원본 URL·해시·보정 범위 포함.src/constants/locations.ts,src/constants/coast.ts,src/scene/coast.ts: 장소 설정, 경계 판정, 바다/해안 재질. 기존 terrain/world/main/UI에 최소 통합.- 테스트: 해변 원점이 육지, 동쪽 바다/남쪽 곶 구분, 바다 차단, 지형과 해수면 곡률, 위치 전환 데이터 정합.
- 전체 기존 테스트 및 빌드, 브라우저에서 하조대 낮/일출·관악산 검증. 출처 페이지와 README 갱신.
판단 기록
- Git 저장소가 없는 기존 작업 폴더에서 직접 진행하며 다른 변경을 되돌리지 않는다.
- 사용자 요청과 앞선 대화로 구현 범위가 정해져 있으므로 추가 승인 없이 진행한다.
- 리뷰: 해안에 인접한 바다 칸 -2m가 육지 삼각형을 수면 아래로 당기는 문제 확인. 숨겨진 바다 칸을 0m로 변경하고 (52,0) 지점과 전체 격자 비음수 검증을 추가했다.
- 브라우저: 해안 조감, 해변 눈높이 낮/일출 전후 표시 확인. 조감의 원거리 물결 앨리어싱은 화면 미분값으로 주파수를 감쇠해 수정했다.
- 최종 검증:
npm test33/33,npm run build통과. 기존 500KB 번들 크기 경고는 남아 있다. 관악산 건물 조감 정상, 링크로 하조대 복귀 정상. 하조대 동쪽 전진 15초 후 52m에서 멈추며 추가 3초 입력에도 위치 유지. 내장 브라우저 Pointer Lock은 지원되지 않지만 기존 드래그/키보드 대체 조작으로 이동 검증했다. - 캡처:
data/references/hajodae/implemented-overview.png. 배포용 데이터 총 402,503 bytes(설명 HTML 제외).