3D格式转换引擎HOOPS Exchange如何获取模型的几何数据?

一、概述
前面讲解过模型在内存中的结构,现在回顾一下,当模型导入成功后,整个模型数据会以原生结构的 PRC 组装树形式存放到内存中。(申请 HOOPS Exchange 试用
PRC结构的主要类型包含四种,分别是模型文件(Model file)、产品结构节点(Product Occurrence)、零件定义(Part definitions)和表示项(Representation items),其具体结构图如下:

下面我们根据这个脉络,从文件的指针入手,简单说一下如何获取到模型的几何数据。

二、遍历模型

1、模型入口
我们在导入模型后,会获取到导入模型的文件指针(A3DAsmModelFile* m_psModelFile),它是我们遍历模型所有数据的入口。
2、解析产品结构节点(Product Occurrence)
接下来我们根据文件指针m_psModelFile查找其对应的A3DAsmModelFileData数据,在A3DAsmModelFileData数据中可以获取到"产品结构节点(Product Occurrence)"的数量和子节点集合。
之后判断子节点的类型,如果子节点也是"产品结构节点"类型,则进行递归,查找子节点下面的子节点,这样不断递归,就可以将模型中所有的"产品结构节点"找出。
如果子节点的类型是"零件定义(Part definitions)"类型,则就进行下面的解析"零件定义(Part definitions)"节点的操作。
3、解析零件定义(Part definitions)
在获取到"零件定义(Part definitions)"节点后,我们可以获取到"零件定义(Part definitions)"节点对应的"零件定义数据",通过"零件定义数据"就可以获取到该节点对应的"表示项(Representation items)"的数量和集合。
这一级节点的解析比较简单,没有递归。
4、解析表示项(Representation items)
在获取到"表示项(Representation items)"节点后,我们就可以获取该节点封装的细分数据和 B-rep数据。
其中细分数据一定会有,即便源模型中没有,HOOPS Exchange也会生成;B-rep数据可能会有,因为有的源模型格式并不支持B-rep数据。
下面分别介绍这两种数据。

三、细分曲面数据(Tessellation)

细分曲面数据可以理解成我们肉眼所见的网格数据。我们可以获取到表示项中默认的细分曲面数据,但对于许多应用程序,获得默认曲面细分是不够的,因此可以设置细分曲面数据中的参数,根据这些参数重新生成符合要求的细分曲面数据。
A3DRWParamsTessellationData可以影响细分曲面数据的生成,其参数如下:

  • TessellationLevelOfDetail - 由其它A3DRWParamsTessellationData预设值组成的高级设置。如果选择UserDefined,我们可以自定义自己的一组值。
  • AccurateTessellation - 将此值设置为true将生成更适合分析的细分。可用于所有细分级别。
  • AccurateTessellationWithGrid - 一种精确的曲面细分模式,其中在网格布局中插入点。
  • ChordHeightRatio - 指定边界框的对角线长度与弦高的比率。
  • AngleToleranceDeg - 指定边的两个连续段之间的角度。
  • MaxChordHeight(和UseHeightInsteadOfRatio) - 指定曲面和生成的细分之间的最大距离。
  • KeepUV - 将参数点保留为纹理点。
  • AccurateSurfaceCurvatures. 曲面细分倾向于沿曲率创建更适合的三角形。

TessellationLevelOfDetail 和AccurateTessellation 设置的效果如下:

AccurateTessellationWithGrid 的设置效果如下:

标准精确细分

通过插入网格对齐点进行精确细分

AccurateTessellationWithGridMaximumStitchLength、AccurateSurfaceCurvatures设置效果如下:

四、B-rep 数据(B-rep Data)
B-rep 数据是用数学来描述模型的数据,它是几何造型中最成熟、无二义的表示数据。
以下实体包含表示 B-rep 数据的几何数据:

  • Face:一个曲面和一组Loop。
  • Shell:Face实体的集合。
  • Connex:Shell实体的集合。
  • Topology B-rep 数据:拓扑边界表示法,由边界框和对多个Connex实体的引用组成。

以下为HOOPS Exchange B-rep 的拓扑结构图:

申请HOOPS试用http://x7pfmmn259623uby.mikecrm.com/d7EBgIv

相关推荐
还是大剑师兰特17 小时前
Unity 从零搭建简易3D场景(新手分步教程)
3d·unity·游戏引擎
EQ-雪梨蛋花汤18 小时前
Android 3D 开发教程(三):Sceneform-EQR 配置 PBR 材质、光照、相机与实时阴影
android·3d·材质
弈语道破AI19 小时前
3D渲染不再熬时间!即梦 Seedance 2.5 具备3D白模渲染功能的AI视频生成工具
人工智能·3d·音视频
答案—answer1 天前
VibeCoding 能做到什么程度?我用它做了一座 3D 数字博物馆
3d·ai编程·threejs·vibecoding
玖玥拾2 天前
Unity3D RPG 入门项目(四)背包拖拽、物品悬浮提示、项目开发思维
3d·unity·游戏引擎
cyadyx2 天前
【Three.js】Three.js 中加载 3D 模型
前端·javascript·3d
chaoyuanl3 天前
悬空玻璃剧场源头厂家选型全解析|270°裸眼3D悬空玻璃剧场投资避坑指南
大数据·人工智能·3d·xr·娱乐·mr
在下胡三汉3 天前
GLTF vs OBJ vs FBX vs GLB:选择合适的 3D 文件格式,怎么获取下载
3d
fanfan_hongyun3 天前
Cesium for unity (可加载3dTileset)
3d
鲲穹AI种草3 天前
家装设计工具记录:多款室内 3D 设计工具能力边界整理
3d·家装设计工具