Skip to main content
POST
从自定义全景图创建场景
与用 panoramaUri 调用创建场景类似,但还要说明全景图在你自己世界中的拍摄位置:panoramaC2w 是它的相机位姿,metersPerUnit 是场景模型坐标系与你的坐标系之间的比例。结果中的所有相机——现在批次中的视图,以及之后生成的新视图——都以你的世界坐标系返回,因此场景能与你已有的内容对齐。 该任务属于 pano 任务:查询场景任务会返回 operation: "pano",结果也相同。
计费:场景任务目前不消耗积分。

请求参数

使用 application/json,最大 1 MiB。不接受未知字段。 本接口不接受 prompt、referenceImages 和 quality。

坐标系

panoramaC2w 是一个 4 × 4 的相机到世界矩阵,按四行书写:
  • 最后一行必须为 [0, 0, 0, 1]。
  • 左上角 3 × 3 旋转部分必须正交归一(无缩放、无切变),且为真旋转(行列式为 +1,无镜像),容差 1e-4。
  • 平移部分(第四列的前三个值)是全景图在你的世界中的位置,单位为你的单位。
  • 场景必须在 .spz 可存储的范围内:平移分量的最大绝对值加上 25 × metersPerUnit(场景半径)必须小于 4000。
场景模型坐标系中的点 p 在你的坐标系中位于 R · (metersPerUnit · p) + t,其中 R 和 t 是 panoramaC2w 的旋转和平移。结果中的相机也按同样方式转换。

响应参数

返回 200 OK 和 processing 状态的场景任务,operation 为 pano:

常见错误

示例

一张在原点上方 1.5 个单位处拍摄、绕 y 轴旋转 90° 的全景图,使用默认比例:
用查询场景任务轮询,然后用生成场景视图和重建场景继续该会话。

授权

Authorization
string
header
必填

服务端 SDK 使用项目 API 密钥,Remote MCP 使用 OAuth 访问令牌。不要在浏览器代码中暴露项目密钥。

请求头

X-Request-Id
string

可选的调用者自定义关联 ID,最长 128 字符。服务会在响应头返回实际使用的值,便于追踪和支持排查。

Required string length: 1 - 128
X-Viggle-Source
string

可选来源标签,最长 128 字符,用于识别 SDK、集成、产品入口或内部工作流。

Required string length: 1 - 128

请求体

application/json

POST /v1/scenes/custom-pano 的请求体。全景图放在调用方世界坐标系中的 panoramaC2w 处:模型坐标系中的点 p 对应 R · (metersPerUnit · p) + t。旋转部分必须正交且不含镜像(容差 1e-4),平移分量绝对值的最大值加上 25 × metersPerUnit 必须小于 4000。

sessionId
string
必填

调用方自定的会话 ID,按账户隔离。一个会话对应一个场景及其全部图像批次,同一时间只运行一个任务;已有任务 processing 时再提交会返回 409,error.details.running_task_id 为正在运行的任务。

Required string length: 1 - 128
Pattern: ^[A-Za-z0-9_-]+$
示例:

"living-room-01"

panoramaUri
string<uri>
必填

360° 全景图的 URL。

panoramaC2w
number[][]
必填

4 × 4 相机到世界(camera-to-world)矩阵,按行写成 4 行、每行 4 个有限数值;最后一行必须为 [0, 0, 0, 1]。

Required array length: 4 elements
Required array length: 4 elements
示例:
metersPerUnit
number
默认值:1

在应用 panoramaC2w 之前作用于模型坐标的缩放系数。

必填范围: x >= 0.05
spzOutputUrl
string<uri>

等同于 outputUris.spz。

outputUris
object

调用方自己的上传地址,Viggle 完成后用 PUT 把对应文件上传过去;值为 null 的项会被忽略。上传到这里的 .spz Viggle 不再保留,结果中的 spz.url 即该地址;预览图和全景图上传后 Viggle 仍保留一份,结果中链接指向 Viggle 的副本。每个地址必须是 http(s)、不含账号密码、且主机只解析到公网地址。

响应

场景任务已启动。

场景任务(以 scn_ 开头),所有 /v1/scenes 提交接口和 GET /v1/scenes/{task_id} 都返回它。ready、failed、cancelled 为终态。任务结束后约 72 小时内可查询。

id
string
必填

任务 ID,格式为 scn_{runId}.{sessionId}。

sessionId
string
必填
operation
enum<string>
必填

custom-pano 任务也返回 pano。

可用选项:
pano,
generate,
reconstruct
status
enum<string>
必填
可用选项:
processing,
ready,
failed,
cancelled
createdAt
integer<int64> | null
必填

开始时间,Unix 毫秒。

completedAt
integer<int64> | null
必填

结束时间,Unix 毫秒;processing 时为 null。

result
object | null
必填

只在 ready 时有值。

error
object | null
必填

只在 failed 时有值。code 为 INVALID_REQUEST(不可重试,模型拒绝了输入,例如引用了其他会话的批次)或 PROCESSING_FAILED(可重试)。