Install
openclaw skills install ipdesign-3dprintConvert text or reference images into Pop Mart-style 3D-printable IP character figurines with automated image generation and Blender modeling exportable as STL.
openclaw skills install ipdesign-3dprintTurn any text description or reference image into a 3D-printable IP character figurine. Designed for Pop Mart / Skullpanda-style collectible figures.
User Prompt → [Image Generation Layer] → 3-View References
↓
User Confirms? → Yes → [Blender Modeling Layer] → Solidify + Subdiv + Color
↕ No (adjust prompt) ↓
Manual Upload → [Export Layer] → STL / OBJ / 3MF
The skill auto-detects which image generation method is available:
| Mode | Requirement | Cost |
|---|---|---|
| A — ComfyUI Local | NVIDIA GPU ≥6GB VRAM (local) | $0 (electricity only) |
| B — ComfyUI Cloud | COMFY_CLOUD_API_KEY | Pay-per-use (~$0.003-0.01/img) |
| C — API-Only ⭐ | GEMINI_API_KEY (or other) | Imagen 4.0 via Gemini key (free tier available) |
Default (no GPU, no ComfyUI Cloud): Uses Google Imagen 4.0 via GEMINI_API_KEY.
# Blender (any version ≥4.0)
apt-get install blender # Linux
brew install blender # macOS
# Verify
blender --version
# Mode A: ComfyUI Local — see comfyui skill
# Mode B: ComfyUI Cloud — export COMFY_CLOUD_API_KEY
# Mode C: API-Only (recommended for no-GPU)
export GEMINI_API_KEY="your-key-here"
# Or use any of: EVOLINK_API_KEY, OPENAI_API_KEY, BFL_API_KEY
Option A: From Prompt Generate three-view character concept images (front/side/back):
# Using Gemini/Imagen 4.0 (API-only mode)
curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/imagen-4.0-generate-001:predict?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instances": [{"prompt": "Skullpanda-style character, front view..."}],
"parameters": {"sampleCount": 2, "aspectRatio": "1:1"}
}'
Option B: Manual Upload User provides front/side/back view images directly.
Option C: User Confirmation Loop
Based on the reference images, generate a Blender script that:
# Solidify — wall thickness
solidify = obj.modifiers.new(name="Solidify", type='SOLIDIFY')
solidify.thickness = 0.12 # 1.2mm
solidify.offset = -1.0 # inward offset
# Subdivision — smooth surface
subsurf = obj.modifiers.new(name="SubSurf", type='SUBSURF')
subsurf.levels = 1
subsurf.subdivision_type = 'CATMULL_CLARK'
# Export
bpy.ops.export_mesh.stl(filepath="figure.stl", use_selection=True)
1 Blender unit = 1 cm
Total figure height: ~10.5 cm (including base)
| Feature | Ratio |
|---|---|
| Head:Total Height | ~40% |
| Head:Body | ~1:1 |
| Eye Width:Head Width | ~1:3 |
| Ear Diameter:Head Width | ~1:5 |
| Body Width:Head Width | ~0.7:1 |
The skill includes a complete Skullpanda build script at scripts/skullpanda_build.py.
blender --background --python scripts/skullpanda_build.py
Expected output:
skullpanda_base_mesh.stl (~1.6 MB, 16K verts) — 3D print readyskullpanda_subdiv1.stl (~6.5 MB, 67K verts) — smooth versionskullpanda_figure.blend (~1.8 MB) — editable source| Part | Hex | RGB | Roughness | Metallic |
|---|---|---|---|---|
| Helmet | #F5F0EB | (245,240,235) | 0.35 | 0.0 |
| Eyeshadow | #19191E | (25,25,30) | 0.9 | 0.0 |
| Iris | #503C28 | (80,60,40) | 0.3 | 0.0 |
| Bodysuit | #1A1A1A | (26,26,26) | 0.6 | 0.05 |
| Base | #141414 | (20,20,20) | 0.8 | 0.0 |
blender ≥ 4.0| Variable | Provider | Get Key |
|---|---|---|
GEMINI_API_KEY | Google AI | https://aistudio.google.com |
COMFY_CLOUD_API_KEY | Comfy Cloud | https://platform.comfy.org |
EVOLINK_API_KEY | EvoLink | https://evolink.ai |