Turn any text description or reference image into a 3D-printable IP character figurine. Designed for Pop Mart / Skullpanda-style collectible figures.
text
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:
ModeRequirementCostA — ComfyUI LocalNVIDIA GPU ≥6GB VRAM (local)$0 (electricity only)B — ComfyUI CloudCOMFY_CLOUD_API_KEYPay-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.
bash
# Blender (any version ≥4.0)
apt-get install blender # Linux
brew install blender # macOS
# Verify
blender --version
bash
# 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):
bash
# 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:
Load references as background planes (front/side/top)
Build base geometry:
Apply 3D printing modifiers:
Color/Material:
Export:
python
# 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)
text
1 Blender unit = 1 cm
Total figure height: ~10.5 cm (including base)
FeatureRatioHead:Total Height40%Head:Body1:1Eye Width:Head Width1:3Ear Diameter:Head Width1:5Body Width:Head Width~0.7:1
The skill includes a complete Skullpanda build script at scripts/skullpanda_build.py.
bash
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 sourcePartHexRGBRoughnessMetallicHelmet#F5F0EB(245,240,235)0.350.0Eyeshadow#19191E(25,25,30)0.90.0Iris#503C28(80,60,40)0.30.0Bodysuit#1A1A1A(26,26,26)0.60.05Base#141414(20,20,20)0.80.0
blender ≥ 4.0VariableProviderGet KeyGEMINI_API_KEYGoogle AIhttps://aistudio.google.comCOMFY_CLOUD_API_KEYComfy Cloudhttps://platform.comfy.orgEVOLINK_API_KEYEvoLinkhttps://evolink.ai