Skip to content

格式转换

打破 3D 资产在不同软件与平台间的流通壁垒。支持 GLB、FBX、OBJ、USDZ 等多种行业标准格式的互转。特别针对 Web、移动端 AR 和 3D 打印场景进行了格式兼容性优化。

典型应用场景

  • AR 体验适配:一键导出 iOS 原生支持的 usdz 格式,实现 AR 快速预览
  • 引擎集成:将模型转换为 fbx 格式,保留动画与材质信息,无缝对接 Unity 或 Unreal

本页使用的 API 参考 POST /3d_models/conversions

3D 模型传入方式

模型参数同样支持三种传入格式:

  • 前置任务结果:将文生模型或图生模型任务返回的 asset_path 直接使用,实现无缝串联
  • Base64 编码:传入 .glb 文件内容的 base64 字符串(不含 data: 前缀)
  • 公网 URL:传入可公开访问的 .glb 或其他支持格式文件链接

基础示例

bash
curl -X POST 'https://api.v2fun.ai/api/v1/3d_models/conversions' \
  -H 'Authorization: Bearer $V2FUN_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
      "input_model": "models/example.glb",
      "output_format": "string"
    }'
javascript
const response = await fetch('https://api.v2fun.ai/api/v1/3d_models/conversions', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer $V2FUN_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "input_model": "models/example.glb",
    "output_format": "string"
  }),
});
const data = await response.json();
python
import requests

resp = requests.post(
    'https://api.v2fun.ai/api/v1/3d_models/conversions',
    headers={
        'Authorization': 'Bearer $V2FUN_API_KEY',
        'Content-Type': 'application/json',
    },
    json={
        "input_model": "models/example.glb",
        "output_format": "string"
    },
)
print(resp.json())
java
import java.net.URI;
import java.net.http.*;

HttpClient client = HttpClient.newHttpClient();
String body = "{\"input_model\":\"models/example.glb\",\"output_format\":\"string\"}";
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.v2fun.ai/api/v1/3d_models/conversions"))
    .header("Authorization", "Bearer $V2FUN_API_KEY")
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(body))
    .build();
HttpResponse<String> response = client.send(
    request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

核心用例

主流格式覆盖

支持导出为 obj, fbx, glb, stl, usdz 等,满足全平台分发需求。轮询任务状态至 COMPLETED 后,metadata[].downloads 中包含可直接下载的文件地址。

output_format: obj · ply · stl · fbx · glb · usdz · 3mf

bash
curl -X POST 'https://api.v2fun.ai/api/v1/3d_models/conversions' \
  -H 'Authorization: Bearer $V2FUN_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
      "input_model": "https://asset.v2fun.ai/upload/retex-input-cat.glb",
      "output_format": "fbx"
    }'
javascript
const response = await fetch('https://api.v2fun.ai/api/v1/3d_models/conversions', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer $V2FUN_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "input_model": "https://asset.v2fun.ai/upload/retex-input-cat.glb",
    "output_format": "fbx"
  }),
});
const data = await response.json();
python
import requests

resp = requests.post(
    'https://api.v2fun.ai/api/v1/3d_models/conversions',
    headers={
        'Authorization': 'Bearer $V2FUN_API_KEY',
        'Content-Type': 'application/json',
    },
    json={
        "input_model": "https://asset.v2fun.ai/upload/retex-input-cat.glb",
        "output_format": "fbx"
    },
)
print(resp.json())
java
import java.net.URI;
import java.net.http.*;

HttpClient client = HttpClient.newHttpClient();
String body = "{\"input_model\":\"https://asset.v2fun.ai/upload/retex-input-cat.glb\",\"output_format\":\"fbx\"}";
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.v2fun.ai/api/v1/3d_models/conversions"))
    .header("Authorization", "Bearer $V2FUN_API_KEY")
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(body))
    .build();
HttpResponse<String> response = client.send(
    request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
json
{
  "task_uuid": "<task_uuid>",
  "task_type": "<task_type>",
  "model": "<model>",
  "status": "<taskstatus>",
  "created_at": 0,
  "completed_at": 0,
  "result": []
}

获取任务结果

json
{
  "status": "COMPLETED",
  "task_uuid": "7bae217c-3029-48c6-b45e-2e013a4b9769",
  "metadata": [
    {
      "model_id": "76cbd40f-b20a-40ea-85fd-c9fdf5ce6ca8",
      "downloads": [
        {
          "asset_path": "models/76cbd40f-b20a-40ea-85fd-c9fdf5ce6ca8.fbx",
          "download_url": "https://asset.v2fun.ai/upload/convert-result-cat.fbx"
        }
      ]
    }
  ]
}