在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:3d-model-convert-to-gltf开源软件地址:https://gitee.com/wangerzi/model-convert-to-gltf开源软件介绍:3DModelConvertToGltf 统一模型格式转换工具文档中文|English 此项目产生的主要原因是工作中遇到了需要在Web中展示 STEP 和 IGES 模型的场景,但是市面上的web3d类库均不支持此格式,并且用户上传的STL文件直接展示会占用大量带宽或CDN流量,转换为压缩后的gltf会比较合适。 样例文件压缩效果如下表:
支持输入格式: STL/IGES/STP/OBJ/FBX 支持输出格式: GLTF/GLB 本项目即采用了博客中总结的思路:STEP和IGES模型转换为适用Web的glb格式 项目状态: 稳定维护中 待完成任务
项目用户
版本说明v1.7 待发布convert.sh 支持 no-draco 选项 v1.6 2021-10-10 13:08减少镜像大小,从 4.42GB 至 1.87GB,修复镜像无法运行的问题 v1.5 2021-07-25 16:06修复 bug,支持非 draco 压缩的转换 v1.4 2021-06-11 17:20更新了 GRPC 的支持,清理 aiohttp 和配置代码,重构了转换部分的代码并修复了 BUG v1.3 2020-06-24 17:19新增英文文档,修复 BUG,尝试 aiohttp 写接口 v1.0 2020-05-21 19:08基础提交,基本功能开发完毕,支持脚本调用 为什么不用 assmip我尝试用过 assimp,但是在 为什么不直接在本项目提供API模型转换是一个非常消耗性能并且速度不快的服务,模型的上传和下载都会非常的耗费带宽,如果直接部署在自己的服务器上会是一个非常耗费带宽和CPU的工作,针对这种大型文件上传和下载比较通用的方式是引入 OSS 和 CDN 配合队列和后端服务动态扩容来做,但是部署成本和实施成本都会比较高,有商业需求请联系 [email protected] 获取商业API支持。 快速上手由于环境配置麻烦等原因,命令行模式依旧需要依赖docker,命令行模式适合服务端简单调用,转换过程阻塞进程同步进行,无法分布式部署增加并发量;最推荐的方式就是用 grpc 配合容器化部署做调用,可同步可异步,可方便的做扩展。
在线转换预览可以使用 modelbox-sdk 在线转换模型(<100MB),链接:https://wangerzi.gitee.io/modelbox-sdk/examples/index.html GRPC 模式基于 GRPC 实现了服务内部的 RPC 通信,构建动态扩容的服务集群会更加方便,支持上传 zip/模型源文件,为各模型的兼容性考虑,响应的文件都是 zip 格式的,调用后需自行解压。 首先需要通过 docker 运行 RPC 服务端,直接运行的指令如下,注意保证 8999 端口未被占用且 $ docker pull wj2015/3d-model-convert-to-gltf:latest$ docker run -d -p 8999:8999 wj2015/3d-model-convert-to-gltf:latest 使用时,请将 已实现示例如果本项目对您有帮助,您可继续补充其他示例并提交 PR,比如常见的 php 、 golang 、Nodejs 的调用示例
命令行模式下载代码中的
convert.sh stl inputpath.stl outputpath.glb # 生成二进制glb文件convert.sh stl inputpath.stl outputpath.gltf # 非单一二进制文件 gltf 在 如果在运行过程中遇到如下错误,可以执行如下指令,将其他语言执行器对应用户加到 docker 用户组中。 报错信息:
执行指令:
通过其他语言调用可同步判断输出文件是否存在,来判断是否转换成功,如: <?php$out = 'out.glb';$input = 'test.stl';$type = 'stl';// 请注意安全,小心任意执行漏洞shell_exec('convert.sh '.$type.' '.$input.' '.$out);if (file_exists($out)) { echo "convert result:" . $out;} else { echo "convert failed";} Docker运行在宿主机安装好 docker pull wj2015/3d-model-convert-to-gltf 在容器内执行 简单负载示意图如果有多机负载的需求,可借助 nginx 的反向代理、微服务的服务注册和调用轮训来做简单的负载均衡,还可以辅助消息队列以及生产者消费者,其中 grpc 已内置实现并支持容器化部署,如需使用 HTTP 服务或队列需要自己实现逻辑。 参与开发docker开发环境首先把 随后,进入 user@MacBook-Pro environment % docker-compose upRecreating 3d-model-convert-to-gltf-app ... doneStarting 3d-model-convert-to-gltf-redis ... doneAttaching to 3d-model-convert-to-gltf-redis, 3d-model-convert-to-gltf-app3d-model-convert-to-gltf-redis | 1:C 09 Oct 2020 03:03:29.150 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo3d-model-convert-to-gltf-redis | 1:C 09 Oct 2020 03:03:29.150 # Redis version=6.0.1, bits=64, commit=00000000, modified=0, pid=1, just started3d-model-convert-to-gltf-redis | 1:C 09 Oct 2020 03:03:29.150 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf3d-model-convert-to-gltf-redis | 1:M 09 Oct 2020 03:03:29.152 * Running mode=standalone, port=6379.3d-model-convert-to-gltf-redis | 1:M 09 Oct 2020 03:03:29.152 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.3d-model-convert-to-gltf-redis | 1:M 09 Oct 2020 03:03:29.152 # Server initialized 如果出现端口冲突,初始化失败等异常情况,请根据错误信息查找资料进行排查。 新开一个终端,执行 user@MacBook-Pro 3d-model-convert-to-gltf % docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES69b684ed7755 wj2015/3d-model-convert-to-gltf "conda run -n python…" 3 seconds ago Up 2 seconds 3d-model-convert-to-gltf-app20eb8ede5da7 redis "docker-entrypoint.s…" 2 hours ago Up 2 seconds 6379/tcp 3d-model-convert-to-gltf-redis 接下来进入容器执行命令,并进入 wangjie@MacBook-Pro 3d-model-convert-to-gltf % docker exec -it 3d-model-convert-to-gltf-app /bin/bash(base) root@5efd6ef96814:/opt/3d-model-convert-to-gltf# conda activate pythonocc(pythonocc) root@69b684ed7755:/opt/3d-model-convert-to-gltf# python server/convert.py Params not found, format: python convert.py [type] [file path] [out file path] 非 docker 搭建环境主要针对无法运行 docker 的开发者,可以尝试使用此方法搭建一个开发环境 首先创建一下 conda 虚拟环境 conda create -n 3d-model-convert-to-gltf-pythonocc -c dlr-sc -c pythonocc pythonocc-core=7.4.0rc1conda activate 3d-model-convert-to-gltf-pythonoccpip install -r server/requirements.txt 本地的 node 版本需要是 原始调试环境安装指引可以使用如下指令安装 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash 安装 12.0.0,以及安装依赖包 nvm install 12.0.0nvm use 12.0.0npm install -g gltf-pipeline obj2gltf 再去 FBX2glTF 下载对应系统的可执行文件,放到环境变量文件夹中,地址: https://github.com/facebookincubator/FBX2glTF
简单了解下代码结构,修改完毕后提交PR即可,欢迎邮箱 [email protected] 与我讨论 开源协议3DModelConvertToGltf is licensed under the Apache License, Version 2.0. See LICENSE for the full license text. |
请发表评论