2 后端STEP文件自动解析运算

step是3维工业软件之间比较通用的一种交互格式。它一般可以用在不同3维工业软件之间做数据的传递。但是,step文件本身不能被显卡直接渲染成可视化图形,因为它不像stl, ply,gltf 等直接记录顶点,和顶点分组等可以直接注入显卡设备的信息,而是记录着各种基本3维几何体及其边界和拓扑关联等信息。因此,tuo-visual系统解决的第一个问题就是对step文件做预渲染的问题。它能读取step文件中的几何关系和数据将其转化成顶点,法线和顶点分组等信息,除此以外我们还将3D预览时需要的一些几何特征数据一起打包成2进制数据并结合一些针对网络传输和gpu渲染的优化方案形成了我们专有的数据格式TuoVisual。

2.1 解析信息

前文提到step不能像stl, ply, gltf等格式可以很容易的被显卡设备渲染成图形,但它的优点是能比较全面而且较高精度的存储3D模型的几何体信息。有这些信息,我们就可以作出更多的3D交互应用的功能,例如我们可以允许用户较高精度地分析模型的几何体数据,又或者是把这些信息交给CAE软件做工程动力学模拟仿真等。目前的tuo-visual系统1.0版本除了能将所有几何体的可视化信息传给前端应用外,还能够比较完好的将以下几何体的构造信息传给前端应用。

  1. 顶点
  2. 线段
  3. 圆弧
  4. 平面
  5. 圆柱面
  6. 球面

在后文我们提到的几何体分析工具,正是利用了这些信息,允许用户在预览3D模型的同时,可以对模型的各方面尺寸做精确测量。

2.2 优化方案

当前tuo-visual系统1.0版本针对3维CAD文件的线上预览问题做了4个方面的优化。

  1. 渲染数据的保存形式。TuoVisual存储数据结构的设计充分参考了科纳斯组织设计gltf格式,让需要被导入显卡设备的数据以不做任何修改的2进制形式直接“灌入”显存。
  2. 对模型渲染部分做恰当的合并运算。单独的一个3维CAD模型通常包含数个面,边和顶点,在做交互操作的时候,我们希望一个模型的颗粒化程度高,让这些几何元素能独立存在。但做渲染的时候就恰恰相反,对于显卡设备,它希望能够尽可能的减少对整体模型的渲染周期所执行的次数。被渲染的模型,颗粒化越高,整体模型渲染一次所执行的渲染周期的越多,从而渲染性能也就会越低。tuo-visual系统很好的权衡了交互和渲染两个方面对整体模型颗粒度要求的矛盾,它能在保证交互操作功能的同时对3维模型做尽可能多的合并操作。
  3. 对装配体模型进行体积排序。一般情况下体积越大的模型对人类视觉影响所占的比重越大。对于大型装配体,我们会对所有子零件按照体积大小做一个排序,以便于更好的支持后面对模型实时加载实时渲染的功能。
  4. 文件大小的控制。为了更好的支持网络传输的特点,tuo-visual系统会恰当的对模型渲染数据按照一定配置,进行自动分块,分别保存。以此来配合实时加载实时渲染的功能,达到模型还没有加载完,但加载的部分已经先渲染给用户进行应用的目的。