这里记录下自己之前做3D模型格式转换,包括做CAD模型格式转换辅助的一些开源仓库和工具
gltf作为3D界的jpg标准,如今已经有很多引擎对其进行了支持,这里单独把它列出来
git仓库:https://github.com/CesiumGS/obj2gltf
git仓库:https://github.com/facebookincubator/FBX2glTF
git仓库:https://github.com/CesiumGS/gltf-pipeline
官网:CAD Assistant - Open Cascade
git仓库:https://github.com/KhronosGroup/COLLADA2GLTF/releases
blender官网:https://www.blender.org/
blender中文文档:https://docs.blender.org/manual/zh-hans/dev/getting_started/index.html
blender build python moudle(mac版本):https://wiki.blender.org/wiki/Building_Blender/Mac
FreeCAD官网:FreeCAD: Your own 3D parametric modeler
FreeCAD仓库地址:https://github.com/FreeCAD
Freecad 是基于opencascade做开源库的,提供了更多模型解析,同时也提供了一些算法像网格转换,大部分基于python实现。
但跟opencascade差不多,大部分也是去除重复点、重复面之类,操作自由度很高,自动化也是很容易造成过度填补或删除。
而且freecad在mesh和part之间相互转换很占用系统资源,mesh支持解析一些简单模型格式(像obj/stl),part是解析复杂一点的模型格式(像step)。
Meshlab官网 MeshLab
Meshlab是一款较不错开源CAD软件,提供了很多模型处理的算法,但主要是处理三角网格,无法处理step/stp等曲面模型。
Meshlab主要是基于vcglib,具体功能和详情见下面
【vcglib介绍】
VCGLIB是由意大利国立研究院的库文件,算法开源,一个经典的计算机图形学数学库。
VCG Libary是专门为处理三角网格而设计的,库很大,且提供了许多最先进的处理网格的功能,如:
*基于边坍塌(edge-collapse)二次误差的高质量网格简化(simplfication);
*高效的空间检索数据结构(uniform grids, hashed grids, kdtree, ...);
*先进的网格平滑和光顺算法;
*曲率计算;
*纹理坐标优化;
*Hausdorff距离计算;
*测地路径;
*网格修复能力
*等直面抽取和前沿的网格划分算法;
*泊松圆盘采样和其他的网格点采样算法;
【vcglib数据操作部分】
1.Automatic mesh optimization:主要提供基于二次误差的边缘折叠算法(效果还可以),还有其他边缘折叠算法和聚类算法
2.model repair and clean:包括对重复面、点、去除一些杂点、噪点等等
3.hole filing:指定小于某个大小的空洞进行填补
4.network smoot
5.更多功能:参考meshlab软件或者MeshLab
opencascade官方文档:Open Cascade, part of Capgemini
mac上如何编译opencascade:https://dev.opencascade.org/doc/overview/html/occt_dev_guides__building_3rdparty_osx.html
digital-mockup-simplification:Digital Mockup Simplification - Forum Open Cascade Technology
opencascade国内较好的博客:eryar - C++博客
opencascade是我们最早调研的一款CAD开源软件,本打算将其作为我们CAD转换的一个核心库,但后面调研发现其存在各种问题,以下是当时的调研总结。
opencascade提供了很多products,其中包括cadprocessor/cadassitant等,以及开源部分Open Source Core Technology
其中,OpenSourceCoreTechnology只提供了几个类型(step/iges/stl)的转化服务和数据修复服务,并没有数据优化部分
OpenSourceCoreTechnology可以做到3D数据处理:Shape Healing - Forum Open Cascade Technology
只提供了一些面重复修复,对一些缺失位置的填补,而且自由度很高,自动化很容易造成过度填补或删除
而之前关注的文章https://www.opencascade.com/content/digital-mockup-simplification,这个是cadprocessor提供的功能,商用的,不开源
收费软件,支持较多CAD格式转换,且其对模型修复算法、法线修复功能较好