Agent 按次付费做 3D:从 GLB 到产品视频的云渲染流水线

一句话结论:如果你的产品允许用户上传 3D 模型,你可以不用一块 GPU 就交付产品图、360 转台和短片——上传文件、按事先知道的固定价下单一组产出、等一个 webhook 收链接。对 Agent 来说,关键不在"能不能调起渲染",而在先把价格和上限说清楚,再让它动手。

本文编译 JANCTION Render(JasmyLab Inc. 官方 dev.to 账号)的三篇新文:《Add 3D product shots to your app in 40 lines》(2026-10-12)、《I turned a GLB into a product video from an AI chat》(2026-10-13)、《The cheapest way to render a 1-minute Blender animation without buying a GPU: six options, with measured numbers》(2026-10-13),并做中文整理。作者即服务运营方,实测数字为服务方公布,请结合这一点阅读;本系列上一篇讲的是"本地 Blender MCP vs 云渲染"的整体分工,本篇是它的按次付费流水线续作。


一、Product Video:给一个模型文件,拿回成品短片

输入是 .glb / .fbx / .obj / .usdz,输出是三种规格之一:

  • 带字幕和片尾卡的短视频;
  • 360 转台(方形);
  • 四张产品图(正、四分之三、侧、后)。

服务方公布的实测数字(Khronos 样例模型,CC0):

产出 GPU 秒 说明
5 秒 1080p 视频 约 220 GPU 空闲时,下单到交付约 2 分钟
5 秒 360 转台(方形) 约 114 —
四张产品图 15 —
已交付视频改字幕 / 改颜色 0 不重渲染,0 日元

计费方式是理解这套流水线的关键:GPU 按成本价 0.1 日元/GPU 秒 计费,加上一笔固定制作费(合成、字幕、检查与项目文件保存)——5 秒 40 日元、15 秒 90 日元、30 秒 160 日元、5 秒转台 30 日元、四张图 20 日元。商店/素材站常用"清单包"(四图 + 同模型转台)约 64 日元。

报价显示的是上限:交付时按"制作费 + 实际使用的 GPU 秒"结算,差额退回余额。作者首单付费订单报价上限 61 日元、实际收取 53 日元;失败不收费,之前渲染过的镜头复用也不重复扣 GPU。

边界同样明确:不支持从文字直接生成视频,不做人物、不做实拍——必须先有一个 3D 模型;没有模型时可以用 product=sample:water-bottle 免费试几次。

二、Agent 的调用顺序:先报价、后同意、再执行

对 Agent 暴露的 MCP 流程是一条先报价、再确认的链:

plan_video(能做什么) → quote_video(上限、典型价格、预计分钟数)
    → 人确认 → submit_video(带上已同意的价格)→ get_video_outputs

两条护栏值得抄:

  1. 服务器拒绝与报价不一致的订单——Agent 不能把 61 日元的报价改成别的数字再提交;
  2. 可以设置单笔与每日上限,也能要求"超过某个金额必须人工点击确认"——而这些限额MCP 工具改不了。

这正是上一篇《Blender 接 AI Agent:MCP 横评与云渲染实测》里"让 Agent 花钱不失控"的延续:Agent 有三个天然的烧钱习惯——重试、挑更大的任务、循环预览——所以报价、额度、幂等重试与人工审批必须由服务方和集成方来兜底,而不是写进提示词里祈祷它听话。

三、把这条流水线接进自己的应用(40 行服务端)

最小可用形态是一个 FastAPI 应用:用户上传 GLB → 服务端转存并下单 → 拿回 job_id → webhook 到货后存链接。关键代码就这几步:

import hashlib, os, httpx
from fastapi import FastAPI, Request, UploadFile

JR = "https://render.janction.jp"
KEY = os.environ["JANCTION_RENDER_API_KEY"]      # 一个 key 服务整个应用
H = {"X-API-Key": KEY}
app = FastAPI()

@app.post("/products/{sku}/shots")               # 用户上传 GLB,订 4 张产品图
async def order_shots(sku: str, file: UploadFile, request: Request):
    data = await file.read()
    async with httpx.AsyncClient(timeout=120) as jr:
        up = await jr.post(f"{JR}/v1/files", headers=H,
                           files={"file": (file.filename, data)})
        up.raise_for_status()
        r = await jr.post(
            f"{JR}/v1/outcomes/product-shot",
            headers={**H, "Idempotency-Key":
                     f"shots-{sku}-{hashlib.sha256(data).hexdigest()[:16]}"},
            json={"scene_id": up.json()["scene_id"], "size": "square",
                  "transparent": True,
                  "notify_url": str(request.url_for("jr_done"))})
        if r.status_code == 402:                 # 余额不足:把充值链接给用户
            return {"error": "credit", "pay_at": r.json().get("checkout_url")}
        r.raise_for_status()
        j = r.json()
        return {"job_id": j["job_id"],
                "ceiling_yen": j["outcome"]["price_yen"]}  # 报价上限

三个生产细节:

  • Idempotency-Key 用"文件哈希 + 业务 ID"拼——Agent 或客户端超时重试时取回同一个任务,而不是排第二个;
  • 余额不足返回 402 + checkout_url,人来充值,Agent 用同一个任务重试(和上一篇的四道防护一致);
  • webhook 只来一次(job.done / job.failed + artifacts),落库时要能容忍重复投递,并记录报价上限用于对账。

单文件上传上限 100 MB,更大的模型用 scene_url 传链接。同类实现可以直接对照官方的 API guide。

四、六条渲染路线的成本对照(1 分钟动画 = 1,440 帧)

"一分钟"在 24 fps 下是 1,440 帧。所有方案最终都是同一个乘法:单帧时间 × 1,440,区别只在于谁为这段时间买单、谁替你运维。

来源文作者的实测(本机为自己的笔记本,Core Ultra 9 386H):

路线 一分钟的钱 你要付出 拿到多久
自己的电脑(CPU,1080p/128 samples) 0 设置后离开 约 8 小时
自己的电脑(RTX 5070 Ti,同场景) 0 设置后离开 约 2.4 小时
SheepIt 志愿农场 0(攒积分) 上传 看队列与积分
Colab 免费 GPU 免费档 0 每次自己配、盯着跑 长任务会断连
按小时租 GPU(RunPod / Vast.ai 等) 按开机小时 自己装环境、传文件、记得关机 取决于租到的卡
商业渲染农场(GarageFarm / RebusFarm / Fox 等) 按 node-hour / GHz-hour 网站或插件上传 多机并行,快
按 GPU 秒计费的 API(JANCTION Render) 约 354~1,286 日元(见下) 一条命令或一句对话 GPU 繁忙时排队

具体到本机数字:同一简单场景,CPU 在 1080p/128 samples 下 20.0 秒/帧(一分钟约 8 小时),降到 720p/64 samples 是 6.6 秒/帧(约 2.6 小时);这台笔记本的 RTX 5070 Ti 分别是 6.0 秒/帧(约 2.4 小时)和 2.5 秒/帧(约 1 小时)。真实场景的几何、贴图与光线反弹更多,会更慢——单帧 × 1,440 只是下限。

按秒计费这边,服务方公布的三组数字(含 Blender 启动与场景加载,长任务均值会略低):

场景 每帧 GPU 秒 一分钟 GPU 秒 一分钟价格
简单场景 1280×720 / 64 samples 2.46 3,542 约 354 日元(约 $2.2)
简单场景 1920×1080 / 128 samples 5.39 7,762 约 776 日元(约 $4.9)
Blender Classroom 示例 1080p/128 + 降噪 8.93 12,859 约 1,286 日元(约 $8.1)

美元换算按 158 日元/美元(ECB 参考汇率,2026-10-09),实际扣费以日元为准。

上限也要先看:免费时间最高 1080p、预付余额可用到 3840×2160;单条指令最多 3,000 帧(按 240 帧切成子任务、归入同一个 job,最后合成一个 MP4,所以一分钟动画是一条命令而不是六个文件);每个任务最多 10 GPU 小时;文件在最后一次使用后 24 小时删除(充过值的 key 为 7 天);GPU 忙时排队,状态页可以看等待时间。从终端到 Agent,官方给的路径是:

pip install janction-render
janction-render preview minute.blend            # 免费预览
janction-render estimate minute.blend --frames 1-1440 --size 1920x1080   # 先看报价
janction-render render minute.blend --frames 1-1440 --output mp4 --wait  # 再渲染
# 或作为 MCP 接进 Claude Code
claude mcp add --transport http janction-render https://render.janction.jp/mcp

五、怎么选:先回答三个问题

  1. 要不要改场景? 要——用本地 Blender MCP(云渲染没有场景编辑工具,见上一篇);不要——云渲染。
  2. 时间值不值钱? 等得起——本机、SheepIt、Colab 这些免费路线;等不起——按秒付费或商业农场。租整机最容易被忽略的成本是"忘了关机的那一晚"。
  3. Agent 会不会失控? 会——所以只给它报价 + 额度 + 人工审批,别把一张无上限的卡交出去;能关的限额才是限额。

渲染产出的资产进下游之前,用浏览器过一眼是最便宜的质检:拿 3D 模型在线查看器 拖动、旋转、检查材质与面数,不需要装任何软件;要看 glTF 的动画与扩展细节就用 glTF 查看器。


来源

  • JANCTION Render / JasmyLab Inc., Add 3D product shots to your app in 40 lines: upload, a fixed-price order, a webhook (JANCTION Render, FastAPI)(dev.to,2026-10-12):https://dev.to/_903a3934b362f0afe2a8/add-3d-product-shots-to-your-app-in-40-lines-upload-a-fixed-price-order-a-webhook-janction-3eej
  • JANCTION Render / JasmyLab Inc., I turned a GLB into a product video from an AI chat: 5 seconds, about 60 JPY, and you only pay the GPU seconds used(dev.to,2026-10-13):https://dev.to/_903a3934b362f0afe2a8/i-turned-a-glb-into-a-product-video-from-an-ai-chat-5-seconds-about-60-jpy-and-you-only-pay-the-3hp4
  • JANCTION Render / JasmyLab Inc., The cheapest way to render a 1-minute Blender animation without buying a GPU: six options, with measured numbers(dev.to,2026-10-13):https://dev.to/_903a3934b362f0afe2a8/the-cheapest-way-to-render-a-1-minute-blender-animation-without-buying-a-gpu-six-options-with-5341
  • 官方页面:价格 | API guide | 产物视频 | 基准 | 状态;代码与客户端:https://github.com/JasmyLab-JANCTION/janction-render

同主题阅读

本文由 BimAnt 编译整理,转载请注明出处。

本文属于「AI × 3D」专题。查看专题全部文章 →