图像转低多边形网格
输入一张照片,每个三角形预算输出一个可编辑的低多边形网格,每个网格通过固定相机与照片进行评分,并以四种独立方式进行计数。低多边形几何本身完成近似:没有纹理、广告牌、投影照片或未计数的几何图形来替代形状。
输入:参考图像(永不改变)、拍摄对象、预算。示例:examples/cat/ 位于仓库中(一只橘色虎斑猫,预算 100 / 200 / 500 / 1000)。
开始之前
| 情况 | 操作 |
|---|---|
| 一张照片,整个主体可见,背景简单 | 主流程 |
| 四足动物 | 提供的代理模板(fit_camera_proxy.py、build_proxy.py)是针对四足猫的;调整其先验参数 |
| 任何其他主体 | 先为其编写代理模板(每个部分使用广义圆柱体,catlib/skeleton.py 格式);其余工具与主体无关 |
| 多张照片、视频或扫描 | 超出范围:仅一个视图、一个相机 |
| 用户需要颜色或纹理 | 仅支持平面颜色;开始前说明此限制 |
| 没有 Blender | 不支持:计数、组装和所有官方数据需要 Blender 5.2+ |
开始前说明:照片未显示的所有内容均为推断,而非验证。
工作流程
下面的 S 表示 skills/image-to-lowpoly/scripts。每个脚本接受 --case CASE(或 LOWPOLY_CASE)。在每个检查点发布带标签的图像(叠加、粘土、线框、八个视图):先图像,后数字。
- 案例和参考。 创建
CASE/reference/reference.png(用户图像的字节级精确副本)以及包含其 SHA-256 的来源文件。永不重新生成、调整大小或编辑。 - 固定目标。 通过查看缩放裁剪区域(12 个清晰点:耳尖、眼睛、鼻子、四个爪点、尾基/中/尖,适用于猫;根据主体调整列表)来标注地标和图像窗口,然后运行
python3 $S/preflight_reference.py --case CASE。查看mask_overlay.png和landmarks_overlay.png。 遮罩排除地面阴影和胡须。 - 相机和代理。 运行
fit_camera_proxy.py --case CASE(CPU,数十分钟),然后运行build_proxy.py、build_proxy.py --lock和build_proxy.py --report。从八个视图查看代理:它代表了所有隐藏部分。然后冻结:在任何预算被评分之前,将参考、遮罩、地标、区域、相机、场景、代理和评估代码的哈希写入contract/FROZEN.json(references/contract.md)。 - 控制组。 对每个预算运行
make_decimation_baseline.py --case CASE --budget N:对代理进行精确到 N 的简化,以及共享精化器后的结果。这些是需要超越的数字。 - 按预算分配和构建。 为每个预算分配独立的工作目录
variants/<N>/(references/budget-worker.md)。编写分配表(区域、三角形、环数×边数、原因),构建至少两个实质不同的分配,对每个进行相同的简短精化,比较并选择。variants/<N>/build.py写入包含精确 N 个三角形(需断言)、区域、材质和地标附着的catmesh-1格式的mesh.json。一个封闭表面:将四肢、尾巴和耳朵焊接到主体中。 - 初始检查点。 运行
evaluate.py --case CASE --mesh variants/<N>/checkpoints/v0_initial/mesh.json --views。这是“初始”行。 - 精化、测量、查看、编辑、重复。 运行
refine_vertices.py(使用--flips、--freeze-verts处理面部和任何冻结套件)、evaluate.py,然后查看ref_overlay.png、ref_clay.png、ref_wire.png和八个视图。在叠加显示预算分配不当的地方进行有针对性的拓扑编辑。保留最佳验证检查点;新版本不一定胜出。 - 盲审。 运行
make_critic_packet.py --case CASE --round K打包照片和中性命名的粘土、线框和轮廓渲染。启动一个新的子代理,仅查看该文件夹;将其发现转化为预算中性的几何编辑。拒绝任何涉及纹理、卡片或未计数几何的建议。 - 最终化和汇总。 运行 `finalize_variant.py --case CASE --budget N --checkpoint TAG --reason