text-to-3d-backend / README.md
aniket47's picture
Initial FastAPI backend for HF Spaces
86e7db6
---
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
```python
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:
```bash
pip install -r requirements.txt
python app.py
```
The API will be available at `http://localhost:7860`