// screens/ba.jsx — B&A 3D 분석 / 시뮬레이션 function BAScreen({ persona, setRoute }) { const Icons = window.Icons; const [pos, setPos] = React.useState(50); // slider 0~100 (0=before, 100=after) const [view, setView] = React.useState("front"); const [overlay, setOverlay] = React.useState("volume"); const overlayOpts = [ { v: "volume", l: "Volume" }, { v: "lifting", l: "Lifting" }, { v: "tighten", l: "Tightening" }, { v: "texture", l: "Texture" }, ]; return (
06 · B&A 3D 분석 · 시뮬레이션

시술 전후 3D 변화량 비교 — Pore Control 패키지 시뮬레이션

시술 전(現) 이미지와 예상 결과를 3D 메쉬 기반으로 비교합니다. 부위별 volume·lifting·tightening 변화량이 정량 수치로 산출되어 상담·재방문 유도 자료로 활용됩니다.

{/* LEFT — Slider viewer */}
3D MESH · 124K points
{/* Comparison viewport */}
{/* Before image */}
{overlay === "volume" && } {overlay === "lifting" && } {overlay === "texture" && } {overlay === "tighten" && }
{/* After image — masked */}
{/* fewer heatmap markers for "after" */}
{/* Divider */}
{/* Labels */}
BEFORE
AFTER (12주 시뮬레이션)
{/* Region annotations (only on "after" side) */} {pos < 80 && (
NOSE
-32%
R-CHEEK
-24%
)}
{/* Slider control */}
BEFORE setPos(parseInt(e.target.value))} style={{ flex: 1, accentColor: "#FFF" }} /> AFTER
{/* Timeline scrub */}
{["W0", "W2", "W4", "W6", "W8", "W10", "W12"].map((w, i) => ( ))}
{/* RIGHT — Metrics */}

예상 변화량 (12주차)

시뮬레이션
{[ { l: "코 모공 밀도", b: 128, a: 87, unit: "/cm²", target: "감소" }, { l: "T존 광택 면적", b: 12.0, a: 7.4, unit: "%", target: "감소" }, { l: "피부결 점수", b: 76, a: 84, unit: "/100", target: "증가" }, { l: "탄력 지표 (cheek)", b: 80, a: 87, unit: "/100", target: "증가" }, { l: "홍조 면적 비율", b: 15.0, a: 10.2, unit: "%", target: "감소" }, ].map((m, i) => { const delta = ((m.a - m.b) / m.b) * 100; const goodDir = (m.target === "감소" && delta < 0) || (m.target === "증가" && delta > 0); return (
{m.l} {goodDir ? "▼" : "▲"} {Math.abs(delta).toFixed(1)}%
{m.b}{m.unit}
{m.a}{m.unit}
); })}

예상 시술 일정

{[ { w: "W0", date: "2026.06.04", tx: "Secret RF #1 · Peel #1", state: "예약확정" }, { w: "W2", date: "2026.06.18", tx: "Peel #2", state: "예약대기" }, { w: "W4", date: "2026.07.02", tx: "Secret RF #2 · Peel #3", state: "예약대기" }, { w: "W7", date: "2026.07.23", tx: "Secret RF #3 · Peel #4", state: "예약대기" }, { w: "W10", date: "2026.08.13", tx: "Secret RF #4 · B&A 측정", state: "예약대기" }, ].map((s, i) => (
{s.w} {s.date.slice(5)} {s.tx} {s.state}
))}
); } window.BAScreen = BAScreen;