Files
behind_glass/docs/qa-cell-continuity/review.md
T
2026-10-06 12:16:46 +09:00

49 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 인접 셀 얼굴 단절 수정 QA
2026-09-13. 사용자 첨부에서 dog3(두 마리)의 얼굴 좌우가 인접 셀 사이에서 크게 어긋나는 문제를 재현하고 보정했다. Astra 설계·독립 검토, Luna 실제 코드 수정. 로컬 테스트용 사진이며 외부 게시하지 않는다.
## 놓친 조건과 원인
사용자 탭에서 읽은 실제 설정: dog3 / 조각 유리 / Grid8 / Distortion.90 / 굴곡+.65 / 광택.15 / 사진 확대1 / X0 / Y0 / Camera Offset.30. 창 크기는 885×920이었고 시점 이동 상태였다. 최초 화면을 dog3-before.png에 저장했다. 사용자의 정확한 카메라 이동 수치는 보존하지 못했으므로 이후 비교는 중앙과 재현 가능한 좌우 대각 드래그로 분리했다.
이전 QA는 dog3를 Grid12/.75, 구도1.3/.5/0으로 개별 조정했다. 사진을 전환해도 광학 설정이 유지되는 실제 사용 조건을 확인하지 않아 큰 셀과 작은 얼굴의 실패를 놓쳤다. 이번 통과 기준은 동일 Grid8/.90에서 기본 구도 사진을 전환해도 얼굴이 과도하게 분리되지 않는 것이다.
직접 원인은 독립 셀의 샘플 영역 사이에 생기는 간격이다. 색 혼합으로 두 결과를 연결해도 그 사이의 원본 얼굴 정보는 복원되지 않는다. 경계 폭이나 전체 블러만 늘리는 대신 샘플 중심의 과도한 이동을 제한했다.
## 구현 및 비교
수정 제품 파일: src/shaders/mosaic.frag 한 파일. C2 원본은 before-mosaic.frag, .18 후보는 cap18-mosaic.frag에 보존했다.
sampleCell에서 먼저 Distortion 보간을 적용한 샘플 중심을 계산하고, 원래 pane 좌표와의 차이를 cellSize로 나눈 d를 구한다. 조각 스타일만 각 축에 dSafe = d / sqrt(1 + (d / .12)^2)를 적용한다. 제한된 중심에서 기존 5탭 퍼짐을 샘플한다. 중심/이웃/일반 셀 내부 모든 경로에 같은 제한을 적용한다.
법선/곡면/광택 공유, 배율분포, .06색 연결/.16법선 연결, 촘촘 유리의 효과 계산과 Distortion0 우회는 유지했다. 새 텍스처 샘플이나 얼굴 검출, 사진별 자동설정은 추가하지 않았다.
| 후보 | 관찰 | 결정 |
|---|---|---|
| 기존C2 | 두 얼굴의 눈/코가 셀 경계에서 크게 이동하고 얼굴 일부가 생략됨 | 수정 대상 |
| D .18 | 얼굴 연결 개선, 큰 조각은 상대적으로 더 보존. 시점에 따른 경계 잘림 잔존 | 비교용 보존 |
| E .12 | 정면 차이는 D와 작지만 더 보수적으로 이동 제한. 좌우 대각 드래그에서 두 눈·코 식별 유지, 큰 도약 완화 | 최종채택 |
E 채택은 이번 요청의 얼굴 연결성을 우선한 판단이다. 주변의 큰 확대 조각과 레퍼런스의 정보량 차이는 약해지는 대가가 있다. 완전한 경계 연속성·모든 사진의 눈 보존을 보장하는 해법은 아니다. 각축 샘플 중심 이동은 .12셀 미만이지만 서로 다른 두 셀 중심 사이의 차이는 .24셀까지 남을 수 있고, 퍼짐 탭은 별도 오프셋을 갖는다.
## 실행한 QA
- D/E 각각 npm run build (tsc -b && vite build) 통과.
- 사용자 탭 원래 사진/설정/드래그 상태를 변경 전에 캡처. 제어 비교는 1280×720 중앙의 Grid8/.90/+ .65/.15, dog3 구도1/0/0.
- E dog3: 중앙, 좌상 방향 드래그(500,350→200,250), 초기화 후 우하 방향(300,350→650,450). 두 얼굴 눈·코 식별 유지, 창틀과 유리 정렬 확인. 모든 프레임을 분석한 것은 아니다.
- 390×844 dog3: 같은 설정과 구도에서 중앙 및 드래그(120,230→265,275) 확인. 실제 휴대폰 하드웨어 검증은 아니다.
- 5장 공통 광학 설정 유지하며 전환: Grid8/.90/+ .65/.15. 추가4장은 각 기본 구도1/0/0, 기존 sample은 앱 기존 구도2.4/-.10/-.35. dog1-common, dog2-common, dog3-cap12, dog4-common, sample-common 이미지 보존. 작은 얼굴·검은 털의 표정 가독성 한계는 남는다.
- dog1의 기존 확대 구도2.3/-.10/-.30에서도 D/E 비교: 눈·코 크기 차이는 남지만 주변 큰 면은 약해짐. dog1-before, dog1-cap18, dog1-cap12 이미지.
- dog3 곡면0/광택0에서 출력 확인, Distortion0 기존 우회 출력 확인, 촘촘 유리28/.85 실제 출력 확인.
- 브라우저 error 로그0. Astra 독립 정적 검토에서 모든 sampleCell 경로 동일적용, 강도후 제한, 기존 퍼짐과 샘플수 보존에 actionable 코드결함 없음.
이번에 Reeded/Frosted·영상·자이로·업로드 전체 회귀와 실제 GPU 성능 측정은 재실행하지 않았다. 직전 작업의 확인과 구분한다. Depth는 기존 sample에만 있는 수작업 테스트 근사이며 이번 변경은 Depth/2-pass 코드를 수정하지 않았다.
## 앞으로 유지할 회귀 기준
사진별 최적 설정만으로 통과시키지 않는다. 공통 광학 설정으로 추가 사진을 전환한 기본 구도, 작은 얼굴이 셀 경계에 걸리는 dog3, 좌우/대각 드래그, 모바일을 먼저 확인한다. 심한 잘림을 구도나 Grid 변경만으로 감추지 않는다.
## 실행
npm run dev -- --host 127.0.0.1 후 http://127.0.0.1:5173/. 이번 결과 화면은 dog3, Grid8/.90/+ .65/.15, 사진1/0/0으로 남긴다. 다음 개선이 필요하면 단순히 한도를 다시 키우기보다 인접 셀의 샘플 영역 간격을 직접 제어하는 방식을 별도 실험한다.