一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于OpenCascade的CAD模型在网页轻量化渲染显示的方法与流程

2023-02-01 23:44:44 来源:中国专利 TAG:

一种基于open cascade的cad模型在网页轻量化渲染显示的方法
技术领域
1.本发明属于三维软件开发平台open cascade、三维可视化和cad模型渲染技术领域,具体涉及一种基于open cascade和webgl技术的cad模型在网页轻量化渲染显示的方法。


背景技术:

2.数字化、网络化和智能化是工业4.0的主要特征,将在机械设计中数字化的cad模型在网站端上实现展示,可以使产品的方案设计、产品制作与应用都显得更加灵活、方便与有效。传统的基于cad模式的演示都必须配置大量复杂的cad软件,而且操作繁琐、成本昂贵。同时随着生产力和生产需求的不断进步,图像构造也变得越来越复杂,传统的二维平面数据图已经无法满足公众的需求,数据三维可视化技术通过构建基于现实的三维数字场景,让数据展现更为直观易用。
3.open cascade是一款为实体建模、数据交换和模型可视化提供服务的软件开发平台,由于其开源特性和强大功能,在诸多领域如车辆、建筑、航空航天等都得到了广泛的应用。三维可视化技术可以提升用户的直观感受、提供精准的数据模型,使用户可以在网页客户端进行产品交互;在模拟仿真技术层面,三维可视化技术能够将仿真效果直观的展现出来,有助于更好地开发产品。三维可视化的处理过程涵盖了大量的图形渲染和交互式控制,需要浏览器插件提供支撑,同时对计算机的配置有一定的要求,依赖cpu的核心渲染速度,在使用过程中会占用大量系统内存。
4.webgl是一个开源的跨平台api,它被用于在浏览器中创建实时的交互图形,通过编写webgl程序即可完成三维动画的制作,免去了插件;同时它运用底层的图形硬件加速功能执行图像渲染,能够逼真的映现3d效果,为展示复杂机械结构提供了保障。


技术实现要素:

5.本发明针对现有部分模型渲染存在问题和查看cad模型操作复杂,提出一种基于open cascade和webgl技术的cad模型在网页渲染显示的方法,解决了生产制造上某些模型在用open cascade进行网格生成和渲染显示后出现问题以及查看复杂cad模型需要安装复杂软件,占用系统资源较大等现实工程问题。
6.本发明的技术方案为:
7.一种基于open cascade的cad模型在网页轻量化渲染显示的方法,该方法应用open cascade进行模型读取和网格剖分,基于webgl进行网页显示;具体包括以下步骤:
8.s1:将复杂cad模型文件导出为特定格式
9.采用第三方cad造型软件将cad模型导出为step或iges格式。
10.s2:基于open cascade的数据交换模块和建模算法模块,对cad模型进行读取并实现网格剖分
11.开源软件开发平台open cascade(简称occ)共有六个模块,其中数据交换模块提供了符合各种cad格式的接口,如iges、step、stl、vrml等,这些接口允许基于open cascade的软件与各种cad软件进行数据交换,并能够查询和检查输入文件,将其内容转换为cad模型,并对转换后的数据文件进行检查。
12.针对步骤s1导出的step和iges文件,open cascade提供了特定的方法和函数来实现读取和写入,执行时首先调用control_reader功能来加载文件;其次对文件进行一致性检验;接着设置转换参数,包括用户定义精度(precision.val)、形状的最大允许公差(maxprecision.val)、形状单位(cascade.unit)、产品形状的表示类型(step.shape.repr)等;最后执行转换,通过调用transfer或transferroots来检查转换是否正确执行,并获取最终结果——拓扑形状和几何形状。
13.基于open cascade对所得的拓扑和几何形状进行网格剖分,在剖分时,首先遍历模型的所有表面,对于每个表面,遍历其所有的线,对于每条线遍历其全部的边;再根据边和面得到所需的参数空间曲线。接着对参数空间曲线所围成的参数区域进行三角剖分,通过设置线性偏差和角度偏差的大小来控制三角网格化的精度,将剖分结果通过曲面方程映射到三维空间,最终生成每个面的网格剖分,得到网格数据。
14.基于云端的显示需要较少的网格数量,因此为了实现模型网格的轻量化和流畅的网页显示需要减少网格数量,本发明在open cascade默认剖分算法brepmesh_incrementalmesh的基础上进行了改进,具体剖分过程如下:
15.首先,采用默认剖分算法遍历模型的拓扑和几何形状得到参数空间曲线;
16.其次,在对参数空间曲线所围成区域进行网格剖分时,增加内部节点控制,具体实现为:
17.1)创建一个mesher,并为mesher指定要划分网格的区域;
18.2)创建网格生成控制参数,网格生成控制参数中包括总体的线性偏差和角度偏差(即默认剖分算法的线性偏差和角度偏差)、所增加的内部节点的线性偏差和角度偏差以及考虑模型尺寸、使用并行计算同时控制曲面偏差;其中,内部节点的角度偏差相对简单,使用默认值(12~20度);为了减少网格数量,内部节点的线性偏差应大于总体线性偏差,设置过小网格数量减少不明显,设置过大网格质量会变差,通过大量实验得到内部节点的线性偏差设置为总体线性偏差的10~20倍时效果较好,网格数量大量减少的同时不影响渲染质量;
19.3)将设置好的网格生成控制参数传给mesher;
20.4)根据mesher创建网格生成环境并进行网格剖分。
21.s3:编写网格数据转换接口,搭建open cascade与webgl间的桥梁
22.编写转换程序,将open cascade得到的网格数据转换成方便计算机解析和生成的json格式的文件,再将其传到webgl中进行渲染显示。编写转换程序的过程如下:首先添加第三方依赖库boost库和rapidjson库;其次在程序中创建一个用来存储数据的树结构,并为树结构中的各个结点添加标签(lable)和属性(attribute),标签便于查看双亲,属性用于存放信息;接着调用boost库中的iostream的流处理框架对步骤s2得到的open cascade网格数据进行解析,首先遍历模型的compound,其次遍历solid,接着是shell,层层递进下去,直到遍历完所有的vertex,将得到的点、线、面、面的法向量以及拓扑和几何信息通过
open cascade的tdf_label::add函数存放到树结构中;最后通过调用rapidjson库中的writer函数,得到json格式的文件,完成网格数据的转换。
23.s4:搭建cad模型网页显示环境
24.s4.1:采用开源webgl下的three.js框架,对场景、光照、相机、渲染器等进行设置:通过three.scene来创建场景;光照采用渲染效果更加真实的平行光线;相机设置为贴近现实的透视投影相机;渲染器采用webgl渲染器。为方便观察和区分零件,对装配体下的不同零件设置不同的颜色。
25.s4.2:编写网页显示程序
26.(1)创建一个空白的html网页,使用utf-8字符编码,导入three.js框架,同时引入vue.js和vite.js来优化网页;
27.(2)编写js语句,调用步骤s4.1中设置的场景、光照、相机、渲染器并添加交互,如鼠标左键旋转、右键移动等;采用parsebuffer函数来编写json数据解析的程序,将json字符串解析成cjson结构体,从中提取信息,包括名字、材质、颜色、点、线、面等,用以实现最终的网页显示;
28.(3)编写html语句来设计网页内容,为网页添加文字如上方居中显示项目标题、左侧显示几何体数和网格数、中心用以显示的画布、以及左侧一些实现特定功能的按钮如显示/隐藏线框、显示/隐藏着色、不同角度查看模型显示结果以及拍照功能等,同时设置好字体、大小和颜色等,使其比较美观。
29.s5:检查cad模型网页显示效果
30.检查模型显示是否完整以及功能是否正常,并对模型各个角度进行拍照,使用mobilenet深度神经网络提取图像特征,与改进之前网格密度较大的图像结果进行相似性比较,验证本发明是否保证了渲染质量,并完成整个网页显示过程。
31.本发明的有益效果为:
32.1、本发明无需安装复杂的造型软件及网页插件即可实现复杂cad模型渲染显示。通过云端显示,设计者可以做到多终端和云端的协同设计,制造者可以在工厂车间查看设计模型并进行生产制造,用户可以随时随地地在移动端浏览产品,了解产品相关的信息,提高了人们的工作效率;
33.2、本发明只需通过使用兼容的浏览器即可查看复杂cad模型,相比于传统方法占用的系统资源大大减少,加载、显示速度大幅度提升,同时降低了能耗,更加省电,提高电池供电的电子产品的使用时间,并在一定程度上能够提高设备可靠性,做到节能减排、绿色环保;
34.3、本发明在open cascade源程序基础上进行改进优化,通过基于bounding box的动态检测和设置内部节点控制的方式,解决部分模型渲染出错的问题,在保证了渲染质量的前提下减少了网格数量,同时为用户提供更多可设置的参数,用户可根据需求生成不同精度的网格。
附图说明
35.图1为“相机”模型在solidworks中的显示结果。
36.图2为“相机”模型经open cascade网格生成后的渲染结果。
37.图3为“hub”模型在solidworks中的显示结果。
38.图4为“hub”模型经open cascade网格生成后的渲染结果。
39.图5为优化算法下“相机”模型的渲染结果。
40.图6为启动web服务及网页显示网址。
41.图7为“hub”模型的网页显示界面图。
42.图8为“相机”模型的网页显示界面图。
43.图9为“hub”模型的线框显示图。
44.图10为“相机”模型的线框显示图。
45.图11为“相机”模型用于相似度比较的不同角度显示图。
具体实施方式
46.为使本发明的目的、内容和优点有更进一步的了解与认识,下面结合实施例与附图,对本发明的具体实施方式作进一步详细说明。
47.本实施例对手柄按压工具模型进行了网页显示,该显示方法在大幅减少模型网格单元数量的同时能够保证模型的渲染质量,减少系统资源的占用,免去了安装复杂软件及插件,该显示方法具体包括如下步骤;
48.s1:建立三维模型
49.采用第三方cad造型软件,创建名称分别为“相机”和“hub”的模型,以上两个模型在经open cascade网格划分后的渲染结果会出现问题:相机模型会出现“破面”现象,如图1、2所示;hub模型在中间多生成了一个圆面,如图3、4所示。
50.s2:导出模型文件
51.采用第三方cad造型软件将模型导出为step和iges格式文件。
52.s3:基于open cascade进行模型读取和网格剖分
53.基于open cascade数据交换模块的step和iges接口,调用stepcontrol_reader和igescontrol_reader函数,对手柄按压工具的step和iges格式进行读取并转换,转换参数采用open cascade默认参数,从而得到“相机”和“hub”的拓扑和几何模型。
54.对所得的模型数据,在使用源程序基础上增加基于bounding box动态检测和设置内部节点的优化算法,通过大量实验得出初始值的合理范围,本例中将线性偏差初始值设置为0.01,角度偏差初始值设置为π/12,内部节点的线性偏差系数设置为10,角度偏差系数设置为2,同时考虑模型尺寸并控制曲面偏差,进行剖分得到模型的网格数据。
55.使用改进后算法进行网格剖分和渲染显示,“相机”模型的“破面”现象得到解决,模型完整无缺,如图5所示;“hub”模型多出的圆面也消失了,如果6所示。
56.s4:基于webgl实现网页显示
57.首先将open cascade得到的网格数据传入转换程序中,读取网格数据后将得到json格式的文件;其次调用搭建好的cad模型网页渲染显示环境,解析json字符串,使用three.js组件,接着导航到安装文件夹并从中启动web服务器;接着打开兼容的web浏览器并输入http://localhost:3000/路径获取所创建的网页,选择文件打开,实现模型在网页的渲染显示。“hub”模型和“相机”模型的显示结果分别如图7和图8所示。单机左侧的显示线框按钮得到线框显示结果,如图9和图10所示,单机其他视图按钮得到不同角度的视图。
58.s5:检查模型网页显示结果
59.观察模型是否正常显示,同时检查功能是否正常,如鼠标左键控制模型旋转、右键拖动模型移动、滚轮用来放大和缩小,完成模型在网页的渲染显示。
60.本发明方法剖分后得到的“相机”模型的网格数量为181780,与修改前算法得到的401060相比大幅度减少了网格数量,同时分别使用修改前的算法和本发明方法进行网页渲染显示,通过拍照功能截取模型各个角度的图像后使用深度神经网络进行图像相似度比较,如图11所示,通过比较得出二者渲染效果的相似度超过99.9%,认为渲染质量没有差别,验证了本发明实现了网格的轻量化。
61.以上实施例描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,在不脱离本发明技术原理的前提下,本发明还可以做出若干变形和改进,这些变形与改进都落入本发明的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献