Skip to content

3D Model Generation

V2Fun offers three complementary 3D modeling modes: Text to 3D (from a text description), Image to 3D (rebuild a full 3D asset from a single photo), and Multi-view to 3D (fuse multi-angle photos for industrial-grade precision). All modes support white mesh, textured, PBR, or 8K HD output quality.

Typical Application Scenarios

  • Game / Film assets: Quickly convert concept art or descriptions into engine-ready GLB models.
  • E-commerce 3D: Generate 360° interactive models from product photos.
  • Industrial digital twins: Accurately reconstruct geometry from multi-angle scans for high-precision simulation.
  1. Choose input mode → text description with prompt; single photo with input_image; multi-angle photos with input_images
  2. Choose output format
    • with_texture: false — geometry-only white mesh (fast, great for shape validation)
    • with_texture: true — include AI-generated texture maps
  3. Optional: enhance texture quality (requires with_texture: true)
    • hd_texture: true — upscale to 8K ultra-high-res
    • pbr_texture: true — add metallic/roughness PBR maps for modern renderers
  4. Export → download the GLB and use in your 3D engine or AR/VR platform

API Reference used on this page POST /3d_models/meshes

Basic Examples

bash
curl -X POST 'https://api.v2fun.ai/api/v1/3d_models/meshes' \
  -H 'Authorization: Bearer $V2FUN_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
      "prompt": "a classic wooden dining chair, clean design, natural wood texture"
    }'
javascript
const response = await fetch('https://api.v2fun.ai/api/v1/3d_models/meshes', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer $V2FUN_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "prompt": "a classic wooden dining chair, clean design, natural wood texture"
  }),
});
const data = await response.json();
python
import requests

resp = requests.post(
    'https://api.v2fun.ai/api/v1/3d_models/meshes',
    headers={
        'Authorization': 'Bearer $V2FUN_API_KEY',
        'Content-Type': 'application/json',
    },
    json={
        "prompt": "a classic wooden dining chair, clean design, natural wood texture"
    },
)
print(resp.json())
java
import java.net.URI;
import java.net.http.*;

HttpClient client = HttpClient.newHttpClient();
String body = "{\"prompt\":\"a classic wooden dining chair, clean design, natural wood texture\"}";
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.v2fun.ai/api/v1/3d_models/meshes"))
    .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());

Core Use Cases

Text to 3D

Generate a 3D mesh from a text description. Output is a white mesh by default; enable with_texture: true for AI-generated textures, and optionally add hd_texture or pbr_texture for higher quality.

Base Geometry Generation

By turning off texture generation, you can rapidly obtain the object's geometric structure. This is practical for artists who only need a 3D outline or plan to do custom texturing later.

bash
curl -X POST 'https://api.v2fun.ai/api/v1/3d_models/meshes' \
  -H 'Authorization: Bearer $V2FUN_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
      "prompt": "a royal crown with five pointed peaks and gem sockets",
      "with_texture": false
    }'
javascript
const response = await fetch('https://api.v2fun.ai/api/v1/3d_models/meshes', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer $V2FUN_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "prompt": "a royal crown with five pointed peaks and gem sockets",
    "with_texture": false
  }),
});
const data = await response.json();
python
import requests

resp = requests.post(
    'https://api.v2fun.ai/api/v1/3d_models/meshes',
    headers={
        'Authorization': 'Bearer $V2FUN_API_KEY',
        'Content-Type': 'application/json',
    },
    json={
        "prompt": "a royal crown with five pointed peaks and gem sockets",
        "with_texture": false
    },
)
print(resp.json())
java
import java.net.URI;
import java.net.http.*;

HttpClient client = HttpClient.newHttpClient();
String body = "{\"prompt\":\"a royal crown with five pointed peaks and gem sockets\",\"with_texture\":false}";
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.v2fun.ai/api/v1/3d_models/meshes"))
    .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());

High-Precision Material Generation

Synchronously generate standard diffuse, metallic, and roughness maps to make models look more realistic in renderers.

bash
curl -X POST 'https://api.v2fun.ai/api/v1/3d_models/meshes' \
  -H 'Authorization: Bearer $V2FUN_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
      "prompt": "an ornate wooden treasure chest filled with glowing gems and gold coins, open lid",
      "with_texture": true,
      "pbr_texture": true,
      "hd_texture": true
    }'
javascript
const response = await fetch('https://api.v2fun.ai/api/v1/3d_models/meshes', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer $V2FUN_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "prompt": "an ornate wooden treasure chest filled with glowing gems and gold coins, open lid",
    "with_texture": true,
    "pbr_texture": true,
    "hd_texture": true
  }),
});
const data = await response.json();
python
import requests

resp = requests.post(
    'https://api.v2fun.ai/api/v1/3d_models/meshes',
    headers={
        'Authorization': 'Bearer $V2FUN_API_KEY',
        'Content-Type': 'application/json',
    },
    json={
        "prompt": "an ornate wooden treasure chest filled with glowing gems and gold coins, open lid",
        "with_texture": true,
        "pbr_texture": true,
        "hd_texture": true
    },
)
print(resp.json())
java
import java.net.URI;
import java.net.http.*;

HttpClient client = HttpClient.newHttpClient();
String body = "{\"prompt\":\"an ornate wooden treasure chest filled with glowing gems and gold coins, open lid\",\"with_texture\":true,\"pbr_texture\":true,\"hd_texture\":true}";
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.v2fun.ai/api/v1/3d_models/meshes"))
    .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());

Image to 3D

Leveraging powerful spatial reasoning, reconstruct a high-quality 3D model from just one photo. The system handles perspective automatically, matching the original image in scale and structure.

High-Def Texture Optimization

Enable hd_texture to upgrade model textures to 8K ultra-high resolution, preserving fine material details, eliminating stretch blur, and completing back textures automatically.

bash
curl -X POST 'https://api.v2fun.ai/api/v1/3d_models/meshes' \
  -H 'Authorization: Bearer $V2FUN_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
      "input_image": "https://asset.v2fun.ai/upload/img23d-input-mech.png",
      "with_texture": true,
      "hd_texture": true
    }'
javascript
const response = await fetch('https://api.v2fun.ai/api/v1/3d_models/meshes', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer $V2FUN_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "input_image": "https://asset.v2fun.ai/upload/img23d-input-mech.png",
    "with_texture": true,
    "hd_texture": true
  }),
});
const data = await response.json();
python
import requests

resp = requests.post(
    'https://api.v2fun.ai/api/v1/3d_models/meshes',
    headers={
        'Authorization': 'Bearer $V2FUN_API_KEY',
        'Content-Type': 'application/json',
    },
    json={
        "input_image": "https://asset.v2fun.ai/upload/img23d-input-mech.png",
        "with_texture": true,
        "hd_texture": true
    },
)
print(resp.json())
java
import java.net.URI;
import java.net.http.*;

HttpClient client = HttpClient.newHttpClient();
String body = "{\"input_image\":\"https://asset.v2fun.ai/upload/img23d-input-mech.png\",\"with_texture\":true,\"hd_texture\":true}";
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.v2fun.ai/api/v1/3d_models/meshes"))
    .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());
Input Image
Input Image
Output

PBR Material Generation

Generate physically-based textures simultaneously, making the model render realistically across different lighting environments.

bash
curl -X POST 'https://api.v2fun.ai/api/v1/3d_models/meshes' \
  -H 'Authorization: Bearer $V2FUN_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
      "input_image": "https://asset.v2fun.ai/upload/img23d-input-mech.png",
      "with_texture": true,
      "pbr_texture": true
    }'
javascript
const response = await fetch('https://api.v2fun.ai/api/v1/3d_models/meshes', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer $V2FUN_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "input_image": "https://asset.v2fun.ai/upload/img23d-input-mech.png",
    "with_texture": true,
    "pbr_texture": true
  }),
});
const data = await response.json();
python
import requests

resp = requests.post(
    'https://api.v2fun.ai/api/v1/3d_models/meshes',
    headers={
        'Authorization': 'Bearer $V2FUN_API_KEY',
        'Content-Type': 'application/json',
    },
    json={
        "input_image": "https://asset.v2fun.ai/upload/img23d-input-mech.png",
        "with_texture": true,
        "pbr_texture": true
    },
)
print(resp.json())
java
import java.net.URI;
import java.net.http.*;

HttpClient client = HttpClient.newHttpClient();
String body = "{\"input_image\":\"https://asset.v2fun.ai/upload/img23d-input-mech.png\",\"with_texture\":true,\"pbr_texture\":true}";
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.v2fun.ai/api/v1/3d_models/meshes"))
    .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());
Input Image
Input Image
Output

Multi-view to 3D

If you have photos of an object from multiple angles (front, back, side), this feature uses multi-view stereo matching for industrial-grade precision far superior to single-image reconstruction.

High-Fidelity Reconstruction

By inputting photos from different dimensions, the system performs complex triangulation to generate 3D assets with precise physical proportions.

bash
curl -X POST 'https://api.v2fun.ai/api/v1/3d_models/meshes' \
  -H 'Authorization: Bearer $V2FUN_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
      "input_images": {
        "front": "https://asset.v2fun.ai/upload/mv-input-front.png",
        "left": "https://asset.v2fun.ai/upload/mv2-input-right.png",
        "right": "https://asset.v2fun.ai/upload/mv2-input-left.png"
      },
      "with_texture": true
    }'
javascript
const response = await fetch('https://api.v2fun.ai/api/v1/3d_models/meshes', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer $V2FUN_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "input_images": {
      "front": "https://asset.v2fun.ai/upload/mv-input-front.png",
      "left": "https://asset.v2fun.ai/upload/mv2-input-right.png",
      "right": "https://asset.v2fun.ai/upload/mv2-input-left.png"
    },
    "with_texture": true
  }),
});
const data = await response.json();
python
import requests

resp = requests.post(
    'https://api.v2fun.ai/api/v1/3d_models/meshes',
    headers={
        'Authorization': 'Bearer $V2FUN_API_KEY',
        'Content-Type': 'application/json',
    },
    json={
        "input_images": {
            "front": "https://asset.v2fun.ai/upload/mv-input-front.png",
            "left": "https://asset.v2fun.ai/upload/mv2-input-right.png",
            "right": "https://asset.v2fun.ai/upload/mv2-input-left.png"
        },
        "with_texture": true
    },
)
print(resp.json())
java
import java.net.URI;
import java.net.http.*;

HttpClient client = HttpClient.newHttpClient();
String body = "{\"input_images\":{\"front\":\"https://asset.v2fun.ai/upload/mv-input-front.png\",\"left\":\"https://asset.v2fun.ai/upload/mv2-input-right.png\",\"right\":\"https://asset.v2fun.ai/upload/mv2-input-left.png\"},\"with_texture\":true}";
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.v2fun.ai/api/v1/3d_models/meshes"))
    .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());
Front
Front
Left
Left
Right
Right
Output