浏览器里的图生 3D 打印工坊
Note
上传照片或 Logo,一键生成可打印 3D 模型(浮雕 / 真实 3D / 3DGS),并做社区可打印性分析。
- 图片 / Logo / 参数一键生成 STL(浮雕 / 真实 3D / 3DGS)
- 社区可打印性分析,给出打印建议
- 后端 FastAPI + SQLite,模型可自部署
- Apache-2.0 开源
打开 Live Demo 即可免安装、纯浏览器体验。
FastAPI SQLite Three.js Trimesh ComfyUI Hunyuan3D
- HOT PULL · 热搜抽卡 — 实时热搜抽卡小游戏
- PIXELBEAD · 拼豆星球 — 像素拼豆 × 乐高 × 3D 打印
- Spider-Verse Nebula — 摄像头蜘蛛侠面具
- Louis Ding · 作品集 — 个人作品集
- 龙族同人个人站 · Dragon Raja — 龙族同人站
以仓库内 LICENSE 文件为准(同人作品标注 CC BY-NC 4.0 者仅限非商用)。
浏览器里的图生 3D 打印工坊
Note
上传照片或 Logo,一键生成可打印 3D 模型(浮雕 / 真实 3D / 3DGS),并做社区可打印性分析。
- 图片 / Logo / 参数一键生成 STL(浮雕 / 真实 3D / 3DGS)
- 社区可打印性分析,给出打印建议
- 后端 FastAPI + SQLite,模型可自部署
- Apache-2.0 开源
打开 Live Demo 即可免安装、纯浏览器体验。
FastAPI SQLite Three.js Trimesh ComfyUI Hunyuan3D
- 实时热搜抽卡小游戏 — 实时热搜抽卡小游戏
- 像素拼豆 × 乐高 × 3D 打印 — 像素拼豆 × 乐高 × 3D 打印
- 摄像头蜘蛛侠面具 — 摄像头蜘蛛侠面具
- 个人作品集 — 个人作品集
- 龙族同人站 — 龙族同人站
以仓库内 LICENSE 文件为准(同人作品标注 CC BY-NC 4.0 者仅限非商用)。
上传你自己的 3D 模型,系统自动分析「它能不能打」,并分享到社区画廊让成员一起看。 开源 · 中文友好 · Apache-2.0 商用友好。
🌐 在线体验(已部署,前端直连后端):
| 站点 | 地址 | 说明 |
|---|---|---|
| 社区 · 画廊 / 评分 / 排行榜 | https://snapprint-production.up.railway.app/ | 完整社区:可打印性分析 + 社区评分(中位数 / 标准差 / 4★+ 占比 + 文字分析) |
| 创作工具 · 五模式图生 3D | https://snapprint-3d.surge.sh/ | 照片浮雕 / 2D 轮廓拉伸 / 真实 3D 几何 / 模型库(33 款) / 3DGS 高斯泼溅 |
| 主站 · 品牌着陆页 + 创作工具 | https://snapprint.surge.sh/ | 视频擦洗首屏,内嵌五模式工作台,一键进入社区 |
社区与工具均前端直连后端;本地运行见
python -m app.main,或 Railway 一键部署(见 docs/部署.md 第七节)。
「图生 3D」的工具已经很多,但真正的 3D 打印爱好者手里往往已经有一堆 .stl / .obj——
它们能不能打、要不要支撑、会不会翘边,却没人告诉过你。SnapPrint 社区版只做一件事:
把你已有的模型,变成一份人人可读的「可打印性体检报告」,并放进社区一起讨论。
- 网格不水密 → 切片报错?自动检测
- 悬垂太大、要加支撑?算出占比与建议
- 贴床接触太小、会翘边?给出 Brim 建议
- 重量、时长、尺寸对不对?按你选的打印机/材料预估
- 📤 上传即分析:拖入
.stl / .obj / .ply / .3mf / .glb / .gltf / .off,秒级出报告 - 🖼️ 照片生成 3D:上传照片 → 离线浮雕(零依赖秒出、水密可打)或 AI 模式(Hunyuan3D 等需自备 GPU+权重),生成即分析并入画廊
- 🧩 模型实例库:16 款内置参数化真 3D 几何(花瓶 / 宝石 / 圆环 / 棋子 / 灯笼 / 甜甜圈…),无需照片、可调尺寸,一键生成 → 分析 → 入画廊,全部水密可直接打印
- 🩺 可打印性报告:水密性、悬垂占比、接触面、尺寸、体积、层高、填充、支撑建议、Brim、预估重量与时长
- 🏅 可打印性评分 0–100:一眼看出模型「省不省心」
- 🖼️ 社区画廊:所有模型按时间倒序,卡片展示评分 / 尺寸 / 作者
- 💬 评论:成员对任意模型点评、给建议
- 📊 评分榜:社区里「最省心模型」排行
- 🖨️ 机型 / 材料预设:拓竹 / 创想 / Prusa / Elegoo / Anycubic 等常见机型 + PLA/PETG/TPU,自动匹配热床与参数
- 🔐 API Key 鉴权 + 限流:内网 / 小团队部署可设
SNAPRINT_API_KEY与SNAPRINT_RATE_LIMIT
python scripts/start_backend.py
# 或自定义端口: PORT=8080 python scripts/start_backend.py浏览器打开 http://localhost:8000
docker compose up --buildpython -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python -m app.main默认完全开放(方便本地 / 公开 Demo)。无需显卡、无需任何模型权重——分析纯靠 trimesh 几何计算。
| 接口 | 说明 |
|---|---|
POST /api/upload |
上传模型文件 + 自动分析,进入画廊 |
POST /api/generate |
照片 → 可打印 3D(离线浮雕 / AI 模式),分析后入画廊 |
GET /api/models |
模型动物园:生成后端列表 + 本机权重可用性探测 |
GET /api/shapes |
内置模型实例库:16 款参数化真 3D 几何元数据 |
POST /api/shapes/{id}/generate |
一键生成模型实例(可调 H/D/seg/twist/lobes),分析后入画廊 |
GET /api/gallery |
画廊列表(分页 ?limit=&offset=) |
GET /api/models/{id} |
模型详情 = 分析报告 + 评论 |
POST /api/models/{id}/comments |
发表评论(author、body) |
GET /api/presets |
打印机 / 材料预设(前端下拉用) |
GET /api/scoreboard |
可打印性评分排行榜 |
POST /api/upload 表单字段:file(必填)、author、printer、material。
POST /api/generate 表单字段:file(图片,必填)、mode(relief 默认 / ai)、model(AI 后端名)、author、printer、material。
分析返回 JSON 含 score 与完整 report 字段(详见 app/advisor.py)。
照片生成 3D:
mode=relief为离线浮雕,纯 numpy/Pillow/trimesh,任何环境秒级出 水密可打网格;mode=ai走 AI 后端(Hunyuan3D 等),需自备 GPU + 权重,缺失时返回 明确指引,不会静默失败。生成的网格自动复用分析链路并发布到社区画廊。
详见 docs/部署.md。关键环境变量:
SNAPRINT_API_KEY:设置后所有/api/*需携带请求头X-API-KeySNAPRINT_RATE_LIMIT=N:每客户端每分钟 N 次限流(0=不限)SNAPRINT_CORS_ORIGINS:逗号分隔的可信前端来源(默认锁定公开 Demo + 本地地址)SNAPRINT_MAX_UPLOAD_MB:单文件大小上限(默认 50)
数据落盘:data/snapprint.db(SQLite,社区数据库)与 outputs/uploads/(模型原文件),均已被 .gitignore 忽略。
snapprint/
├── app/
│ ├── main.py # FastAPI 后端(托管 web/ 静态前端 + 社区 API)
│ ├── advisor.py # 可打印性 / 支撑建议分析 + 评分(核心引擎)
│ ├── pipeline.py # 图生3D 编排:图片 → 网格 → 后处理
│ ├── backends.py # AI 后端适配层(Hunyuan3D/TripoSR/SF3D/Trellis,缺依赖优雅报错)
│ ├── config.py # 配置 + 模型动物园 MODEL_ZOO
│ ├── shapes.py # 内置模型实例库:16 款参数化真 3D 几何(旋转体/圆环)
│ ├── postprocess.py # 网格后处理工具(水密/缩放/统计)
│ └── db.py # 社区数据层(零依赖 SQLite:模型 + 评论)
├── web/ # 简洁单页前端:上传 → 画廊 → 详情 → 评论
├── web-landing/ # 品牌着陆页 + 图生3D 创作工具(snapprint.surge.sh,两段合一滚动版)
├── scripts/ # start_backend.py 启动脚本
├── docs/ # 部署文档
├── data/ # SQLite 社区数据库(运行时生成,已 gitignore)
└── outputs/uploads/ # 上传的模型原文件(运行时生成,已 gitignore)
Apache-2.0 —— 商用友好,欢迎二次开发与集成。
⭐ 如果你觉得有用,欢迎 Star、提 Issue、发 PR。让「模型能不能打」对每个人都是一句话的事。