Multi-Procedure Stack
Simulate realistic treatment plans where order matters: structural bone/cartilage first, soft tissue filler last.
Stacking Order (default)
1. Structural (rhinoplasty, genioplasty, orthognathic visual)
2. Skin / resurfacing (subtle tone, not shape)
3. Volume (filler, fat graft)
4. Surface (lip contour, fine lines)
Never simulate filler before structural — it misleads patient expectations.
Stack Definition (JSON)
{
"patient_id": "demo_001",
"base_image": "before.jpg",
"stack": [
{"procedure": "rhinoplasty", "params": {"bridge_lift": 10, "tip_rotation": 5}},
{"procedure": "chin_projection", "params": {"forward_mm": 4}},
{"procedure": "lip_filler", "params": {"upper_volume": 12}}
]
}
Workflow
- [ ] Load base image
- [ ] For each step in stack:
apply sim → save intermediate `step_N.jpg`
- [ ] Generate strip: before | step1 | step2 | final
- [ ] Generate cumulative morph (before → final)
- [ ] Export stack manifest JSON for reproducibility
Script
python scripts/stack_preview.py plan.json --output-dir results/
Output:
results/
├── step_0_before.jpg
├── step_1_rhinoplasty.jpg
├── step_2_chin.jpg
├── step_3_lip.jpg
├── strip_comparison.jpg
└── manifest.json
Consultation UX
Present as 「分步效果」 not just final:
- Patients understand each contribution
- Reduces "overdone" requests when they see cumulative drift
- Doctors can toggle steps on/off in UI (future: build React slider from strip frames)
Creative: Package Presets
| Package | Stack |
|---|---|
| 侧颜四件套 | nose + chin + jawline + lip subtle |
| 幼态脸 | cheek filler + lip + brow lift subtle |
| 男士轮廓 | jaw angle + chin + nose bridge only |
Store presets in presets/ as JSON; agent copies and tunes params per patient.