> 作者 @zzzzzzzp(立意 · 判据 · 取舍) · 协作 多多 · AI 助手(检索 · 编码 · 核查)
> 版权 著作权归 @zzzzzzzp 所有(All Rights Reserved) · 版本 v1.7.0
万象-3D模型生成与特效
把一张图或一段文字生成可用的 3D 模型与特效短视频,并给出导出格式与面数选型。
- 做什么:文生/图生 3D 异步轮询、模板特效短视频、多格式导出与 PBR 材质选型。
- 何时用:要把图片或文字变成 3D 模型、要做模板化特效短视频、要定导出格式时。
- 不做什么:不做手工雕刻与动画绑定;不做真人形象生成与视频换脸。
数据边界与外部连接(必读)
- 文档处理全在本机:所有读写只发生在你显式指定的文件上。
- 不采集、不上传用户的任何内容;不扫描目录、不常驻后台、不联网轮询。
- 唯一的外部连接:技能自带的按量付费组件(
a2m/)会与支付宝发生支付校验与履约回执,
该链路只传订单号与金额,不含你的文件内容;本地服务仅监听127.0.0.1。 - 凭据:作服务端使用时,商户私钥从你的本机环境变量读取,不落盘、不进包。
- 回流组件默认未启用:包内不含任何收件地址,也不自动注册任何钩子;是否启用完全由你决定。
把一张图或一段文字生成可用的 3D 模型与特效短视频,并给出导出格式与面数选型。
- 做什么:文生/图生 3D 异步轮询、模板特效短视频、多格式导出与 PBR 材质选型。
- 何时用:要把图片或文字变成 3D 模型、要做模板化特效短视频、要定导出格式时。
- 不做什么:不做手工雕刻与动画绑定;不做真人形象生成与视频换脸。
📌 能力边界与类目归属(发布说明)
| 项 | 说明 |
|---|---|
| 输入 | 用户自有的图片或文字 |
| 输出 | 3D 模型文件(STL / GLB 等)+ 特效短视频 |
| 不做 | 不涉及真人形象生成;不做视频换脸、身份替换类处理;不做深度伪造 |
| 类目归属 | 核心是「图像/文字 → 三维模型与短视频」的格式转换与参数选型,属通用创意工具 ⇒ 归入「工具 > 图片处理」 |
> 平台审核提示的「深度合成 > AI 创作」类目需企业开发者资质,个人开发者账号无法选到该类目;
> 本技能按个人开发者账号提交,实际能力以上表为准,特此如实说明。
✨ 两个不一样的地方
📈 它会成长 —— 带位次(三阶九位:百工 · 良工 · 营国)。升级不靠买,靠用:
每次真实使用与反馈都折算成经验,推动它升位。
🔁 经验回流 —— 默认不联网:只用一条最小事实(技能名/版本/时间)记在你本机,
不含任何对话内容、不含文件与身份。想让它回传,你在本机配一个收件地址即可;不配就一个字节都不发出。
「他山之石,可以攻玉」——《诗经·小雅·鹤鸣》。
何时用
- 用户要3D 模型:从一段描述(文生)或从一张/多张图(图生)产出可用的模型文件。
- 用户要把图变成带特效的短视频(模板驱动,不是自由生成)。
不适用:普通文生视频/图生视频(→ 视频工具);图片本身的加工(→ 万象-图片精修去水印)。
§0 三条铁律
- 零交互执行。 用户给了意图就直接做,不要为参数选择反问(模型版本、面数这类有默认值的,按默认走)。参数是我该决定的,不是拿去问用户的。
- 绝不伪造结果。 调用失败就返回真实错误;不得编造产物地址,不得用文字描述冒充生成结果。
- 产物必须落到本地再展示。 远程地址不得直接当结果回复 —— 远程链接会过期,用户点开就是 404。
§1 两条线怎么选
| 用户要什么 | 线 | 输入形态 |
|---|---|---|
| 基于模板的图片转视频特效 | 视频特效 | 单图(人物/物体)或多图(双人互动) |
| 3D 模型 | 3D 生成 | 文本描述 / 图片 / 多视角图 |
判定口诀:要模型文件(能进三维软件继续加工的)→ 3D;要一段效果视频 → 模板特效。
§2 3D 参数与选型判据
| 参数 | 取值 | 什么时候改 |
|---|---|---|
| 描述文本 | 中文推荐,≤1024 字符 | 与图片输入三选一,不要既给文本又给图 |
| 图片输入 | 地址(128~5000px,≤8MB)或 base64(≤6MB) | 本地图优先走文件方式,不要转 base64 塞对话 |
| 多视角 | JSON 数组,视角可取左 / 右 / 后 / 上 / 下 / 左前 / 右前 | 单张图信息不足、或要做正反面一致的模型时用 |
| 模型版本 | 默认取新版;新版不支持低模 | 要低模就必须配旧版 |
| 生成类型 | 常规 / 低模 / 白模 / 草图 | 见下 |
| 面数 | 10000~1500000(默认 500000) | 实时预览要低、展示成品要高 |
| 输出格式 | 默认 OBJ + GLB,可另加 STL / USDZ / FBX | 见下 |
| 材质 | PBR 开关 | 要真实光照材质时开 |
生成类型怎么选:
| 类型 | 用途 |
|---|---|
| 常规 | 有纹理的成品模型 |
| 低模 | 面数受限、要实时渲染;可指定三角面或四边形 |
| 白模 | 只要形体、不要纹理(做方案推敲、形体对比) |
| 草图 | 从手绘/草图起形 |
输出格式怎么选:进通用三维软件 → OBJ/GLB 够用;3D 打印 → STL;苹果生态展示 → USDZ;游戏/引擎管线 → FBX。
§3 认证纪律(三种传法全部禁止)
- 每次任务前重新取凭证,禁止复用上一次的。连续生成多次也要每次重新取。
- 优先用临时凭证,没有时才用兜底那一种。
- 只经标准输入管道把凭证传给脚本。
- 以下三种传法一律禁止(都会让凭证出现在命令行、进程列表、日志或磁盘上):
| 禁止的传法 | 暴露面 |
|---|---|
| 环境变量前缀 | 出现在命令行 |
| 命令行参数 | 出现在进程列表与日志 |
| 临时文件 | 文件残留 |
- 不向用户展示凭证内容,静默处理。
§4 超时与重试(照抄这张表)
脚本内部自带轮询(每 5 秒一次、最长 600 秒)。
| 情形 | 正确动作 |
|---|---|
| 正常提交 | 跑一次,等脚本自己完成轮询 |
| 命令被工具超时打断 | 改用两步模式:先只提交(秒级返回任务号),再隔 30–60 秒查任务 |
| 查询显示仍在排队/处理中 | 继续查该任务;不要重新提交 |
| 提交已经失败 | 同一请求最多重新提交 1 次;两次都失败就如实报错,不再重试 |
| 查询任务号 | 可多次(上限 10 次、每次约 30 秒) |
⚠️ 绝对禁止在脚本外面写「等待 N 秒 → 重新调用」的循环 —— 每次调用都会新建一个任务,结果是无限循环 + 多份产物 + 重复计费。
§5 产物落本地与展示
- 解析脚本输出,拿到产物标识。
- 下载到本地(落在工作区内,文件名可读)。
- 用展示动作把每份产物显示给用户,并回报完整本地路径。
- 3D 模型若平台不支持直接预览,就如实说明产物格式与打开方式(如"用三维软件或系统预览打开"),不要假装已预览。
§6 本机实测坑
- Windows 上用解包目录:需要显式拼脚本路径时,用安装目录下已解包的那一层(
resources里的解包目录);不要拼指向压缩包内部的路径 —— 那个路径在安装包里不存在。 - Bash 工具优先;没有 Bash 时才退到 PowerShell,且必须直接调用解释器让输出回传,不要用"起新窗口"类命令(输出会丢,且可能弹窗)。
- 解释器不可用就停,不要自动安装运行时;也不要改用系统商店的商店存根路径。
- 优先级反转:凭证字段同时存在两种时,用临时那一种;兜底那种只在临时字段缺失时用。
- 长任务别指望一次调用跑完:命令工具本身有超时,超时就用两步模式,别硬扛。
- 产物名要能自解释:
3d_<主题>_<日期>.glb这种,不要留一串随机 id 给用户。
§7 能力边界与反例
能做:两条线选型、3D 参数与格式判据、认证与凭证传递纪律、超时重试规范、产物落本地与展示。
不做:
| 反例 | 正确去处 |
|---|---|
| 用户要普通视频,却走模板特效 | 视频工具 |
| 用户要图片加工,却走 3D 线 | 万象-图片精修去水印 |
| 凭证走环境变量 / 命令行 / 临时文件 | 禁止;只走标准输入管道 |
外面套 sleep 循环重跑提交 |
禁止;只查原任务 |
| 把远程地址当结果交付 | 必须下载到本地 |
| 生成失败却描述一个"想象中的模型" | 禁止;如实报错 |
| 为参数选择反复追问用户 | 有默认值的按默认走 |
§8 3D 产物的预览交付(2026-09-21 吸收自平台件的判定条目)
> 来源:平台内置的多模态生成件。只取操作判据,不引其正文。
- 3D 模型下载完
.glb后,必须生成一个viewer.html,并把它的绝对路径交给「呈现给用户」那一步(与.glb同目录)。内置预览服务会以127.0.0.1同源托管这个 html 与同目录的模型文件。 - 不要自己起外部 HTTP 服务器(
python -m http.server/npx serve都不需要),也不要提示用户去关它。 - 不要把模型内联成 Base64:查看组件用
fetch()加载模型,file://协议下跨域会被浏览器拒绝;且模型常有几十 MB,内联会让页面过大直接加载失败。 - 一次一个:同一节点不要为了「修一修」重复发起生成;严重失败时最多重试一次(与 §4 一致)。
- 交付话术:告知用户「已生成查看页并在预览窗口打开,可旋转缩放」,不提服务器之类内部细节。
附 · 来源交代
| 项 | 说明 |
|---|---|
| 版本 | 1.0.0 |
| 建立日期 | 2026-09-19 |
| 来源 | 自研(origin: own)。建立动机:平台内置的三维与模板特效系统件覆盖了本域的调用面,但①为版本目录结构、随平台升级整体替换,本机经验无处沉淀;②参数选型判据(什么时候低模、什么时候白模、什么格式给什么下游)散在参数表里没被讲清。故自研一部,只吸收能力类别、参数边界与执行纪律,不复制其文本;§2 选型判据、§6 本机实测坑为自有增量。 |
| 与系统件的关系 | 并存,不替换。系统件仍负责实际的生成调用;本技能负责选型判据与产物交付纪律。 |
| 著作权 | 署名 zzzzzzzp,All Rights Reserved |
常见误用与常见问题(FAQ)
常见误用(反模式)
| 误用 | 后果 | 正解 |
|---|---|---|
| 调用失败却描述一个「想象中的模型」 | 伪造结果 | 绝不伪造结果 —— 失败就返回真实错误;不得编造产物地址,不得用文字描述冒充生成结果 |
| 直接把远程地址当结果回复 | 远程链接会过期,用户点开就是 404 | 产物必须落到本地再展示 |
| 复用上一次的凭证 | 凭证超时或串号 | 每次任务前重新取凭证,连续生成多次也要每次重新取 |
| 用「图省事」的传法传凭证 | 凭证会出现在命令行、进程列表、日志或磁盘上 | 三种传法一律禁止(见 §3 认证纪律) |
| 为参数选择反问用户 | 多问一遍 | 零交互执行:模型版本、面数这类有默认值的按默认走——参数是我该决定的 |
| 同一节点反复发起生成「修一修」 | 浪费额度 | 一次一个;严重失败时最多重试一次(与 §4 一致) |
| 把模型内联成 Base64 送进查看组件 | file:// 下跨域被浏览器拒绝;模型常几十 MB,内联会让页面过大直接加载失败 |
用 fetch() 加载模型 |
| 自己起一个外部 HTTP 服务器 | 多余,还要想着关它 | 不要自己起(python -m http.server/npx serve 都不需要) |
| 平台不支持预览却假装已预览 | 误导用户 | 如实说明产物格式与打开方式(如「用三维软件或系统预览打开」) |
| 产物留一串随机 id | 不易辨认 | 产物名要能自解释:3d_<主题>_<日期>.glb |
| 解释器不可用就去自动安装运行时 | 越界改动用户机器 | 解释器不可用就停;也不要改用系统商店的存根路径 |
| 在 Windows 上拼指向压缩包内部的脚本路径 | 该路径在安装包里不存在 | 用安装目录下已解包的那一层(resources 里的解包目录) |
| 用「起新窗口」类命令跑 PowerShell | 输出会丢,且可能弹窗 | 优先 Bash;退到 PowerShell 时直接调用解释器让输出回传 |
常见问题
- Q:两条线怎么选? A:见「§1 两条线怎么选」——① 视频特效(模板把图片转短视频,支持单图与多图双人互动);② 3D 模型生成(文生/图生 3D,异步轮询)。
- Q:3D 生成要等多久、失败怎么办? A:按「§4 超时与重试」执行,照抄那张表,别自创。
- Q:产物格式有哪些? A:OBJ/GLB/STL/USDZ/FBX;选型判据见「§2 3D 参数与选型判据」。
- Q:凭证怎么传才安全? A:见「§3 认证纪律」——三种传法全部禁止;凭证只经管道传,禁止环境变量与命令行。
- Q:有哪些明确的不能做? A:见「§7 能力边界与反例」,其中「生成失败却描述想象中的模型」一条为禁止。
触发词与详细说明
(原 description 全文保留在此,供检索与人工查阅;frontmatter.triggers 仍为机器检索用。)
三维与模板特效域一站式技能(两条线)—— ① 视频特效:基于模板把图片转成短视频特效(支持单图与多图双人互动);② 3D 模型生成:文生 3D 与图生 3D(异步轮询),含模型版本、面数、生成类型(常规/低模/白模/草图)、多视角输入、PBR 材质与输出格式(OBJ/GLB/STL/USDZ/FBX)的选型判据。含认证纪律(每次任务前重新取凭证、凭证只经管道传、禁止环境变量与命令行参数与临时文件三种传法)、超时与重试规范(脚本自带轮询,禁止在外部加等待循环重跑)、产物必须下载到本地再展示。当用户说「生成 3D 模型」「把这张图做成特效视频」「低模」「白模」「PBR 材质」时使用。不适用于:普通文生视频与图生视频(走视频工具)、图片加工(走万象-图片精修去水印)。
附 · 付费与授权
附 · 付费与授权
§〇 · 本技能定位为付费技能(Pay Skill)
| 项 | 内容 |
|---|---|
| 定位 | 付费版(Pay Skill 通道) |
| 计费形态 | 按次 |
| 已接入的服务 | serviceId API_13DCD6D650224B51 | 服务地址 https://wb-workbase.app.workbuddy.host/demo/a2m/resource(无凭证时返回 402 + Payment-Needed 账单)| 单价 0.25 元/次 |
| 🔴 单价须与注册价一致 | 平台明确警告:实际支付价与注册标价不一致会导致用户无法支付 ⇒ 向导里单价填 0.25,不要凭手感改 |
| 这条服务是复用的 | 服务名称是通用的「万象skill」,属同一作者、同一 appId ⇒ 与「万象-支付宝AI付接入」「万象-SkillHub自动上架」共用同一条已注册服务,不另注册 |
| 标识 | 付费技能加一道金色光圈(GOLD = #C8A02C)—— 判据=该技能被调用时按次收费 |
> 🔴 付费技能一律走完整付费路径 —— 是付费定位,就照着付费通道做完:
> 随包实现 402 链路(见 §〇·2)、接入相应服务、按注册价填单价、走 Pay Skill 向导。
> 不回头讨论「要不要改成免费」。若确实要转免费,改的是 万象标识体系/tools/gen_icons.py 的
> PAY_SKILLS 名单与本段声明(显式改动),不是偷偷少做一步。
§〇·2 · 随包提供的 402 付费链路实现(平台「付费改造」检测就看这个)
🔴 实测判据(平台原话):SkillHub 在提交时会做一次「支付宝付费改造」检测,
判据是技能包内是否存在 402 支付链路的实现,缺失项会被逐条列出:
> 「缺失项:402账单下发 / 携带凭证重试 / 验付调用 / 履约确认 / 订单持久化与幂等」
> 「该检查不阻断提交。提交后平台审核仍会重新做一次完整检测,若不合规将被拒绝。」
⇒ 本包自带该实现(目录 a2m/,零密钥、可直接 npm install && npm start):
| 平台检测项 | 本包对应实现 | 位置 |
|---|---|---|
| 402 账单下发 | 无凭证 ⇒ HTTP 402 + Payment-Needed(Base64URL 账单,商户本地 RSA2 签名) |
a2m/a2m.js buildPaymentRequired();路由在 a2m/server.js |
| 携带凭证重试 | 解析 Payment-Proof 头并重放同一资源请求 |
a2m/a2m.js decodePaymentProof() |
| 验付调用 | 查询交易并逐项严格比对(trade_no / 金额 / 资源 ID / 订单状态与时效) | a2m/a2m.js verifyPayment() |
| 履约确认 | 交付后调履约确认;失败可重试且不重复生成资源 | a2m/a2m.js confirmFulfillment() |
| 订单持久化与幂等 | SQLite 事务 + 唯一约束(非内存订单);重复交付不重复扣费 | a2m/orderRepository.js prepareFulfillment() |
配置边界(有意为之,勿改成「能跑就行」):配置缺失即明确失败(资源路由返回 503),
不构造 SDK、不使用占位密钥、不提供任何跳过验付的路径。密钥只走运行环境变量或本地配置文件,永不入包。
cd a2m && npm install && npm run smoke # 冒烟:账单结构 / RSA2 签名 / 幂等边界
npm start # 默认 http://localhost:3000/demo/a2m/resource