发明名称 基于AIF的三角形网格切割重建方法
摘要 一种计算机应用技术领域的基于AIF的三角形网格切割重建方法。本发明首先将三角形三维网格模型数据表现形式转化为具有邻接入射关系的AIF数据结构形式,并进一步对该形式的数据进行网格模型重建处理,在处理的过程中,先将切割路径经过的三角形网格模式化分类,然后根据分类的结果再进行快速的AIF结构查询和修改,最终获得全新的切分后网格数据,实现切割体的网格重建。本发明避免了切割过程中全局性的修正网格,充分利用AIF结构特点,以局部网格重建实现拓扑结构的改变,从而有效地提高了三角形网格切割时网格重建的速度,并且该速度不随三角形网格数据量规模而改变,能达到很好的稳定性。
申请公布号 CN100595796C 申请公布日期 2010.03.24
申请号 CN200810035539.5 申请日期 2008.04.03
申请人 上海交通大学 发明人 杨杰;黄洁
分类号 G06T17/40(2006.01)I 主分类号 G06T17/40(2006.01)I
代理机构 上海交达专利事务所 代理人 王锡麟;王桂忠
主权项 1、一种基于邻接入射框架结构AIF的三角形网格切割重建方法,其特征在于:首先将三角形三维网格模型数据表现形式转化为具有邻接入射关系的AIF数据结构形式,进一步对该形式的数据进行网格模型重建处理,在处理的过程中,先将切割路径经过的三角形网格模式化分类,然后根据分类的结果再进行快速的AIF结构查询和修改,最终获得全新的切分后网格数据,实现切割体的网格重建;所述将三角形三维网格模型数据表现形式转化为具有邻接入射关系的AIF数据结构形式的具体步骤为:首先,获取原始的三角形网格模型数据,其存储的形式为一个含有所有顶点坐标的一维数组以及一个含有所有三角形面片的顶点索引的一维数组;然后根据三角形每一个顶点建立一个相应的顶点AIFVertex对象,其数据内容为:顶点三维坐标、顶点的法方向坐标、顶点为端点的所有边对象列表,所述顶点为端点的所有边对象列表即入射于该顶点的所有边对象列表,根据原始数据,填写每一个顶点AIFVertex对象的三维坐标以及法方向坐标;接下来,建立一张边信息的查询表,遍历所有三角形面片的顶点索引的一维数组,分别将每个三角形顶点两两成对,按两个顶点的索引升序排列,组成一对信息,把此对信息在已经建立的边信息查询表中进行查找,如果信息没有匹配到,则生成一个新的边AIFEdge对象并填写其顶点信息,如果已经存在,则更新边信息查询表、边AIFEdge对象和顶点对象信息,其中,边AIFEdge结构包含有边的两个顶点对象、入射于边的面列表,每完成一个三角形面片的边操作时,将这些边构造成邻接边列表,存储在三角形面AIFFace对象中;最终,当扫描完所有的三角形面片,实现原始数据到新的AIF邻接入射关系结构的转化;所述将切割路径经过的三角形网格模式化分类,具体为:首先假定每一个三角形面片至多仅有两个采样点,并且采样频率相对于整个三角形网格模型的规模足够高,从而,将采样点与三角形的位置关系概括为四种基本情况,即:第一种,采样点在三角形的任意两条边上;第二种,某一个采样点交于三角形任意一个顶点上,而另一个采样点则交在该顶点的对边上;第三种,某一个采样点交于三角形任意一条边上,而另外一个顶点则落在三角形内部;第四种,两个采样点都落在三角形任意两个顶点上;所述根据分类的结果再进行快速的AIF结构查询和修改,最终获得全新的切分后网格数据的具体步骤为:首先构造基本分类模式,获得三角形面、边、顶点的增减模式;然后根据既定的增减模式,先对由于切割而添加的三角形顶点AIFVertex对象进行创建,再创建新添加的三角形,在创建新三角形面AIFFace的过程中,通过三角形每两个AIFVertex对进行组合查询,即匹配两个AIFVertex对象中入射边列表是否有相同内容,如果存在,则直接填写入新的AIFFace对象中,如果不存在,则创建一个新的AIFEdge对象,然后填写入新的AIFFace对象中;最后,对于由于切分而需要被删除的三角形面AIFFace和三角形边AIFEdge对象,要先查找AIFEdge对象内顶点AIFVertex对象中该AIFEdge对象,并把它从顶点的入射边列表中删除,同样,首先从AIFFace对象内边AIFEdge对象的入射面AIFFace列表中找到该AIFFace对象,并把它从边的入射面列表中删除;所述新添加的三角形,采用三角形顶点连接顺序继承方法来保持新产生的三角形具有原来三角形的法方向,即只需要继承被切割三角形某一个边的连接关系,就能确定整个三角形顶点的连接顺序;当采样点与三角形的两个顶点完全重合,经过了两个及两个以上的三角形时,利用以下步骤来实现其网格重建:步骤1:选择一个被切割到边的三角形为起始三角形,通过切割的边以及交汇的切割点查询到三角形的另一条边,和该边的另一个入射三角形;步骤2:察看新查询到的三角形与另一个被切割到边的三角形是否相同,如果相同则转到步骤4处理,否则继续;步骤3:修改该查询到的三角形共享的顶点信息,然后继续查找以共享顶点为端点,即入射于共享顶点的另一个三角形边,和该边的另一个入射三角形;重复步骤2;步骤4:结束处理。
地址 200240上海市闵行区东川路800号