GPT Image 2.5 ist LIVE — Flare & Sunburst | Im Bild-Generator ausprobieren →

wavespeed-ai/

TRELLIS.2 Image-to-3D turns a single reference image into a textured 3D GLB model with PBR materials for game assets, product visualization, 3D design, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

image-to-3d
Eingabe
Enable Safety Checker

Bereit

$0.2pro Durchlauf·~50 / $10

BeispieleAlle anzeigen

Ähnliche Modelle

README

TRELLIS.2 Image to 3D

TRELLIS.2 Image to 3D turns a single input image into a textured 3D GLB model with PBR materials. Upload a clear image of one object, choose generation resolution, texture size, face-count target, and background handling, then generate a 3D asset for visualization, games, prototyping, or further editing.

Why Choose This?

  • Single-image 3D generation
    Create a textured 3D model from one input image.

  • PBR material output
    Generate GLB assets with embedded UVs, base-color textures, and metallic/roughness materials.

  • Resolution control
    Choose 512, 1024, or 1536 depending on cost, speed, and detail needs.

  • Texture-size options
    Select 1024, 2048, or 4096 texture size for different asset-quality requirements.

  • Face-count control
    Set a target face count to guide mesh simplification for downstream workflows.

  • Background removal option
    Use remove_background to clean the input before 3D generation.

Parameters

ParameterRequiredDescription
imageYesInput image URL, data URI, or Base64 image. Use one clear image of a single object.
resolutionNoGeneration resolution: 512, 1024, or 1536. Default: 1024.
texture_sizeNoTexture size: 1024, 2048, or 4096. Default: 2048.
target_face_countNoApproximate mesh simplification target. Range: 10000–1000000. Default: 200000.
remove_backgroundNoRemove the image background before generation. Default: true.
seedNoRandom seed for reproducible results. Use -1 for a random seed.

How to Use

  1. Upload one image — Provide a clear image of a single object.
  2. Choose resolution — Use 512 for lower-cost drafts, 1024 for standard generation, or 1536 for higher-detail output.
  3. Choose texture size — Use 1024 or 2048 for standard textures, or 4096 when higher texture detail is needed.
  4. Set face count optional — Adjust target_face_count based on your geometry-detail or optimization needs.
  5. Configure background removal optional — Keep remove_background enabled when the object should be separated from its background.
  6. Set seed optional — Use a fixed seed for reproducible results, or -1 for random generation.
  7. Submit — Generate the 3D model and retrieve the GLB output.

Pricing

Pricing is based on selected resolution and whether texture_size is set to 4096.

ResolutionBase CostWith 4096 Texture
512$0.10$0.15
1024$0.20$0.25
1536$0.40$0.45

texture_size values of 1024 and 2048 do not add a separate charge. Selecting 4096 adds $0.05.

target_face_count, remove_background, and seed do not add separate charges.

Best Use Cases

  • Image-to-3D asset creation — Convert a single object image into a textured 3D model.
  • Game and real-time assets — Generate starting meshes for downstream optimization or editing.
  • Product visualization — Turn product images into 3D assets for previews and presentations.
  • Creative prototyping — Explore object forms and 3D concepts from image references.
  • Design workflows — Generate editable GLB assets for 3D applications and viewers.

Pro Tips

  • Use a clear, well-lit image with one main object.
  • Avoid cluttered backgrounds, heavy shadows, reflections, occlusion, or motion blur.
  • Keep remove_background enabled when the object should be isolated before generation.
  • Use 512 for quick tests and 1536 when higher detail matters.
  • Use 4096 texture size when the model needs more detailed surface appearance.
  • Lower target_face_count for lighter assets and higher values when detail preservation matters.
  • Inspect the GLB from multiple angles before using it in production.

Notes

  • image is required.
  • This endpoint supports single-image input only.
  • Text-only generation and multi-view image input are not supported.
  • The output is a generated 3D interpretation, not an exact 3D scan.
  • The mesh is not guaranteed to be watertight.
  • Higher resolution and larger texture size may take longer to generate.
Hinweis:Diese Website nutzt KI-Modelle von Drittanbietern. Dokumentationspreise dienen nur als Referenz und können veraltet sein. Die Schaltfläche „Generate“ zeigt eine Schätzung; maßgeblich ist der endgültige Auftragspreis.

Trellis 2 Image To 3d API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/trellis-2/image-to-3d with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Trellis 2 Image To 3d below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "resolution": "1024",
    "texture_size": 2048,
    "target_face_count": 200000,
    "remove_background": true
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/trellis-2/image-to-3d" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout|deleted) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/trellis-2/image-to-3d";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
        "resolution": "1024",
        "texture_size": 2048,
        "target_face_count": 200000,
        "remove_background": true
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout", "deleted"].includes(result.status)) throw new Error(JSON.stringify(result));
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "resolution": "1024",
    "texture_size": 2048,
    "target_face_count": 200000,
    "remove_background": True
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/wavespeed-ai/trellis-2/image-to-3d", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout", "deleted"}:
        raise RuntimeError(result)
    time.sleep(2)

Trellis 2 Image To 3d API — Frequently asked questions

What is the Trellis 2 Image To 3d API?

Trellis 2 Image To 3d is a WaveSpeedAI model for 3D asset generation from images, exposed as a REST API on WaveSpeedAI. TRELLIS.2 Image-to-3D turns a single reference image into a textured 3D GLB model with PBR materials for game assets, product visualization, 3D design, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Trellis 2 Image To 3d API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates Python, JavaScript, and cURL examples for submitting requests and polling results. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/wavespeed-ai/trellis-2-image-to-3d.

How much does Trellis 2 Image To 3d cost per run?

Trellis 2 Image To 3d starts at $0.2 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Trellis 2 Image To 3d accept?

Key inputs: `image`, `resolution`, `seed`, `remove_background`, `target_face_count`, `texture_size`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/wavespeed-ai/trellis-2-image-to-3d.

How do I get started with the Trellis 2 Image To 3d API?

Sign up for a free WaveSpeedAI account to claim starter credits, copy your API key from /accesskey, then call the endpoint shown in the API tab of the playground. The playground also auto-generates a code sample in Python, JavaScript, or cURL for the parameters you've set.

Can I use Trellis 2 Image To 3d outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (WaveSpeedAI). Check the provider's applicable terms and WaveSpeedAI's Terms of Service before commercial use.

TRELLIS.2 Image-to-3D API on WaveSpeedAI