Files
behind_glass/docs/depth-validation.md
T
2026-10-06 12:16:46 +09:00

3.3 KiB
Raw Blame History

Depth 수정 검증 기록

Stage 1 — Glass OFF 선행 검증

사용자가 제공한 public/assets/sample-pet.png와 동일 크기의 수작업 sample-pet-depth.png를 사용했다. 테스트 depth는 AI 추정이나 실측 데이터가 아니다.

브라우저 No Glass에서 Depth Scale 0.3, 실제 camera x=-0.6/+0.6, z=3, canvas 폭 985 CSS px 조건으로 확인했다. 같은 카메라 조건에서 scale=0 대조군도 확인했다. 사진의 코/얼굴/몸이 서로 다르게 움직이는 것을 좌우 화면에서 관찰했고, Depth 보기의 코와 눈 영역이 사진 방향과 일치하는 것을 확인했다.

지점 depth .3 왼쪽 NDC x depth .3 오른쪽 NDC x depth 0 왼쪽 NDC x depth 0 오른쪽 NDC x
코 .116 .004 .054 .055
눈 사이 중앙부 .069 -.004 .031 .031
몸 -.125 -.154 -.137 -.134

깊이로 추가된 좌우 이동은 (오른쪽-왼쪽 at .3) - (오른쪽-왼쪽 at 0)으로 계산한다. NDC에 canvas 폭/2를 곱하면 CSS px이다. 코와 몸의 추가 상대 이동 차이는 약 39.9 CSS px이다. 화면 수치는 NDC 소수 3자리 반올림이므로 근삿값이다.

초기 진단의 'eyes'는 실제 양쪽 눈 대신 눈 사이 중앙부였으므로, 이를 실제 눈의 측정 결과로 보고하지 않는다. 최종 진단에서는 양쪽 눈 좌표를 따로 사용해야 한다.

Astra는 위 실제 화면 관찰과 flat 대조 결과를 근거로 Stage 2 착수를 승인했다. 이 검증 후에만 RenderTarget/Glass 연결 작업을 시작했다.

최종 검증

Stage 2 후 같은 사진과 실제 양쪽 눈 좌표로 확인한 CSS pixel 진단 결과다. 화면 크기가 달라 앞선 Stage 1과 절대 픽셀 크기는 다르다.

지점 .3 왼쪽 .3 오른쪽 0 왼쪽 0 오른쪽
코 542.938 501.965 520.336 520.504
왼쪽 눈 506.793 479.203 493.428 493.445
오른쪽 눈 546.265 519.088 530.441 530.820
몸 454.311 443.692 449.908 450.902

Depth로 추가된 좌우 이동은 코 -41.141px, 왼쪽 눈 -27.607px, 오른쪽 눈 -27.556px, 몸 -11.613px다. 코와 양쪽 눈 평균 차이는 약 13.56px, 코와 몸 차이는 약 29.53px다. Depth 데이터/실제 카메라의 투영 진단값이며 GPU 메시 삼각형 보간 및 화면 특징점 추적과는 작은 차이가 있을 수 있다.

확인한 항목:

  • 사용자 사진이 RenderTarget을 통해 Mosaic/Reeded/Frosted로 렌더됨.
  • Mosaic 강도 0 Final과 No Glass의 위치·색상이 육안상 일치. 픽셀 단위 이미지 차이 검사는 수행하지 않음.
  • Depth Scale 0/.3, camera offset ±.6, reset, 시점 이동, 효과 전환.
  • 별도 RGB와 Depth PNG 업로드 성공. 비율이 다른 Depth 입력은 오류 표시.
  • 390×844 모바일 viewport에서 가로 넘침 없음(document width 375, viewport width 390; 세로 스크롤바 포함). 물리적 터치 기기 테스트는 아님.
  • 최종 효과 전환 중 브라우저 error 로그 빈 배열 확인. TypeScript와 Vite production build 통과.

미검증: 실제 영상 재생/loop, 실기기 gyro/권한 UI, 60fps 실측. 영상·자원 수명·요청 경쟁은 코드 검토했으며 모든 경쟁 타이밍을 런타임 테스트했다고 주장하지 않는다.