brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
tripo-apiTripo3D REST API 实战参考与统一驱动 —— 图生3D / 文生3D / 多视图重建 / 自动绑骨 / 预制动画重定向 的 确切端点、参数、模型版本、积分、以及大量实测踩坑。当任务涉及:用 Tripo 把图/文生成 3D 网格、给模型自动绑骨 (Mixamo 骨架)、套 Tripo 预制动画、选 Tripo 模型版本(v2.5/v3.0/v3.1/P1)、控制贴图质量/四边面/风格化、 排查 Tripo 任务失败(1004/2006)、估算 Tripo 积分消耗 —— 时务必使用本 skill。出现 tripo3d、image_to_model、 multiview_to_model、animate_rig、animate_retarget、tripo api key、图生3D、绑骨、tripo…
Independent GitHub snapshot · Automated classification · Original documentation governs
scripts/tripo_gen.py。
注:做完整 AR/动画管线请配合 ar-3d-animation-pipeline;本 skill 只聚焦 Tripo API 本身。经实测(2026-06)整理的 Tripo REST API 用法 + 踩坑。最大教训:Tripo 的 create 几乎不校验参数,
错参数也返回 code:0(任务受理),要到处理阶段才以 error_code:1004 失败 —— 所以"create 成功"不等于
"参数对",必须 poll 到 success 才算数。
https://api.tripo3d.ai/v2/openapiAuthorization: Bearer <key>(key 存 gitignore 的 .tripo-key)| 端点 | 作用 |
|---|---|
POST /upload (multipart file) | 上传图 → 返回 data.image_token |
POST /task (JSON) | 建任务 → 返回 data.task_id(⚠️ 不校验业务参数) |
GET /task/{id} | 查状态/进度/输出;status ∈ running/success/failed/...;失败看 error_code |
GET /user/balance | 余额 data.balance |
upload → create(type=...) → poll(/task/{id} 直到 success) → fetch(output.pbr_model/model)。scripts/tripo_gen.py(命令:i2m / mv4 / mv / prerig / rig / animate / get / status / balance)。payload:
{"type":"image_to_model","file":{"type":"png","file_token":"<tok>"},
"model_version":"v3.1-20260211","texture":true,"pbr":true,
"texture_quality":"detailed","quad":true,"style":"person:person2cartoon"}
model_version 一定要显式指定(下表),否则回落到旧默认 v2.5(明显糙)——这是"图很美但 3D 糙"的头号原因。
| 版本字符串 | 说明 | 实测 |
|---|---|---|
v2.5-20250123 | 旧默认,几何/贴图糙 | ❌ 别用 |
v3.0-20250812 | 大跃升,脸灵动、细节翻倍 | ✅ |
v3.1-20260211 | 比 v3.0 几何精度/贴图更好(2026-02-11) | ✅ 当前首选 |
P1-20260311 | 生产级,低面数下几何最精细,风格化/游戏/AR 轻量资产 | ✅ 备选/对照 |
texture_quality:"standard"(默认)/ "detailed"(更细)/ "no"。⚠️ 没有 "HD"(传 HD 报 1004)。quad":true:四边面拓扑(绑骨形变更好)。⚠️ quad 模型输出是 FBX(GLB 存不了四边面)——下载的 .glb 其实是 FBX("Kaydara FBX")。处理见下「quad/FBX」。style:风格化,如 "person:person2cartoon"(卡通化,输入已是卡通时变化不大)、"object:clay" 等。face_limit(面数)、smart_low_poly、pbr、texture。output.pbr_model(优先)或 output.model + output.rendered_image(webp 预览图,几十 KB,验收很方便)。files:[front,left,back,right](每个 {type:png,file_token},缺的给 {})。
⚠️ 实测坑:① 慢且易卡 99%(单图 i2m ~1min;多视图 10–25min 甚至超时)——poll 超时要调到 1500s+,且记下 task_id,超时后用 GET /task/{id} 重取;② 4 张分开生成的视图易不一致 → 重建出鬼影/五官变柔。结论:优先"单张精美正面图 + 高版本",比多视图更稳。
{"type":"animate_rig","original_model_task_id":"<i2m_task_id>","out_format":"glb","spec":"mixamo"}
animate_prerigcheck({type,original_model_task_id} → output.riggable)。out_format:"glb",直接拿绑好骨的模型。spec(关键,默认 "tripo"):
"mixamo" → 骨架命名 mixamorig:Hips/...,能接 Mixamo 动作库 + 程序化烘焙,但用不了 Tripo 预制动画;"tripo"(默认)→ Tripo 自有骨架,能用 animate_retarget 预制动画,但接不了 Mixamo。rig_type:默认 biped(还有 quadruped/hexapod/octopod/avian/serpentine/aquatic/others)。model_version:默认旧的 v1.0-20240301,有更新的 v2.0-20250506(更好的蒙皮,值得指定)。spec:"tripo" 的绑骨{"type":"animate_retarget","original_model_task_id":"<spec=tripo 的 RIG task_id>",
"animation":"preset:idle","out_format":"glb","bake_animation":true}
preset:idle / walk / run / dive / climb / jump / slash / shoot / hurt / fall / turn
(+ preset:quadruped:walk / hexapod:walk / octopod:walk / serpentine:march / aquatic:march)。
没有挥手/打招呼/倒茶/鼓掌/跳舞(语义/社交动作得 Mixamo / Cascadeur)。spec:"tripo" 骨架。我们为接 Mixamo 而用 spec:"mixamo" 绑骨,结果 retarget 一律 error_code:1004(create 阶段 code:0 是假象,处理才报)。换成 spec:"tripo" 绑骨 → retarget preset:idle 立刻成功。 已穷举验证:与 quad/无前缀/bake_animation 都无关,纯粹是 rig 的 spec。original_model_task_id(必须是 rig 任务;传 i2m 任务 → create 即 2006)、animation(单个用 animation,多个用 animations:[...])、out_format、bake_animation(默认 true)、export_with_geometry、animate_in_place。spec:"tripo" → 能用 Tripo 预制动画,但骨架是 Tripo 自有命名 → 接不了 Mixamo 动作 / 我们的 mixamo 程序化烘焙;spec:"mixamo" → 能接 Mixamo 动作库(挥手等) 和程序化,但用不了 Tripo 预制。code:0 骗了。@gltf-transform 读不了(报 Unexpected token 'K')。node_modules/fbx2gltf/bin/<OS>/FBX2glTF -i x.fbx -o y --binary(三角化;蒙皮/材质保留)→ 再 gltf-transform optimize。fbx2gltf 与 @gltf-transform/cli 用 --no-save 装会互相 prune;要么一条命令同装两个,要么用哪个临时重装。gltf-transform CLI 要 Node ≥20。rig 出 glb)时完全不用碰 FBX。| 操作 | 约 |
|---|---|
| image_to_model(v3.x + pbr) | 25–30 |
上面再加 detailed + quad | ~40 / 个 |
| animate_rig | 10–20 |
| multiview_to_model | 更贵 + 慢 |
create.code(0=受理),但必须 poll 看 success 才确认参数有效——别浪费在"create 成功但处理失败"上。| 码 | 含义 | 典型触发 |
|---|---|---|
1004 | 参数无效(通用,不指明哪个) | texture_quality:"HD";mixamo 骨架去 retarget;错的 model_version(处理阶段才报) |
2001 | 任务不存在 / 无权访问 | 换了 API key(=换账号)后引用旧 key 建的 task_id —— task_id 跟账号绑定! |
2006 | 模型类型不符合该操作 | retarget 的 original_model_task_id 传了 i2m 任务(必须传 rig 任务) |
2001 失效 → 必须从图重新生成(图在本地就行),不能复用旧 task。换 key 前留好本地源图。GET /user/balance。注意失败任务的扣分见上「积分」。v3.1-20260211(或对照 P1-20260311)+ texture_quality:detailed(+ quad 若后续要绑骨/外部精修)。spec:mixamo;Tripo 预制 → spec:tripo。服务端出 glb,不碰 FBX。spec:tripo(mixamo 骨架 retarget 会 1004);Tripo 没有挥手/倒茶,这类走 Mixamo / Cascadeur / 程序化。核心教训:Tripo(图生3D)给的是「渲染资产」(为静态好看而生),不是「动画资产」(为变形而构建)。两者由不同流程产出,任何技术都无法在裸资产上跨越这道鸿沟。
animate_rig = 身体骨架(biped),没有任何面部骨/blendshape/viseme。 绑了骨 ≠ 能动脸。在裸 API 模型上做口型,只能手工硬接下巴骨/形态键 → 必败于三条资产硬伤:
quad:true 出 FBX,FBX→glTF(浏览器要 GLB)又三角化 → quad 好布线没保到运行时;要精修/动画就在 FBX/源模型阶段做。quad(+ 考虑 P1),并验证运行时网格是否真可用。rendered_image + 一次拓扑/UV 机检判"就绪性",再决定绑骨/口型。