# 花朵煎蛋 · Blender MCP 模型实验

根据用户参考图制作两个独立的花朵形煎蛋。轮廓由参考图手工取点，再用 Catmull–Rom 插值生成闭合蛋白网格；蛋黄采用扁球体。模型有真实厚度，蛋白、蛋黄、背景、灯光和相机均可编辑。

## 文件

- `flower-eggs.blend`：独立 Blender 工程，仅包含 `Flower Eggs` 场景。
- `flower-eggs.glb`：仅含两个煎蛋的 4 个网格，供 Three.js 等加载。
- `preview.png`：900 × 1606 的 Cycles 渲染图。
- `reference.png`：原始参考图片。
- `build_model.py`、`finalize_model.py`：通过 Blender MCP 执行的建模及最终材质、灯光、导出脚本。
- `validation.json`：场景和网格统计。

## 编辑与重建

Blender 中选择 `Egg 01 · White` / `Egg 02 · White` 编辑蛋白轮廓；对应的 `Yolk` 对象可独立调整位置和缩放。材质节点控制颜色、粗糙度与次表面散射。`Pink studio` 集合包含背景、灯光和正交相机。

重建时在没有 `Flower Eggs` 场景的 Blender 文件中先执行 `build_model.py`，再执行 `finalize_model.py`，然后渲染。脚本中的 OUT 为本项目绝对路径，迁移项目时需修改。脚本不删除当前其他场景，保存时只写入新场景。

## 还原范围

还原了两种不规则花瓣轮廓、上下构图、凸起蛋黄、乳白蛋白与粉色底面。单张图片无法确定背面和精确高度；厚度、褶皱及光照为近似重建，未达到逐像素匹配。当前蛋白表面比参考图更平滑，褶皱和高光也有差别。

GLB 保留网格和可导出的 PBR 材质，不包含摄影棚。Blender 程序化细纹和次表面散射未烘焙，因此网页端效果与 Blender 渲染不同。本实验未注册为声明式图表模板，未实现数据绑定或 Three.js 参数化更新逻辑。

## Three.js 展示页面

启动根目录的 `npm start`，从首页「花朵煎蛋」进入，或访问 `http://127.0.0.1:8877/declarative-chart3d/model-experiments/flower-eggs/`。

- `index.html`：独立页面与参数面板。
- `app.js`：GLB 加载、摄影棚灯光、相机、轨道控制和交互。
- `egg-controller.js`：两组模型的可见性、蛋黄竖直缩放和材质更新。
- `style.css`：桌面和窄屏布局。

支持两朵同时显示或单独查看、俯视／立体／侧面视角、旋转缩放、自动旋转、蛋黄饱满度／粗糙度／颜色、背景颜色和复位。参数作用于两颗蛋黄；饱满度只改变竖直缩放，不改变花瓣。下载按钮始终提供原始 GLB，页面参数不会保存到该文件。网页使用独立实时灯光和环境反射，不复现 Blender 的程序化材质。
