glzipBIM轻量化之路(二)-revit导出GLTF

前言
上文提到如果项目需求的业务管理功能多、集成度高,那么就建议使用webgl的技术方向进行模型轻量化。 目前市面上有不少成熟的模型轻量化工具,比如广联达BIMFace、葛兰岱尔的GLWebGLBIMEngine、e建筑等,都是在平台转换,在线、离线式使用,基本都使用的threejs实现模型的展示,其中bimface的通讯格式为二进制,猜测为自定义的数据格式,GLWebGLBIMEngine和e建筑使用的是gltf。还见过一家使用silverlight结合unity做模型展示,但是这并不是主流趋势,很多浏览器已经不支持。
一、轻量化流程
经过多种途径的试探,结合目前的资源,决定全面转向threejs实现轻量化,实现的大概流程:
glzipBIM轻量化之路(二)-revit导出GLTF

添加图片注释,不超过 140 字(可选)
理想中轻量化应该是上传RVT文件后,服务器自动对各版本的文件进行解析处理,将相应的数据及文件存入数据库及文件服务器。模型的展示应该是组件化模块化,对于其他应用模块提供标准开放接口,方便外部调用。所以应该本着文件尽可能小、展示真实、操作流畅的原则进行开发。
二、数据提取
1.revit分类
首先要大概了解revit类别结构
图像描述

添加图片注释,不超过 140 字(可选)
 
  • Category:类别,比如梁、板、柱、门、窗等大的分类。
  • Family:族,子分类。
  • FamilySymbol:族类型,个人理解是体现子类的规格。
  • FamilyInstance:实例化出新的对象,体现在revit中就是创建了一个新的构件,这个构件属于Category、Family、FamilySymbol一种,熟悉面向对象的编程语言应该很容易理解这个概念 所以简单的理解revit的数据存储结构是树状结构
2.revit分类编码规则
Revit 分类编码采用的是国际行业标准的Omniclass编码,是对建筑全生命周期进行编码,印象中总共有30多个table,revit主要使用的是第23个table中的编码,例如:23.25.30.11.14.11,在表中可以查到对应的解释。Revit内置大约有1000多种族分类。
3.插件开发
环境的搭建可以参照 https://blog.csdn.net/qq_36754364/article/details/86724985
提取数据需要依赖revti的sdk, c#引用链接库RevitAPI.dll、RevitDBAPI.dll,实现IExportContext接口,方法流程:
图像描述

添加图片注释,不超过 140 字(可选)
注:获取的element包含了场景数据,如相机。也包括轻量化不需要的元素,如中心线、洞等,执行插件只获取当前视图view的元素,也支持链接rvt的进一步遍历。
4.导出gltf
使用GITF格式作为模型文件,一是它的目标是成为模型界的通用格式,类似图片界的jpeg。二是对OpenGL的兼容性好,数据格式清晰简单,三是自己对计算机图形学不了解,自定义格式难度大,还是考虑成熟的数据格式。
图像描述

添加图片注释,不超过 140 字(可选)
GITHUB上有开源的导出GLTF的代码,地址: https://github.com/McCulloughRT/Revit2glTF
public struct glTF{public glTFVersion asset;public List<glTFScene> scenes;public List<glTFNode> nodes;public List<glTFMesh> meshes;public List<glTFBuffer> buffers;public List<glTFBufferView> bufferViews;public List<glTFAccessor> accessors;public List<glTFMaterial> materials;}
这里是对GLTF的文件格式定义,按照revit二次开发规范实现IExternalCommand,IExportContext接口生成dll和addin文件,然后关联到revit上即可导出文件:
图像描述

添加图片注释,不超过 140 字(可选)
导出结果:
图像描述

添加图片注释,不超过 140 字(可选)
 
4.文件大小优化
对模型进一步优化可以使用谷歌开源的Draco,大幅加速 3D 数据的编码、传输和解码。 gltf-pipeline:https://github.com/CesiumGS/gltf-pipeline,依赖NODE.JS,通过命令行窗口可以对模型进行优化:
  • 转换GLB:gltf-pipeline -i NewProject.gltf -o NewProject.glb
  • 转换Draco:gltf-pipeline -i NewProject.gltf -o buildDraco.gltf –d
图像描述

添加图片注释,不超过 140 字(可选)
源文件大小为6M,压缩完后为1M,压缩比接近6:1,对于管线、精装修等mesh多的情况达不到这种压缩比。

总结
提取的算法优化空间还很大,比如移除重复顶点和重复面、三角网简化等,只不过自己的能力不足,需要继续学习,感兴趣的同学可以进一步优化。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性

GLB下载网 - GLB/GLTF模型与格式资源免费下载,支持在线浏览与转换 » glzipBIM轻量化之路(二)-revit导出GLTF

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载要提取码
百度网盘提取码都是gltf。
分享过期和重复下载怎么办
分享过期请使用备份下载,重复下载是不另扣费的,请放心下载。
模型和平台不兼容怎么办
可以用网站在线编辑功能,修改模型属性,大小,方向,坐标,中心,透明等问题,然后重新导出既可https://glbxz.com/38636.html
开通VIP 享更多特权,建议使用 QQ 登录