图片生成 3D
图片生成模型
通过一张上传图片生成 3D 模型。支持控制模型数量、网格质量、目标面数以及是否仅生成网格。未传新参数时保持原有默认行为。
POST
/
api
/
generateModelWithImage
curl --request POST \
--url https://alb.neural4d.com:3000/api/generateModelWithImage \
--header 'Authorization: Bearer <token>' \
--form 'image=@/path/to/file' \
--form 'modelCount=1' \
--form 'disablePbr=0' \
--form 'onlyGenerateMesh=false' \
--form 'mesh_quality=high' \
--form 'faceNum=1000000'
import requests
response = requests.request(
"POST",
"https://alb.neural4d.com:3000/api/generateModelWithImage",
headers={
"Authorization": "Bearer <token>",
},
files={"image": open('/path/to/file', 'rb')},
)
print(response.json())
const response = await fetch("https://alb.neural4d.com:3000/api/generateModelWithImage", {
method: "POST",
headers: {
"Authorization": "Bearer <token>"
},
body: (() => { const form = new FormData(); form.append("file", fileInput.files[0]); return form; })(),
});
const data = await response.json();
console.log(data);
const response: Response = await fetch("https://alb.neural4d.com:3000/api/generateModelWithImage", {
method: "POST",
headers: {
"Authorization": "Bearer <token>"
},
body: (() => { const form = new FormData(); form.append("file", fileInput.files[0]); return form; })(),
});
const data = await response.json();
console.log(data);
import java.net.URI;
import java.net.http.*;
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://alb.neural4d.com:3000/api/generateModelWithImage"))
.header("Authorization", "Bearer <token>")
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
payload := nil
req, _ := http.NewRequest("POST", "https://alb.neural4d.com:3000/api/generateModelWithImage", payload)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
bodyBytes, _ := io.ReadAll(resp.Body)
fmt.Println(string(bodyBytes))
require "net/http"
require "json"
uri = URI("https://alb.neural4d.com:3000/api/generateModelWithImage")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer <token>"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") { |http| http.request(request) }
puts response.body
<?php
$ch = curl_init("https://alb.neural4d.com:3000/api/generateModelWithImage");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer <token>"],
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://alb.neural4d.com:3000/api/generateModelWithImage");
request.Headers.TryAddWithoutValidation("Authorization", "Bearer <token>");
using var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
{
"type": "sys",
"message": "Generating",
"uuids": [
"f47ac10b-58cc-4372-a567-0e02b2c3d479"
],
"uploadedImageUrl": "https://s3.neural4d.com/example.png?sign=xxx.png",
"generationConfig": {
"faceNum": {
"default": 1000000,
"min": 500000,
"max": 1000000,
"value": 1000000
}
}
}
{
"limitType": 3,
"message": "Please check the image."
}
{
"errors": [
{
"type": "field",
"value": 5,
"msg": "modelCount must be an integer between 1 and 4 (inclusive)",
"path": "modelCount",
"location": "body"
}
]
}
"Unauthorized"
{
"message": "Insufficient points or account restricted"
}
{
"message": "Too many requests from this user, please try again after a minute."
}
{
"error": "Internal server error"
}
授权
string
默认值:"Bearer ${YOUR_API_KEY}"
必填
使用 Neural4D 网站提供的 Bearer token。
请求体 multipart/form-data
- Option 1
- Option 2
string<binary>
必填
必填输入文件。multipart 文件部分必须使用
image/* Content-Type,且不得超过 50 MB。enum<string>
必填
标准网格质量。可选值:
standard。integer
默认值:4
生成模型的数量。取值范围:
1 <= x <= 4。enum<integer>
默认值:0
PBR 开关。使用
0 开启 PBR,使用 1 关闭 PBR。可选值:0、1。boolean
默认值:false
是否仅生成网格,不生成纹理或 PBR 输出。
boolean
默认值:false
图像增强功能处于内测阶段,如需启用,请联系客服。
integer
标准质量的目标面数。取值范围:
100000 <= x <= 500000。默认值:500000。string<binary>
必填
必填输入文件。multipart 文件部分必须使用
image/* Content-Type,且不得超过 50 MB。enum<string>
默认值:"high"
高或超高网格质量。可选值:
high、extra_high。省略此字段时也使用该分支。integer
默认值:4
生成模型的数量。取值范围:
1 <= x <= 4。enum<integer>
默认值:0
PBR 开关。使用
0 开启 PBR,使用 1 关闭 PBR。可选值:0、1。boolean
默认值:false
是否仅生成网格,不生成纹理或 PBR 输出。
boolean
默认值:false
图像增强功能处于内测阶段,如需启用,请联系客服。
integer
高或超高质量的目标面数。取值范围:
500000 <= x <= 1000000。默认值:1000000。curl --request POST \
--url https://alb.neural4d.com:3000/api/generateModelWithImage \
--header 'Authorization: Bearer <token>' \
--form 'image=@/path/to/file' \
--form 'modelCount=1' \
--form 'disablePbr=0' \
--form 'onlyGenerateMesh=false' \
--form 'mesh_quality=high' \
--form 'faceNum=1000000'
import requests
response = requests.request(
"POST",
"https://alb.neural4d.com:3000/api/generateModelWithImage",
headers={
"Authorization": "Bearer <token>",
},
files={"image": open('/path/to/file', 'rb')},
)
print(response.json())
const response = await fetch("https://alb.neural4d.com:3000/api/generateModelWithImage", {
method: "POST",
headers: {
"Authorization": "Bearer <token>"
},
body: (() => { const form = new FormData(); form.append("file", fileInput.files[0]); return form; })(),
});
const data = await response.json();
console.log(data);
const response: Response = await fetch("https://alb.neural4d.com:3000/api/generateModelWithImage", {
method: "POST",
headers: {
"Authorization": "Bearer <token>"
},
body: (() => { const form = new FormData(); form.append("file", fileInput.files[0]); return form; })(),
});
const data = await response.json();
console.log(data);
import java.net.URI;
import java.net.http.*;
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://alb.neural4d.com:3000/api/generateModelWithImage"))
.header("Authorization", "Bearer <token>")
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
payload := nil
req, _ := http.NewRequest("POST", "https://alb.neural4d.com:3000/api/generateModelWithImage", payload)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
bodyBytes, _ := io.ReadAll(resp.Body)
fmt.Println(string(bodyBytes))
require "net/http"
require "json"
uri = URI("https://alb.neural4d.com:3000/api/generateModelWithImage")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer <token>"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") { |http| http.request(request) }
puts response.body
<?php
$ch = curl_init("https://alb.neural4d.com:3000/api/generateModelWithImage");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer <token>"],
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://alb.neural4d.com:3000/api/generateModelWithImage");
request.Headers.TryAddWithoutValidation("Authorization", "Bearer <token>");
using var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
响应
- 200
- 400
- 401
- 402
- 429
- 500
生成任务已接受,或请求未通过内容审核。
- Option 1
- Option 2
enum<string>
必填
响应来源或类型标记。可选值:
sys。示例:"sys"。string
必填
生成状态消息。可选值:
Generating。string<uuid>[]
必填
可用于查询生成模型的 UUID 列表。数组长度:
1 - 4 个元素。string<uri> | null
必填
上传源图片的签名访问地址;无法生成地址时为 null。
integer | null
可用时返回本次请求扣除的点数。
object
本次生成请求实际采用的标准化面数配置。
请求参数或图片文件无效。
身份认证失败。
{
"type": "sys",
"message": "Generating",
"uuids": [
"f47ac10b-58cc-4372-a567-0e02b2c3d479"
],
"uploadedImageUrl": "https://s3.neural4d.com/example.png?sign=xxx.png",
"generationConfig": {
"faceNum": {
"default": 1000000,
"min": 500000,
"max": 1000000,
"value": 1000000
}
}
}
{
"limitType": 3,
"message": "Please check the image."
}
{
"errors": [
{
"type": "field",
"value": 5,
"msg": "modelCount must be an integer between 1 and 4 (inclusive)",
"path": "modelCount",
"location": "body"
}
]
}
"Unauthorized"
{
"message": "Insufficient points or account restricted"
}
{
"message": "Too many requests from this user, please try again after a minute."
}
{
"error": "Internal server error"
}
⌘I
curl --request POST \
--url https://alb.neural4d.com:3000/api/generateModelWithImage \
--header 'Authorization: Bearer <token>' \
--form 'image=@/path/to/file' \
--form 'modelCount=1' \
--form 'disablePbr=0' \
--form 'onlyGenerateMesh=false' \
--form 'mesh_quality=high' \
--form 'faceNum=1000000'
import requests
response = requests.request(
"POST",
"https://alb.neural4d.com:3000/api/generateModelWithImage",
headers={
"Authorization": "Bearer <token>",
},
files={"image": open('/path/to/file', 'rb')},
)
print(response.json())
const response = await fetch("https://alb.neural4d.com:3000/api/generateModelWithImage", {
method: "POST",
headers: {
"Authorization": "Bearer <token>"
},
body: (() => { const form = new FormData(); form.append("file", fileInput.files[0]); return form; })(),
});
const data = await response.json();
console.log(data);
const response: Response = await fetch("https://alb.neural4d.com:3000/api/generateModelWithImage", {
method: "POST",
headers: {
"Authorization": "Bearer <token>"
},
body: (() => { const form = new FormData(); form.append("file", fileInput.files[0]); return form; })(),
});
const data = await response.json();
console.log(data);
import java.net.URI;
import java.net.http.*;
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://alb.neural4d.com:3000/api/generateModelWithImage"))
.header("Authorization", "Bearer <token>")
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
payload := nil
req, _ := http.NewRequest("POST", "https://alb.neural4d.com:3000/api/generateModelWithImage", payload)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
bodyBytes, _ := io.ReadAll(resp.Body)
fmt.Println(string(bodyBytes))
require "net/http"
require "json"
uri = URI("https://alb.neural4d.com:3000/api/generateModelWithImage")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer <token>"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") { |http| http.request(request) }
puts response.body
<?php
$ch = curl_init("https://alb.neural4d.com:3000/api/generateModelWithImage");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer <token>"],
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://alb.neural4d.com:3000/api/generateModelWithImage");
request.Headers.TryAddWithoutValidation("Authorization", "Bearer <token>");
using var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
{
"type": "sys",
"message": "Generating",
"uuids": [
"f47ac10b-58cc-4372-a567-0e02b2c3d479"
],
"uploadedImageUrl": "https://s3.neural4d.com/example.png?sign=xxx.png",
"generationConfig": {
"faceNum": {
"default": 1000000,
"min": 500000,
"max": 1000000,
"value": 1000000
}
}
}
{
"limitType": 3,
"message": "Please check the image."
}
{
"errors": [
{
"type": "field",
"value": 5,
"msg": "modelCount must be an integer between 1 and 4 (inclusive)",
"path": "modelCount",
"location": "body"
}
]
}
"Unauthorized"
{
"message": "Insufficient points or account restricted"
}
{
"message": "Too many requests from this user, please try again after a minute."
}
{
"error": "Internal server error"
}

