Spaces:
Running on Zero
Running on Zero
| # =========================================================== | |
| # AI 3D Model Generator — Complete Setup & Deployment Guide | |
| # =========================================================== | |
| # | |
| # This file contains step-by-step instructions for deploying | |
| # the pipeline to Hugging Face Spaces and connecting it to n8n. | |
| # | |
| # Table of Contents: | |
| # 1. Overview | |
| # 2. Hugging Face Space Deployment | |
| # 3. n8n Workflow Setup | |
| # 4. Testing the Pipeline | |
| # 5. API Reference | |
| # =========================================================== | |
| # =========================================================== | |
| # 1. OVERVIEW | |
| # =========================================================== | |
| # | |
| # Pipeline Flow: | |
| # | |
| # [n8n Webhook] ──▶ [Parse Request] ──▶ [Download Images] | |
| # │ │ | |
| # ▼ ▼ | |
| # [Receive POST with] [Convert URLs to base64] | |
| # [images + prompt] │ | |
| # ▼ | |
| # [Call HF Space Gradio API] | |
| # │ | |
| # ▼ | |
| # [TripoSG Pipeline] | |
| # ├─ Background Removal (RMBG-1.4) | |
| # ├─ Best View Selection | |
| # ├─ 3D Reconstruction | |
| # ├─ Manifold Repair | |
| # ├─ Dimension Scaling | |
| # └─ (Optional) Part Segmentation | |
| # │ | |
| # ▼ | |
| # [Download GLB/OBJ/STL File] | |
| # │ | |
| # ▼ | |
| # [Respond with Binary File] | |
| # | |
| # =========================================================== | |
| # =========================================================== | |
| # 2. HUGGING FACE SPACE DEPLOYMENT | |
| # =========================================================== | |
| # Step 1: Create a new Hugging Face Space | |
| # ---------------------------------------- | |
| # Go to: https://huggingface.co/new-space | |
| # - Owner: your-username | |
| # - Space name: ai-3d-generator | |
| # - License: MIT | |
| # - SDK: Gradio | |
| # - Hardware: ZeroGPU (or GPU Basic for testing) | |
| # - Click "Create Space" | |
| # Step 2: Upload files via Git | |
| # ---------------------------------------- | |
| # Clone your new space locally: | |
| git clone https://huggingface.co/spaces/YOUR-USERNAME/ai-3d-generator | |
| cd ai-3d-generator | |
| # Copy all files from this directory: | |
| cp /path/to/ai-3d-generation-print-ready/* . | |
| # The following files should be in the space: | |
| # ├── README.md (HF Space config — already has YAML frontmatter) | |
| # ├── app.py (Main Gradio application) | |
| # ├── mesh_utils.py (Mesh processing utilities) | |
| # ├── requirements.txt (Python dependencies) | |
| # └── workflow.json (n8n workflow — for your reference, not needed in Space) | |
| # Push to Hugging Face: | |
| git add . | |
| git commit -m "Initial deployment: AI 3D Model Generator" | |
| git push | |
| # Step 3: Configure HF Space secrets (optional) | |
| # ---------------------------------------- | |
| # Go to your Space Settings → Variables and Secrets | |
| # Add if using private models: | |
| # HF_TOKEN = hf_xxxxxxxxxxxxxxxxxxxxx | |
| # Step 4: Wait for build | |
| # ---------------------------------------- | |
| # The Space will automatically build and deploy. | |
| # Watch the "Build" tab for progress (~5-10 minutes first time). | |
| # Once running, your Space URL will be: | |
| # https://YOUR-USERNAME-ai-3d-generator.hf.space | |
| # =========================================================== | |
| # 3. N8N WORKFLOW SETUP | |
| # =========================================================== | |
| # Step 1: Import the workflow | |
| # ---------------------------------------- | |
| # In n8n, go to: Workflows → Import from File | |
| # Select: workflow.json from this directory | |
| # The workflow will be imported with all nodes pre-configured. | |
| # Step 2: Configure variables | |
| # ---------------------------------------- | |
| # In n8n, go to: Settings → Variables | |
| # Add these variables: | |
| # | |
| # HF_SPACE_URL = YOUR-USERNAME-ai-3d-generator.hf.space | |
| # HF_TOKEN = hf_xxxxxxxxxxxxxxxxxxxxx (your HF access token) | |
| # | |
| # Alternatively, set up HuggingFace API credentials in n8n: | |
| # Settings → Credentials → Add Credential → Hugging Face API | |
| # Step 3: Activate the workflow | |
| # ---------------------------------------- | |
| # Toggle the workflow to "Active" | |
| # Note your webhook URL: | |
| # https://your-n8n-instance.com/webhook/generate-3d-model | |
| # =========================================================== | |
| # 4. TESTING THE PIPELINE | |
| # =========================================================== | |
| # Test via curl (images as URLs): | |
| curl -X POST https://your-n8n-instance.com/webhook/generate-3d-model \ | |
| -H "Content-Type: application/json" \ | |
| -d '{ | |
| "images": [ | |
| "https://example.com/front-view.jpg", | |
| "https://example.com/side-view.jpg", | |
| "https://example.com/back-view.jpg" | |
| ], | |
| "prompt": "Industrial bracket, base is 10cm x 5cm, M6 bolt holes on corners, matte steel finish", | |
| "faces": 50000, | |
| "format": "glb", | |
| "modular": false | |
| }' \ | |
| --output model.glb | |
| # Test via curl (images as base64): | |
| IMAGE_B64=$(base64 -w0 my_photo.jpg) | |
| curl -X POST https://your-n8n-instance.com/webhook/generate-3d-model \ | |
| -H "Content-Type: application/json" \ | |
| -d "{ | |
| \"images\": [\"data:image/jpeg;base64,$IMAGE_B64\"], | |
| \"prompt\": \"Phone stand, height: 12cm, modern minimalist design\", | |
| \"faces\": 30000, | |
| \"format\": \"stl\" | |
| }" \ | |
| --output model.stl | |
| # Test via Python: | |
| # import requests | |
| # response = requests.post( | |
| # "https://your-n8n-instance.com/webhook/generate-3d-model", | |
| # json={ | |
| # "images": ["https://example.com/object.jpg"], | |
| # "prompt": "Coffee mug, diameter: 8cm, height: 10cm", | |
| # "faces": 50000, | |
| # "format": "glb", | |
| # }, | |
| # ) | |
| # with open("model.glb", "wb") as f: | |
| # f.write(response.content) | |
| # Test the HF Space directly (without n8n): | |
| # Open your Space URL in a browser and use the web UI directly. | |
| # =========================================================== | |
| # 5. API REFERENCE | |
| # =========================================================== | |
| # Webhook Request Format: | |
| # POST /webhook/generate-3d-model | |
| # Content-Type: application/json | |
| # | |
| # { | |
| # "images": [ // Array of image sources | |
| # "https://example.com/front.jpg", // Image URLs (auto-downloaded) | |
| # "data:image/png;base64,iVBOR..." // Or base64 encoded images | |
| # ], | |
| # "prompt": "string", // Text instructions | |
| # // Supports dimension extraction: | |
| # // "base is 10cm" | |
| # // "10cm x 5cm x 3cm" | |
| # // "height: 200mm" | |
| # // "scale 1:10" | |
| # "faces": 50000, // Target face count (5000-90000) | |
| # "format": "glb", // Export format: glb, obj, stl | |
| # "modular": false // Split into modular parts | |
| # } | |
| # | |
| # Response: | |
| # 200 OK — Binary file (GLB/OBJ/STL) | |
| # Headers: | |
| # Content-Disposition: attachment; filename="model_20260224_120000.glb" | |
| # Content-Type: model/gltf-binary | |
| # X-Pipeline-Status: "✅ Complete in 45.2s — manifold: True, vertices: 12345, faces: 50000" | |
| # | |
| # Error Response: | |
| # 500 Internal Server Error | |
| # { "success": false, "error": "...", "message": "..." } | |
| # =========================================================== | |
| # SUPPORTED TEXT PROMPT PATTERNS | |
| # =========================================================== | |
| # The pipeline parses your text prompt to extract dimensions: | |
| # | |
| # Pattern Example | |
| # ─────────────────────────────── ────────────────────────────── | |
| # 3D dimensions: "10cm x 5cm x 3cm" | |
| # Individual dims: "base is 10cm", "height: 200mm" | |
| # Scale ratios: "scale 1:10", "ratio is 1:5" | |
| # Materials (passed to model): "matte steel finish" | |
| # Details (passed to model): "M6 bolt holes on each corner" | |
| # Style (passed to model): "modern minimalist design" | |
| # | |
| # Units supported: mm, cm, m, in, inch, inches, ft, feet | |