polywright-generate
两大引擎将想象中的模型变为现实:代码(精确、可编辑、棱角分明、带尺寸)和生成器(有机、快速、近似、拓扑凌乱)。根据对象选择引擎,而不是凭习惯。回到中心:../polywright/SKILL.md。模型许可证及显存表:references/generators.md。代码模式:references/code-modeling.md。
步骤 1:代码还是生成器?
| 对象 | 引擎 |
|---|---|
| 有尺寸、需与其他零件配合、主要由平面和圆柱体构成(支架、外壳、搁板、建筑、标牌、板条箱) | 代码:用 build123d、CadQuery 或 OpenSCAD 制作可打印的 CAD 零件;用 bpy 制作游戏套件和建筑 |
| 同一物体的多种变体(围栏、房屋、岩石、森林) | 过程式代码(bpy、Geometry Nodes),基于少数主角资产 |
| 有机或雕塑类的一次性物体(雕像、生物、角色、树干、食物) | 生成器,基于参考图像或多视图集 |
| 需要动画的角色 | 生成器提供形状,然后进行重拓扑和绑骨(polywright-finish) |
| 你拥有照片的真实物体 | 先尝试 polywright-capture;生成器会猜测隐藏面 |
扩散算法会钝化棱角并凭空创造尺寸;代码无法雕刻狮子的脸。许多优秀模型是两者的结合:一个用代码制作的基座,上面布尔合并一个生成器生成的狮子头喷嘴。
步骤 2:生成器
- 先准备参考资料(polywright-references):一张干净的白底图像,光线均匀,透视小,1024 像素;对于角色用 A 姿势;若需要更好的背面,则准备一组前/左/后/右视图,比例一致。
python ../polywright/scripts/pw.py doctor显示 ComfyUI 主机及其 3D 检查点。- 运行一个生成器:
- 内置 Hunyuan3D-2(仅形状,16 GB 显卡约 100 秒,30 步,八叉树 256):
pw.py gen --image refs/front.png [--left L --back B --right R] --out work/raw.glb [--seed N] - 其他任何 ComfyUI 工作流,以 API 格式或编辑器保存的格式(模板文件可直接使用;pw.py 会根据主机节点定义转换它):
pw.py gen --image refs/front.png --workflow <file> --out work/raw.glb。 TRELLIS.2 和 Pixal3D 带 PBR 纹理:ComfyUI 的模板3d_pixal3d_trellis2_image_to_model.json(位于 ComfyUI 安装目录的comfyui_workflow_templates_json/templates);其开关默认选择 Pixal3D,因此添加--set 316.value=true可切换到 TRELLIS.2。在 16 GB 显卡上(GPU 时间):TRELLIS.2 冷启动 377 秒(热启动 73-190 秒),直立,细节最佳;Pixal3D 329 秒,位于相机画面内(倾斜时用pw.py convert IN OUT --level调平);两者约 70 万三角面,4096 像素 PBR 纹理;Hunyuan3D-2 99 秒,仅形状。--set NODE.input=VALUE可更改任意输入。 - 托管 API(Meshy 有最清晰公开价格表;Tripo、Rodin、Hunyuan 3.x):通过其自有 API 或 MCP,或 ComfyUI 的合作伙伴节点。花费前先告知成本。
- 内置 Hunyuan3D-2(仅形状,16 GB 显卡约 100 秒,30 步,八叉树 256):
- 每次运行写入
<out>.gen.json(主机、模型、种子、步骤)。记录模型及其许可证:pw.py manifest <dir> --add-tool "<model>" --tool-version <v>。 - 查看:
pw.py inspect work/raw.glb,然后pw.py render work/raw.glb --out renders/raw。将渲染图与参考图对比:背面和底面是猜测的;额外肢体、融化细薄部分和融合间隙很常见。用手动修复前,尝试另一个种子或更好的视图重新生成。涂色的字母和数字会变成污渍且颜色漂移:pw.py mark擦除并重绘标记,将颜色移到照片颜色(L-003;视频示例)。
原始输出未经缩放、密度高(数十万三角面)、通常非流形、无 UV、Y 轴朝上。它既不能直接用于游戏,也不能直接用于打印:需要缩放和精加工(polywright-finish, polywright-print)。
步骤 3:代码
编写一个脚本,通过命名零件和真实尺寸构建物体,运行它,查看它,修复它:
- bpy:
pw.py bpy build.py -- --out work/model.blend(注意 Blender 版本陷阱:polywright-blender)。 - build123d 或 CadQuery(Python)或 OpenSCAD(
openscad -o out.stl model.scad,Manifold 后端)用于实体:构造即水密,导出 STEP 用于 CAD,STL 或 3MF 用于打印。
在脚本中加入检查(总体尺寸、零件间隙、壁厚、零件数量)并打印出来;Agent 能很好地修复 traceback 导致的崩溃,但形状错误只能通过测量和渲染才能发现。traceback 后重试两次,然后重新思考。
步骤 4:为生成或代码生成的网格添加纹理
TRELLIS.2 和 Pixal3D 在其工作流中烘培了 PBR 纹理。对于无纹理网格:TRELLIS.2 的形状条件纹理阶段,StableGen(基于 ComfyUI 后端的 Blender 插件,GPLv3)从相机投影 SDXL、Flux 或 Qwen Image 2.1(0.4.0 版本添加了遮罩区域重新纹理和 SkinTokens 自动绑骨;Qwen Image 2.1 和 FIBO 2.0 Edit 是非商业许可证,MOSS Image 是 Apache-2.0),或使用 CC0 库的纯材质(polywright-references)。Hunyuan 2.1 上色需要约 21 GB 显存。
许可证(每次运行记录)
TRELLIS.2、Pixal3D、TripoSG、PartCrafter:MIT。Hunyuan3D 开放权重:腾讯社区许可证(在欧盟、英国或韩国未授权;月活跃用户上限 100 万;输出不得用于训练其他模型)。SF3D 和 SPAR3D:Stability 社区许可证(年收入低于 100 万美元免费)。托管服务:按计划条款。仅研究权重(PartPacker、Lyra、CHORD)不得用于任何发布版本。商店需要 AI 披露(polywright 路由参考)。
维护
长青单元,层级 fast(模型和许可证每月变化)。配套文件:RESEARCH.md、CHANGELOG.md、LEARNINGS.md、TESTS.md 含 evals/evals.json、MAINTENANCE.md、状态在 evergreen.json 中。每次使用前读取 evergreen.json;到期时刷新。