text-to-3d-backend / README.md
aniket47's picture
Initial FastAPI backend for HF Spaces
86e7db6
metadata
title: Text to 3D Backend
emoji: 🎨
colorFrom: blue
colorTo: purple
sdk: docker
pinned: false
license: mit
app_port: 7860

Text to 3D Model Converter - Backend

This is the backend API for the Text-to-3D Model Converter application. It provides FastAPI endpoints for:

  • Text-to-3D: Generate 3D models from text descriptions
  • Image-to-3D: Convert uploaded images to 3D models
  • Progress Tracking: Real-time job progress monitoring

Features

  • 🎨 Direct Model Loading: Stable Diffusion and DPT models loaded locally for fast inference
  • ⚑ Async Processing: Background job processing with progress tracking
  • πŸ”„ Job Management: Cancel jobs, track progress, and get results
  • ☁️ Cloud Storage: Automatic upload to Cloudinary for results
  • πŸš€ FastAPI: High-performance API with automatic docs

API Endpoints

  • GET / - Health check and model status
  • POST /generate - Generate 3D model from text prompt
  • POST /upload - Convert uploaded image to 3D model
  • GET /progress/{job_id} - Get job progress
  • POST /cancel - Cancel a running job

Models Used

  • Image Generation: Stable Diffusion v1.5 (runwayml/stable-diffusion-v1-5)
  • Depth Estimation: DPT (Intel/dpt-beit-large-512)
  • 3D Reconstruction: Open3D Poisson surface reconstruction

Environment Variables

Set these in the Space settings:

CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret

Usage

The API is designed to work with the frontend application deployed on Render. CORS is configured to allow requests from the frontend domain.

Example Request

import requests

# Generate 3D model from text
response = requests.post(
    "https://your-space-url/generate",
    json={"prompt": "a red sports car"}
)

job_id = response.json()["job_id"]

# Check progress
progress = requests.get(f"https://your-space-url/progress/{job_id}")
print(progress.json())

Development

To run locally:

pip install -r requirements.txt
python app.py

The API will be available at http://localhost:7860