// screens/capture.jsx — 피부 촬영 가이드 (3~5장)
function CaptureScreen({ persona, setRoute }) {
const Icons = window.Icons;
const SHOTS = [
{ id: "front", label: "정면", angle: "0°", note: "양쪽 광대 동등하게", required: true, done: true },
{ id: "left45", label: "좌측 45°", angle: "-45°", note: "왼쪽 광대·턱선", required: true, done: true },
{ id: "right45", label: "우측 45°", angle: "+45°", note: "오른쪽 광대·턱선", required: true, done: true },
{ id: "left90", label: "좌측 측면", angle: "-90°", note: "헤어라인·귀앞", required: false, done: false, current: true },
{ id: "up", label: "턱 아래 (선택)", angle: "Tilt +15°", note: "코끝 모공", required: false, done: false },
];
const [current, setCurrent] = React.useState(3);
const doneCount = SHOTS.filter(s => s.done).length;
return (
02 · 피부 촬영 가이드
iPad 기반 다각도 촬영 — {SHOTS.length}장 (필수 3, 권장 5)
표준화된 얼굴 정렬 SW가 광원·각도·조명 일관성을 자동 보정합니다. 노이즈가 검출되면 재촬영을 요청합니다.
{/* LEFT — Live capture viewport */}
{/* Camera viewport */}
{/* Skin photo placeholder */}
{/* Face guide overlay */}
{/* Top HUD */}
REC · ISO 200 · 1/125s
조명 ✓ 각도 ✓ 포커스 ✓
{SHOTS[current].label} · {SHOTS[current].angle}
{/* Bottom guidance */}
가이드
{SHOTS[current].note}
{/* Shot strip */}
{SHOTS.map((shot, i) => (
))}
{/* RIGHT — Quality checks + preprocess */}
{[
{ l: "얼굴 정렬 (Yaw / Pitch / Roll)", v: 96, t: "good" },
{ l: "노출 (Exposure)", v: 88, t: "good" },
{ l: "조명 균일도", v: 82, t: "good" },
{ l: "초점 (Focus)", v: 91, t: "good" },
{ l: "모션 블러", v: 12, t: "good", inverse: true },
{ l: "안경/마스크 가림", v: 0, t: "good", inverse: true },
].map((q, i) => (
))}
분석 가능 상태
{doneCount}/3 필수 컷 완료 — AI 분석 시작 가능
{[
{ l: "얼굴 keypoint 추출", t: "MediaPipe Face Mesh", done: true },
{ l: "정렬·정규화", t: "Affine warp · 1024×1024", done: true },
{ l: "노이즈 보정", t: "Denoise + WB 조정", done: true },
{ l: "RGB → multi-spectral", t: "Chromophore 분리", done: true },
{ l: "Region segmentation", t: "코·볼·이마·턱·눈주변", done: false, active: true },
{ l: "Skin texture map", t: "표면 요철 추정", done: false },
].map((step, i) => (
{step.done ? :
step.active ? : {i+1}}
))}
);
}
window.CaptureScreen = CaptureScreen;