NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 - 3D道路快速建模
3DSEE (3D SEmantic Engine)是基于 AI 技术的 3D 模型语义搜索引擎,可以自动提取 3D 模型内涵的语义信息并存储入库,以帮助用户使用自然语言或关键字高效地检索 3D 模型。3DSEE 提供完善的二次开发 API,无论使用Java、Python、PHP、JavaScript还是C#,都可以在自己的应用中集成 3D 模型的语义提取、入库和自然语言检索能力。3DSEE官方下载地址:3D模型语义搜索引擎 。
3DSEE 的主要功能包括:
语义提取
:3DSEE 能够自动分析和理解 3D 模型内涵的语义信息,这使得用户无需手动添加标签或元数据,即可实现对模型内涵的全面理解。数据入库
:3DSEE 将提取的语义信息和相关元数据统一存储在数据库中,以便快速、高效地进行检索。这为用户提供了一个集中管理和组织 3D 模型的平台,简化了数据管理的复杂性。自然语言检索
:用户可以通过自然语言或关键字对 3D 模型进行检索。3DSEE 利用先进的自然语言处理技术,使用户能够用简单的语言描述来获取所需的 3D 模型,提高了检索的便捷性。
1、文件和目录组织
3DSEE 通过理解用户输入的语义信息,为其提供高效、准确的模型检索体验。当前版本 V1.0,主要文件及目录组织结构如下:
开发包文件 | 说明 |
---|---|
src/ | 执行文件目录 |
src/models/ | AI模型目录 |
src/attempt.pyc | 执行方法文件 |
src/db.pyc | 数据管理文件 |
src/main.pyc | 引擎入口文件 |
src/modules.pyc | 模型调用文件 |
src/preview.pyc | 预览图生成文件 |
src/config.json | 配置文件 |
src/requirements.txt | 需要安装的依赖 |
installation.md | pytorch3D 安装指南 |
LICENSE.md | 开发包许可协议文件 |
2、环境安装和部署
首先参考 installation.md 安装基本运行环境。
2.1 安装依赖包
在 src 目录下打开 cmd,执行以下命令安装依赖包
pip install requirements.txt -r
2.2 修改配置文件
在 config.json 中修改配置
{
"port": 3005, //服务端口号
"host": "127.0.0.1", //服务地址
"dbconfig": {
"name": "default", //数据库名
"host": "192.168.1.139", //数据库地址
"port": 19530, //数据库端口
"collection": "my_models", //集合名,首次启动会自动创建集合
"load_timeout": 30 //加载集合时限
}
}
2.3 启动服务
在 src 目录下打开 cmd,执行以下命令运行服务
python -m main
启动服务后,可以访问 http://127.0.0.1:3005/docs
查看 api 文档(实际端口和 ip 请以配置文件为准)
3、示例程序使用方法
3DSEE 启动后,在example目录下运行以下命令启动示例程序:
npm install
npm run dev
示例程序提供了模型检索和入库功能。
3.1 关键字查询
输入关键字,点击搜索按钮开始查询,返回查询结果。例如,输入关键词car
查询结果如下:
3.2 模型入库
填写表单,点击提交将模型添加到模型库中。
4、API 使用说明
当前文档版本号为 v1.0,更新日期为 2023/11/29。
服务包中提供 2 个访问接口,列表如下。
接口名称 | 访问 url | 请求 |
---|---|---|
查询模型 | / | GET |
添加模型 | / | POST |
4.1 模型查询 API
通用调用[查询模型]接口,可以通过中文或英文关键词,查询到与其语义相关的模型。接口详细描述如下:
访问 URL: GET /
请求参数:查询参数的主要字段说明如下:
keyword
: 必填,关键词, 如:carpage
: 查询页数,默认值:1limit
: 每页返回数量,默认值:10radius
: 最小相似度阈值,数值越大则语义相似度匹配范围越大,默认值:1,
请求示例如下(使用 curl
):
curl http://127.0.0.1:3005/?keyword=car&page=1&limit=10&radius=3
响应结果:JSON 对象,主要字段说明如下:
id
: 唯一 iddistance
: 确定最小相似度阈值,类型:numberentity
: json 对象,主要字段如下:data
: 3D模型自定义数据,JSON字符串preview
: 模型预览图url,字符串path
: 3D模型访问路径,字符串
响应结果示例如下:
[
{
id: 445859173072122400,
distance: 1.2356822490692139,
entity: {
data: '{"name": "r2"}',
path: "D:/preview/models/r2.off",
preview: "http://127.0.0.1:3005/preview/81ac5d31-c11e-45e2-aa94-c39eddf3f459.png",
},
},
{
id: 445946831156557600,
distance: 0.7618597269058228,
entity: {
data: '{"name": "car"}',
path: "http://127.0.0.1:3005/preview/67d8abcf-176c-441c-abb5-3712750bd33c.png",
},
},
];
4.2 模型添加 API
通用调用[添加模型]接口,可以向库中添加模型。接口详细描述如下:
访问 URL: POST /
请求参数:JSON 对象,主要字段说明如下:
data
: json 对象,自定义数据path
: 字符串,模型本地路径,务必确保可以访问,modelType
: 字符串,要添加的模型类型,当前支持:'obj', 'off', ply', 'glb'
请求示例如下(使用curl):
curl -X POST -D '{"data": {}, "path": "./model.obj", "modelType": "obj"}' http://127.0.0.1:3005/
响应结果:返回字符串,表示操作结果信息,例如:
"保存成功"
原文链接:3D模型语义搜索引擎 — NSDT