数字几何处理(2020-05-09)

Remeshing

主要内容:1) Remeshing,Isotropic remeshing,通过split、collapse、flip、smooth、project操作进行remeshing,调整顶点位置等,使得输出的网格的三角形边长尽量是一样的,朝向与主曲率的方向是一致的,能够满足质量准则,对原始网格是一个很好的逼近。2)error-bounded remeshing,提出Hausdorff distance约束,判断输出和输入的网格是近似的。两种保持方式:一是在每一步操作都判断Hausdorff distance,不满足则取消这一步操作;二是在每次remeshing后,找到违反hausdorff distance的地方,通过加点的方式,使其满足到hausdorff distance约束。3)基于参数化的方法,原因是在smooth后会产生点不在原曲面上,于是需要投影。所以通过参数化后转化为2D case,解决点不在原曲面的问题。

概念

给一个3D网格,计算另一个网格,这个网格要满足一些质量准则(如网格是正三角形),三角形的质量会更好,近似于输入的网格模型。

approximating:模型顶点位置接近,比较微分量、顶点位置函数值、一阶normal、二阶curvature。

图中中间:三角形比较一致,更像是各向同性的网格。
图中右1:在曲率高的地方采样的点会多一点,对模型的近似程度更好。
remeshing

作用

  1. 网格的质量的提升,有利于其他应用中的处理与分析(有限元分析)。
  2. 减少曲面网格复杂度。

比如三维扫描一个模型,但是想要提升网格质量,就需要remeshing,remeshing不会修补网格。

问题讨论

输入: 一个manifold三角形网格(修补后的)或者它的一部分。
希望输入和输出是近似的。

输出的网格质量:

  • 采样密度:比如曲率高的地方采样点多一点。
  • 奇异性(regularity):尽可能得到奇异点少的近似网格模型。
    • size:曲率高的地方多采样一些点,点多了,size就会减小。
  • orientation:各向异性,希望三角形在曲率大的地方小一点,曲率小的地方大一点,和主曲率的方向对齐。
  • Alignment:网格有feature,希望生成的网格与feature是对齐的。
  • 网格单元的形状:希望是正三角形的。
  • 拓扑约束:希望不要出现拓扑约束,如果出现需要网格修复。

Local Structure

  • element shape
    Isotropic Anisotropic
  • element density
    uniform、nonuniform、adaptive
    uniform、nonuniform、adaptive
  • element alignment and orientation
    保持住sharp features
    各向异性,三角形的orientation与主曲率的方向一致。
    alignment and orientation

Global structure

    • 非奇异点
      • 三角形网格:valence=6
      • 四边形网格:度=4
    • 奇异点
      希望奇异点越少越好,比如奇异点越多,会影响有限元分析的收敛性。
  • Global
    • irregular
    • semiregular
      在原来粗糙的网格上细分得到的网格,在细分过程中不会产生奇异点,奇异点只存在于原来粗糙的网格。
    • highly regular
      大部分点都是非奇异的
    • regular
      所有的点都是非奇异的,不存在
      regular

算法

  • 目的:希望生成一个各向同性、三角形的边长尽可能接近的。
  • 输入:三角形网格和目标边长
  • 输出:输出另一个三角形网格,希望所有的三角形都是正三角形并且边长与目标边长尽量的接近。

将网格中的比较长的边一分为二,较短的边做一个collapse,然后flip调整度,relocation做一个smooth,使点分布更均匀,三角形更像一个正三角形。
algorithm

  • 算法流程
    其中 4/5、4/3、10都是经验参数,不用改变。suanfa

  • 算法操作

    • split

      • 访问所有的边
      • 在长的边的中点做split
    • collapse
      注意collapse会将短的边变长,要判断变长的边是否超过4/3,若超过,可以拒绝本次collapse操作。
      在这里插入图片描述

    • equalize valences(flip)

      • 详见书p100-102
      • 看度是否接近6,看flip之后度的变化
      • 准则:每个点的|度-6|求和,如果flip后这个和变小,则可以做flip。
    • The tagential relaxation(smooth)

      • 拉普拉斯
      • 投影
        discussionopenmesh中实现了一些操作,需要配置CGAL,学习AABB tree的使用。
  • 与主曲率的自适应的关系
    在这里插入图片描述

  • feature的保持

    • feature边和点在输入时给出
    • corner点:多条feature线的交汇点
    • feature点:仅沿着feature线移动的点
    • 其他的点可以随意移动,remeshing过程中满足上述点的要求。

基于参数化的方法

  • 过程:参数化 -> remeshing -> 返回回原曲面。
    • 优点:参数化后都在二维平面区域,不会出现remeshing后的点不在原区域内,不需要投影。

    • 缺点:

      1. 参数化后二维区域的remeshing 会出现扭曲,比如在二维区域看似正三角形,投影到曲面上相差较大。
      2. 在原曲面上有一条切缝,在二维曲面上有两条切缝,做完split flip操作等返回到曲面上时两条切缝如何保证能合上。
    • 问题解决

      1. 扭曲:把网格分成一块一块的,每一块做remeshing,并保证扭曲比较低,解决扭曲问题。
      2. 割缝:两条缝左边和右边都做remeshing,如何保证合上?一块一块做,这一块保证扭曲比较低,并且remeshing不处理边界,下一块的时候把上一块未处理的边界包含上作为内部部分一起处理。

逼近-Hausdorff距离

  • 输出和输入的相似性
    - 看上去比较接近
    - 法向和曲率、高阶的微分量比较接近。
    • 逼近方法-Hausdorff距离
      • 不考虑法向、曲率的difference。

      • 考虑两个网格的位置之间的difference。

      • Hausdorff距离

        • 测度空间之间的difference
        • X、Y看做两个点云

        在这里插入图片描述

        1. 给定一个x,在Y里面找一个点y,使得x和y的距离是最小的,对每一个x操作,对所有的x求一个最大值;
        2. 给定一个y,在X里面找一个点x,使得x和y的距离是最小的,对每一个y操作,对所有的y求一个最大值;
        3. 求前两者中的最大值,该值被定义为Hausdorff距离。
          在这里插入图片描述
  • 三角形网格之间的Hausdorff distance
    • 两个距离之间的最大值。
      在这里插入图片描述
      • Hausdorff distance 的近似:一般是算Hausdorff距离的近似,在网格上做采样。但是注意是计算采样点到另一个网格(三角形面片)上的所有点的距离,不是两个网格的采样点互相求距离。
        在这里插入图片描述

Error-bounded remeshing

  • 希望输入和输出网格的hausdorff距离是有界的。
  • 将此作为一个约束,每做一次操作,判断一次hausdorff距离,不满足则拒绝该次操作,保证每一步生成的网格都是满足约束的,在error-bounded space里的。
    • 显式保证了hausdorff距离是有界的,输出不会偏离输入太远,但是代价比较高。
    • 每一次都判断代价太高,解决方法:在remeshing过程中在违反hausdorff距离严重的地方插入更多的点,使hausdorff距离减小,回到界内。做完一次加点操作再去判断。
    • 算法
      初始化目标边长,做完一次remeshing,如果违反hausdorff距离约束,调整目标边长,加点、更新。
      在这里插入图片描述

角的处理

  • 在最大角和最小角做一个提升,让输出不会产生很大或很小的角(split、collapse)。
    在这里插入图片描述
    • 方法
      在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值