图片转3D效果展示系统 — 软件需求规格说明书

项目名称:图片转3D效果展示系统  |  版本:v1.0  |  日期:2026-07-07  |  技术栈:HTML5 + Three.js + 原生JavaScript

一、项目概述

本项目旨在开发一个基于Web的图片转3D效果展示系统。用户上传JPG/PNG图片后,系统通过深度估计算法将2D图片转换为3D浮雕效果,并支持实时参数调节、光照控制和模型导出。系统以单文件HTML形式交付,零安装零配置,浏览器打开即可使用。

二、功能需求

2.1 图片上传模块

编号需求描述优先级
F-001支持点击上传按钮选择本地图片文件(JPG/PNG/WebP)
F-002支持拖拽图片文件到3D查看区域直接上传
F-003支持Ctrl+V粘贴剪贴板中的图片
F-004自动限制图片最大分辨率为1024px,保证性能

2.2 深度估计模块

编号需求描述优先级
F-005CPU快速模式:基于亮度+边缘检测的本地深度估计(无需网络)
F-006AI深度模式:接入HuggingFace Depth-Anything-V2 API,实现语义级精准深度估计
F-007自动降级:AI模式失败时自动降级到CPU模式
F-008深度平滑参数可调(0~15)

2.3 3D模型构建模块

编号需求描述优先级
F-0093D挤压模式:前面(纹理+CPU位移)+ 背面(平面)+ 4条侧壁(ribbon几何体),形成完整封闭3D体
F-010球体贴图模式:将图片映射到球体表面
F-011圆柱环绕模式:将图片映射到圆柱表面
F-012浮雕强度可调(0~100)
F-013整体厚度可调(0.05~2.0)
F-014网格精度可调(20~200)

2.4 材质与光照模块

编号需求描述优先级
F-015粗糙度参数可调(0~1)
F-016金属感参数可调(0~1)
F-017环境光强度可调
F-018主光源强度可调
F-019侧面颜色可调
F-020背景颜色可调

2.5 显示与交互模块

编号需求描述优先级
F-021鼠标拖拽旋转模型
F-022滚轮缩放模型
F-023右键平移视角
F-024线框模式切换
F-025自动旋转开关及速度调节
F-026阴影显示开关

2.6 导出模块

编号需求描述优先级
F-027PNG截图导出(当前3D视图)
F-028GLB 3D模型导出

2.7 快捷键

编号需求描述优先级
F-029W键:切换线框模式
F-030R键:切换自动旋转
F-031F键:重置相机视角
F-032S键:截图保存

三、非功能需求

编号需求描述优先级
NF-001单文件交付:所有HTML/CSS/JS集成在一个.html文件中,无需额外依赖
NF-002Three.js通过CDN(esm.sh)引入,无需本地安装
NF-003现代浏览器兼容(Chrome/Edge/Firefox/Safari)
NF-004响应式布局:桌面端左右分栏,移动端上下分栏
NF-005暗色主题UI,专业感设计

四、技术架构

┌─────────────────────────────────────────────────┐
│                    用户层                          │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐          │
│  │ 点击上传 │  │ 拖拽上传 │  │ Ctrl+V  │          │
│  └─────────┘  └─────────┘  └─────────┘          │
├─────────────────────────────────────────────────┤
│                   处理层                           │
│  ┌─────────────────┐  ┌─────────────────┐        │
│  │  CPU深度估计     │  │  AI深度估计      │        │
│  │  (亮度+边缘)     │  │ (Depth-Anything)│        │
│  └─────────────────┘  └─────────────────┘        │
├─────────────────────────────────────────────────┤
│                   渲染层                           │
│  ┌─────────────────────────────────────────┐    │
│  │            Three.js 场景                 │    │
│  │  ┌─────────┐ ┌─────────┐ ┌─────────┐   │    │
│  │  │ 前面(位移)│  │ 背面(平面)│  │ 侧壁(ribbon)│   │    │
│  │  └─────────┘ └─────────┘ └─────────┘   │    │
│  │  + OrbitControls + 灯光系统 + 材质系统    │    │
│  └─────────────────────────────────────────┘    │
├─────────────────────────────────────────────────┤
│                   参数层                           │
│  位移强度 | 整体厚度 | 网格精度 | 粗糙度 | 金属感   │
│  环境光 | 主光源 | 侧面颜色 | 背景颜色 | 旋转速度 │
└─────────────────────────────────────────────────┘

五、验收标准

序号验收项验收标准
1图片上传支持点击、拖拽、粘贴三种方式,限制1024px,处理时间<3秒
23D显示模型正确渲染,旋转/缩放/平移流畅,帧率>30fps
3参数调节所有滑块实时响应,调节后模型即时更新
4深度估计CPU模式<2秒完成,AI模式<5秒完成
5导出功能PNG截图和GLB导出均正常可用
6兼容性Chrome/Edge/Firefox最新版本正常运行

六、项目里程碑

阶段内容时间
Phase 1基础框架搭建(Three.js场景、灯光、相机控制)1小时
Phase 2图片上传+CPU深度估计+基础3D渲染1小时
Phase 33D挤压模型重构(前面+背面+侧壁)1小时
Phase 4AI深度估计集成(Depth-Anything-V2)1小时
Phase 5UI优化、参数面板、快捷键、导出功能1小时
注:本项目实际开发时间约为3小时(含需求分析、开发、调试、优化),符合用户最初的时间评估要求。系统以单文件HTML形式交付,零依赖、零配置,浏览器打开即可运行。
html2.link
举报