三角网格细分算法 —— Loop细分

主要参考文章:

https://zhuanlan.zhihu.com/p/144400261

https://blog.csdn.net/McQueen_LT/article/details/106136324

Loop细分: 是一种专门针对三角形面的细分方法——主要思想就是1个旧三角面片分成4个新三角面片

(主要和 CC相类似,利用 新增边点 更新原始点 来新增模型的三角形网格数量 -> 细分

Loop 细分曲面过程就是 插入边点 和 更新原始点 的过程,设每次细分之后的点集为P',新插入的点集为Eps,原始点集更新位置后的点集为P,

则:P' = P ∪ Eps

细分过程:

1. 计算边点 ep 

"""
计算得到边点

分为 边界点 和 非边界点
1. 边界点:
上下两个三角形的顶点分别是为 V1,V3,该点的的所在边的端点为V2,V4
得到的边点即为:
ep = 1/8(V1+V3) + 3/8(V2+V4)

****
该公式和之前所用到的CC细分的公式的联系
-> 将两个三角形看作是一个四边形,则该四边形的面点为:fp = 1/4Σ(v1-4)
而该点的边的中点ec = 1/2(V2+vV4)
该点在CC细分下的边点为 : ep = 1/2*(fp+ec) 刚好就是和上述的公式系数相同

而对于非边界的点来说,可以将面点设置为(0,0,0),则边点也就变成了该点的边的中点
****

2. 非边界点(即 该边只与一个面相连,所以此时只计算该边的两个端点即可)
ep = 1/2(V2+V4)

"""

2. 更新原始点

"""
更新原始点

公式:
P' = (1-nβ)*P + β*Σ(Vi) (Vi 为原始点P的周围点,n表示原始点的周围点 的个数的和)
β = ...

n 可以通过之前的points_face 得到: n = points_face[i] (一个点 和 它相邻的面 的个数相同)

"""

                

算法结果:

首先输入一个四面体:

四次细分迭代后的输出结果为 :

然后测试了一下一些复杂的模型(比如 三角形网格的恐龙模型)——

迭代4次:

第一次:

第二次:

第三次:

第四次:

点的数目的数量级呈指数提高:

三角网格细分算法 —— Loop 算法相关推荐

  1. 【3维视觉】一文带你学习网格细分Mesh Subdivision算法(Loop, Butterfly, Modified Butterfly, Catmull-Clark, Doo-Sabin)

    0.引言 介绍了Loop, Butterfly, Modified Butterfly, Catmull-Clark, Doo-Sabin等网格细分算法. 网格超分技术,换言之曲面细分,是指将一个模型 ...

  2. 网格细分 Loop细分算法

    网格细分有很多种方式,其中loop subdivision是一种三角网格细分方法(只能用在三角形面上) loop细分的基本思想就是把一个三角形分成四个三角形,区分新顶点和老顶点分别进行位置的改变,最终 ...

  3. 图形学算法-网格细分

    一.网格细分的作用 网格的分辨率过低,细节不够丰富,纹理贴图由于三角面片过大,纹理坐标距离过大,采集的纹理坐标数量不够,在着色阶段由于线性插值引起模糊,此时需要用网格细分增加分辨率,贴图会更加细腻逼真 ...

  4. 网格细分 —— Loop细分

    网格细分 -- Loop细分 1. 定义 网格细分是通过按一定规则给网格增加顶点和面片的数量,让网格模型变得更加光滑.Loop细分方法是最早一种基于三角网格的细分方法.一次细分的过程分为两步骤,第一步 ...

  5. 帕斯卡三角形html,JS实现的杨辉三角【帕斯卡三角形】算法示例

    本文实例讲述了JS实现的杨辉三角[帕斯卡三角形]算法.分享给大家供大家参考,具体如下: 杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的<详解九章算法> ...

  6. 12、计算机图形学——几何(网格细分与网格简化)

    一.网格细分 1.1.概念 网格细分指的是将原有模型上的网格分成更多个网格,从而将模型变得更加精细,提高渲染出来的效果,让画面更加漂亮 下图就是一个网格细分的示意,左图是细分前的效果,右图是细分后的效 ...

  7. VTK修炼之道46:图形基本操作进阶_三角网格体积、表面积、测地距离、包围盒

    1.基本图形操作意义 图形处理,比如图形平滑.多分辨率分析.特征提取等都离不开一些基本的图形操作.掌握这些基本的图形操作有助于理解和深入学习图形处理和分析方法. VTK中提供了多种图形的基本操作,其中 ...

  8. Siggraph三角网格变形之拉普拉斯变换

    三角网格变形一直是CAGD相关领域的重点,刚上研究生的时候,感觉有点神奇.而且一上来导师就给我发了一篇基于格林坐标的自由变形的相关paper,让我看,外文文献,看了n多天,第一次看外文文献,啥也没看懂 ...

  9. 三角网格模型及基于RBF隐曲面方程求解的曲面重建

    资料来源:径向基函数和神经网络技术在逆向工程中的应用研究(博士论文:王宏涛) RBF神经网络模型 RBF神经网络起源于数值分析中多变量插值的RBF方法,1988年Broomhead等人首先将该算法应用 ...

最新文章

  1. 比较分析 Spring AOP 和 AspectJ 之间的差别
  2. 联想激发青年公益创业彰显“责任”意识
  3. mfc 消息消息队列概念_必看入门秘籍——解密原理:消息中间件之RabbitMQ
  4. 7-28 超市贴花 (5 分)
  5. c#中计算三角形面积公式_看着有点迷的三角形面积计算
  6. Ubuntu 16.04 安装 Matlab2016a
  7. C语言中fgetc函数返回值为什么是int?
  8. 关于CCSpriteSheet报错问题
  9. 自学python好找工作么-学Python可靠吗?好找工作吗?
  10. 覆盖php扩展后服务挂了,PHP 扩展管理
  11. php常用数组,php常用数组函数
  12. java JsonNode 遍历方式
  13. js判断ie 火狐 还是chrome浏览器
  14. 免费视频压缩软件实现压缩视频不损画质的技巧
  15. 信息学奥赛c++ 初学保姆级教程
  16. 学习笔记 Tianmao 篇 recyclerView 辅助的RecycleAdapterImpl类(适配Sliderview)
  17. %1 不是有效的 Win32 应用程序。
  18. 程序员成长之旅——进程间通信(IPC)
  19. html 中数字换行,CSS实现连续数字和英文的自动换行的方法
  20. mx450属于什么档次的显卡

热门文章

  1. 管理经济学 知识点总结 (二)
  2. OTG(usb2.0)强制Host调试全记录
  3. 数字图像去噪典型算法及matlab实现
  4. 送书 | 一位60后老程序员从零学习Python的感悟
  5. 跨平台C++框架Qt教程:如何编写地图综合应用-点聚合|附源码
  6. 关于谱图理论-图傅里叶变换-谱卷积等谱图领域知识的理解
  7. ie html5 支持相机,HTML5IE浏览器兼容问题以及图像元素
  8. 10.30纪中DAY2_小麦亩产一千八(kela) 休息(rest) 军训(training)
  9. cam含义计算机系统,CAM的含义是什么
  10. linux中文麻酱字_在家自制芝麻酱、芝麻香油,味道纯正无添加,原来做法这么简单...