当前位置:文档之家› 曲面重构技术文档

曲面重构技术文档

曲面重构技术文档
曲面重构技术文档

由点云重构CAD模型的基本步骤包括:点云分块、点云切片、曲面重构、CAD模型。

1.点云分块

由于工程实际中原型往往不是由一张简单曲面构成,而是由大量初等解析曲面(如平面、圆柱面、圆锥面、球面、圆环面等)及部分自由曲面组成,故三维实体重构的首要任务是将测量数据按实物原型的几何特征进行分割成不同的数据块,使得位于同一数据块内的数据点可以一张特定的曲面来表示,然后针对不同数据块采用不同的曲面建构方案(如初等解析曲面、B-spline 曲面、Bezier曲面、NURBS 曲面等)进行曲面重建,最后将这些曲面块拼接成实体,它包括点集分割与曲面重建两部分。

为了实现点云的分块功能,同时也为了后续曲线拟合中重要点的选取工作,我们建立了图元的拾取模块。它包括多边形拾取、矩形拾取、点选三个小的部分,运用此模块我们可以利用鼠标对空间点云进行任意的分割和提取。

多边形拾取与矩形拾取类似,都是在视图上确定一个选择区域,然后根据视图上的图形是否完全落在这个选择区域中来决定视图上的图形是否被选取。由于我们针对的对象是三维空间中的图元,因此在视图窗口中所确定的区域实际上是一个矩形体或者多面体,所拾取的图元是位于这个体中的对象。问题的关键在于如何确定图元是否位于矩形体或多面体中。

基于OpenGL的拾取机制很好的解决了这个问题。物体的实际坐标经模型视图变换、投影变换、视口变换后显示为屏幕上的一点,OpenGL的gluUnProject()可以做该过程的逆变换,即根据已知屏幕上点的二维坐标以及经过的变换矩阵可求出该点变换前在三维空间的坐标位置,但需要事先给定二维屏幕坐标的深度坐标。考虑OpenGL的投影原理,将0.0和1.0作为前后裁剪面的深度坐标。因此两次调用gluUnProject()可得到视图体前后裁剪面上的两个点,也就是屏幕上点的两个三维坐标。

对于矩形拾取而言,判断点是否位于矩形体中比较简单,可以选取每个空间点,判断点的坐标是否位于矩形盒三个方向的极限范围内,如果满足条件,则可认为该点符合条件,被拾取到了,并高亮显示。对于多边形拾取而言,我们借助面的法矢进行判断,对于任意空间点p,首先计算出各个面的外法矢n,然后在每个面任选一点v与p构成向量pv,如果对于多边形的每个面恒有n*pv >0,则可认为该点位于多边形的内部,当然也可利用射线法进行判断,从该点出发,作任意方向的一根射线,考察此射线与三维物体各面的交点数,如果总数=0或其它偶数,则在三维物体之外,如果总数为奇,则在三维物体之内。点选相对比较简单,对鼠标点击点向各个方向各扩展一定距离,构成一个矩形,然后按照矩形拾取的原理进行判断。需要注意的是上述三种方法不可避免的会出现透视方向的重叠点,必须根据到前裁剪平面的距离进行取舍。下面分别给出一些简单的例子。

多变形拾取

在多边形拾取对话框中我们可以根据操作的类型选择是对网格还是点云进行拾取,同时所保留的区域(多边形内、外、或者同时)也可进行选择。基本操作步骤为:左键点击多边形按钮开始选择,在点云中左键单击作为多边形顶点,同时开始绘制,点击Apply结束多边形绘制,同时高亮显示拾取点云。

1.1矩形拾取

矩形拾取的步骤和多边形类似,效率相对高一些,但每次拾取的区域有限。

1.2点选操作

点选操作的主要目地是选择一些显著的离散点进行曲线的拟合,也可用于删除一些噪点。

2.点云切片

由于通过测量所获取的数据是一种散乱无序的状态,而且数据量很大,直接处理代价很大,因此如何将数据进行重新组合,使其成为一种有序的结构,在曲面重构中有着重要应用。借助医学切片技术在医学图像三维重构方面的突出作用,将它引入到计算机辅助几何设计领域,提出了三维散乱数据点的切片表示技术,这种技术将原始的无序数据点集转化为具有层列结构的有序组织形式,同时减少了点云的数据量,为后续的曲面重构奠定了基础。

2.1 定义截平面

每个截平面包括两个属性,一个截平面的中心点centerPos,另一个为截平面的法矢n,不同拓扑结构的数据点云,截平面的定义方式不同。对于一般结构的数据点云,初始截平面的定义可以按以下过程定义:首先计算点云的最小包围盒,获取包围盒的中心点作为第一个截平面的中心点,初始方向定位x,y,z任一方向,截平面的个数设定为一个,平行平面之间的初始距离d=1;实际应用时,可以根据数据点云的具体情况进行手动调整第一个截平面的中心坐标、截平面的法矢方向、截平面的间距、截平面的个数。同时为了便于观察切片切

割到的点云,建议将切片做成半透明的,切片的大小可以参考点云三个方向的变化范围进行确定。下图为根据点云的实际位置和方向调整后的截平面族,截平面的个数num = 3,间距dis = 5.0;法矢为x轴正向。

有些时候沿坐标轴方向或者反方向很难获得比较满意的切片,我们希望可以根据点云的走向任意确定截面法矢。因此在做切片时需要增加法向的选择功能,由于空间两个不重合点即可确定一向量,因此在实际操作时我们可以任意在空间选择两个点确定切片的法向。离散点的选取可以参照图元拾取中的点选操作。

2.2 定义截平面数据点

用截平面截取点云时,数据点刚好落在截平面上的可能性很小,有时甚至是不可能的,所以仅仅截取落在截平面上的点往往不可能拟合出截面线,即使可以拟合出截面线也往往不能反映实体的实际外形。所以这里采用点云中与平面距离小于一定阈值ε的点作为研究对象。只要与截平面距离小于阈值的点就是截取点。这里阈值的确定十分重要,太大,截取的点太多,计算量大,太小,截取点拟合曲线又不能反映实体的实际外形。因此点云的厚度δ(2ε)很难给出具体的值。一些实例表明,δ与点云的密度ρ存在一定的关系,大部分情况下δ取1~4倍的ρ即可满足条件。

2.3 获取截面数据点

目前有两种计算切片的方法:投影法和求交法。下面分别给出这两种方法的原理和后续点云的处理方法。

2.3.1 投影法

投影法是对每一平面阈值内的点云沿平面的法矢方向进行投影,得到点云束。

选取回转面进行测试,δ取2倍的点云密度,截平面个数为5,间距为6.0,结果如下:

仔细观察上述点云发现投影法获取的切片数据为具有一定宽度的点云带, 存在大量冗余数据, 且切片数据之间没有明显的拓扑邻近关系, 因此在保留截面特征数据点的同时必须对其进行精简与排序, 实现切片数据的优化, 以适用于参数曲线与曲面重构。

为实现切片数据精简, 可将切片数据点转换至极坐标系下并将其划分为多个区域, 对每个较小区域分别进行轮廓分离及特征数据提取, 在保证数据信息完整性的同时实现切片数据的精简, 然后依次连接各区域相同轮廓特征数据, 得到精确有序的切片数据点序列。

该算法的主要步骤为:

1.将每个切片截取的的数据点集T进行旋转平移操作,转移到xy平面上,其中集合T

的中心点O0转移到坐标原点。

2.以O0 为极坐标原点, 以O0 为起点作一条平行于X 轴的射线, 作为极轴, 建立切片

数据极坐标系, 获取切片数据点极径r及极角θ

3.计算极角θ的变化范围[θmin,θmax],按照极角部长ρ将切片数据划分为多个扇形区域,

如下图所示。

4.计算各区域切片数据形心,将其作为切片数据特征点,依次连接特征点,所得序列

即为优化后的切片数据点序列。

我们选取ρ= 10。作为极角步长,对回转面截取的点云进行优化,效果如下图所示:

结果表明采用极坐标法对于常见的凸数据有很好的适用性,但是如果在极轴方向存在数据重叠或者数据过于复杂,可能就不成立,这样有时会把曲面的一些特征给光顺掉。针对这种情况,我们可参考最近点对的方法或者采用移动最小二乘法对数据进行处理。

2.32 求交法

当截平面的宽度δ确定后,截面线的轮廓仅与其上下邻域有关,距离截面越近的点,对轮廓重构的贡献越大。因此,把参与该层截面重构的点称之为关联点,否则为非关联点。依据这个原则,提出基于最小距离关联点对的线面截交方法。该算法步骤如下:

1)首先根据截平面的法矢和阈值ε将截面两侧点云分为上下两部分,记为A1,A2。

2)在上邻域A1中任选一点P,在下邻域A2中找出距离点P最近的点Q,设PQ之间

的距离为L1,同样在A1中找出距离点Q最近的点R,设QR之间的距离为L2,如果点R和P重合,则点P、Q构成最小距离关联点对,并记下;否则,记录点Q、R构成最小距离关联点对,另一点P为非关联点

3)重复上述操作,遍历整个上邻域点集,最终形成一个最小关联点对的集合。如下图

所示:

4)计算每一个最小关联点对与截平面的交点。设一点对为P1?P2,令κ=(P1 - P2),V、

n分别为截平面的中心点和法矢,则点对连线与该截面的交点ξ为:

ξ = P2 + [n * (V – P2)] κ / (n * κ)

下面给出以回旋面为例,使用求交法所获得的截面点云。首先选择合适的方向,构造7个半透明的截平面与点云相交

为了获取足够的点云拟合截面线,对每个截平面沿法向向两侧分别拓展一定宽度ε,得到一块点云束。

对每块点云束构造上下区域,计算最小关联点对。

最小关联点对与截平面相交,获取截面线数据点

2.4 轮廓数据点排序

利用截平面法所获得的特征点为无序的点云,必须对其进行排序才能用于后续的曲线参数化。散乱数据排序的方法有很多,如二分排序法、方向投影法。这些方法对于外形轮廓形状比较简单的数据点进行排序是可以的,但针对外形比较复杂的场合,上面的排序法就会受到限制。考虑到平面截取的数据点比较密,实体表面形状各异,这里采用距离排序法,同时为了防止在排序过程中出现折回的现象,使用夹角法进行处理。基本思路为:1)在平面截取数据点中选取任意一点P1作为初始点,为了方便,选取截取数据点序列中的第一个点。

2)以选取的首点为研究对象,在截取数据点除首点以外的点集内找出与该点距离最近的点p2作为第二个点,并标记为已查找点。

3)以第二个点为研究对象,在除p1、p2外的点集中找出与该点距离最近的点p3,计算p1、p2构成的向量与p2、p3构成的向量的夹角,如果夹角小于90。,则可认为没有折回,将p3作为第三个点,并标记为已查找点,转5。若夹角大于90,说明出现折回现象,p3不符合条件,转到4.

4)若出现折回现象,大部分情况下说明沿某个大致方向已搜索到点云的某一端点,需要反向搜索。仍然把p1作为初始点,在未标记点中搜索距离点p1最近的点p3作

为反向的第一个点,并进行标记.

5)依次类推,在寻找第n+1点时,在出去前n个标记点之外的数据点集中找出与第n 点距离最近的点作为n+1点。

6)这样可以一直进行下去直到找到截取数据点集中的最后一个数据点。

下面给出使用求交法所获取的截面线数据未排序和排序后的情况。为了方便观察,我们对截取的点云数据使用折线首尾相连,以鞍面为例。

未排序点云

排序后点云

3.曲面重构

3.1 样条曲线拟合

在散乱数据点的曲面重构方法上,目前研究最多的是基于四边域的B样条及NURBS法,B样条法可通过控制点和权值方便灵活地控制曲面形状,因此我们采用B样条方法对曲面进行重构。重构过程分为两步:首先将截面点云拟合成样条曲线,然后利用蒙皮法插值生成样条曲面。

为了便于后续的曲面拟合,首先对上述排序点云进行判断,调整位置,使截面线的方向一致化。然后编写B样条函数进行拟合,我们选取鞍面为例,拟合结果如图:

截面线点云

三次样条曲线

3.2 蒙皮法生成曲面

用蒙皮法生成B样条曲面,需要对截面线做如下处理:(1)统一次数,使较低次数的截面曲线都升阶到其中最高次数;(2)参数域变换,使所有截面曲线都具有统一的定义域;(3)插入节点,每一截面曲线的节点矢量插入其他截面曲线节点矢量中相异的节点值;(4)从光顺性考虑,应使所有截面线的端点与分段连接点沿曲线弧长分布情况比较接近,否则将不利于曲面光顺性。基于该要求,需要进一步处理上面生成的截面线。

针对上述要求,编写B样条曲面类,实现u、v方向节点矢量的统一,并计算出曲面的控制点,选取上述截取好的鞍面为例,拟合样条曲面。

曲面网格显示

渲染显示

4.加工轨迹规划

对参数曲面进行刀具轨迹规划有很多种方法,目前常用的有等参数线法、等截面法,残留高度法以及导动面法,对于前三种方法,生成的轨迹为刀具表面与加工模型接触点的轨迹,必须根据点所在曲面法式以及刀具参数进行适当调整生成刀位点轨迹,借助导动面法生成的轨迹,事先根据刀具的参数对曲面进行了偏置,所生成的轨迹即为刀位点轨迹。下面给出运用等参数线法生成刀具轨迹的例子。

相关主题
文本预览
相关文档 最新文档