三维模型预览图生成器是一种基于三维模型的专业化工具,旨在将三维模型转化为具有视觉效果和逼真度的预览图,帮助设计师和工程师更好地理解和评估模型设计作品。三维模型预览图生成服务,能够为游戏开发、电影制作、建筑设计等行业从业者提供帮助。
三维模型预览图生成器是一个运行在服务端,为三维模型文件提供预览图生成和访问的完全独立的REST服务。
用户接口调用,即可生成三维模型对应的预览图片。通过设置不同的接口参数,可以生成两种效果的预览图: 模型基本图形
和 360度全景预览图
(雪碧图 sprites)。
模型基本图形为一张模型主视图静态png格式图片。模型基本图形样例图如下:
360度全景预览图是将模型前视图360度旋转拍摄,然后将多帧图像拼接在一起形成一张png图片,用户在前端开发过程中进行一些相应的设置,即可实现图片的水平滚动效果。360度全景预览图样例图如下:
三维模型预览图生成服务根据模型格式支持的范围,分为基础版和扩展版,两种版本差异如下:
基本版支持将三维模型转换为基本图形或雪碧图,支持的格式范围:GLB,GLTF,STL。
扩展版也支持将三维模型转换为基本图形或雪碧图,扩展版在包含基础版的格式之外,扩展了很多其他格式,主要包括:OBJ,FBX,IFC,DAE,SHP,DXF,IGES/ IGS,3DXML,OFF,PLY,GEOJSON ,BREP,XAML,XYZ,PCD,PTS,ASC。
当前供下载的服务包为基本版(支持GLB、GLTF、STL),暂不提供扩展版服务包下载。如果您需要更多格式,请咨询在线客服。
在网站上完成支付后,即可进行服务包文件的下载。服务包文件下载完成,解压后内容如下:
解压后根目录四个文件主要内容如下:
file-previewer.tar是docker镜像文件。
docker-compose.yaml是包含docker-compose配置信息的文件。
db-init.sql是数据库初始化脚本文件。
api.doc是接口使用说明文档。
LICENSE.md是软件LICENSE说明文件,包含一些软件授权申明信息。
三维模型预览图生成服务的部署方式非常简单,其采用了docker容器化技术,服务包中提供了服务镜像文件,只需极少配置就能一键部署、运行。
### 导入docker镜像
docker load < file-previewr.tar
### 运行docker容器
docker-compose up file-previewr -d
三维模型预览图生成服务模式有两种,支持实时模式和任务模式,默认情况任务模式是关闭的。两种服务模式的区别如下。
在实时模式下,调用者直接通过api调用预览服务,预览服务实时生成文件的预览图或雪碧图(Sprites),并且返回预览图。
在任务模式下,服务内部内置了一个任务调度器,通过任务调度器为文件生成预览图或雪碧图(Sprites),在任务模式下只需调用api将要处理的三维模型文件添加到任务调度器。
详细调用方法请查看接口文档。
服务完成部署后,可以启动服务或停止服务,执行命令如下:
### 运行服务
docker-compose restart file-previewr
### 停止服务
docker-compose stop file-previewr
当前接口文档版本号为v1.0,更新日期为2023/11/17。
服务包中提供4个访问接口,列表如下。
接口名称 | 访问url |
---|---|
实时生成预览图片 | /previewer/base64 |
添加预览图生成任务 | /previewer/task/add |
查询任务信息 | /previewer/task/:task_id |
查询预览图 | /previewer/img/:task_id/:angle |
通用调用[实时生成预览图片]接口,可以实时生成三维模型文件的预览图片。接口详细描述如下:
/previewer/base64
{
"file_url":"必填,文件地址, 如:http://server.cloud/files/rubit.glb"
"file_type":"必填,文件类型,如:glb"
"bgColor": "生成图片背景颜色,默认白色 #fff"
"width": "图片宽度,默认值700px"
"height": "图片高度, 默认值400"
"cameraUp": "设置相机是y/z轴向上,默认y轴向上,取值y|z"
}
{
"0":"0度预览图, base64格式"
"all":"360度预览图(雪碧图),base64格式"
}
通用调用[添加预览图生成任务]接口,可以向服务任务调度器中增加一个三维模型文件生成预览图的任务。接口详细描述如下:
/previewer/task/add
{
"task_id":"必填,任务id,获取是业务的id, 如果不传服务端会自动生成
"file_url":"必填,文件地址, 如:http://server.cloud/files/rubit.glb"
"params": { // 控制预览图生成的参数,不传会使用默认值
bgColor: 生成图片背景颜色,默认白色#fff
width: 图片宽度,默认值700px
height: 图片高度, 默认值400
cameraUp:设置相机是y/z轴向上,默认y轴向上,取值y|z
}
"priority": "优先级,`number`, 默认是0,数值越大优先级越高"
"remark": "备注信息"
}
{
code: 1,
data: { task_id :xxx }
}
通用调用[查询任务信息]接口,可以根据任务ID查询任务信息。接口详细描述如下:
/previewer/task/:task_id
{
task_id: 任务id
}
{
code: number,
data: {
"task_id": "任务id"
"status": number 任务状态 0:新建,1:进行中,2:完成,3:失败
"preview": {
"0": "previewe_id" // 0度预览图在previewes表中对应的id
"all": "previewe_id" // 360度预览图在previewes表中对应的id
}
}
}
通用调用[查询查询预览图]接口,可以查询已经生成的预览图。接口详细描述如下:
/previewer/img/:task_id/:angle?
{
task_id: 必填, 任务id
angle: 角度 默认值0,支持取值 `0`|`all
}
{
'Content-type': 'image/png'
图片文件流
}