计算机图形学第八天

Loop Subdivision(三角形细分)(一个叫loop的人实现的)

Loop Subdivision主要是针对三角形(只局限于三角形) 让平面上的三角形细分成更小的三角形 从而使平面更加细致
在这里插入图片描述
为了让整个物体从左图变成右边更圆滑的图 需要新增细化三角形 并且改变新老顶点的位置

如何新增顶点

白色新顶点的位置更新如图所示
在这里插入图片描述
虚线处的顶点为新顶点 黑色的点为老顶点 一般是在每两个点中间新增一个新顶点 而新顶点的位置会根据老顶点的位置更新

如何跟新老顶点位置

在这里插入图片描述
n是老顶点的度:顶点连接边的数量
如图中白色定点为老顶点 他在细化的时候需要根据和他有关的其他点的位置发生变化 图中白色的老顶点就需要更具其他六个u点更新位置信息
老的顶点不受新顶点的影响 老顶点的变化他一部分相信自己的位置 一部分相信他周围老顶点的位置
(但是貌似。。。我感觉并不是老师说的这个老顶点的变化和度的多少有关(老师说的如果和该老顶点有关的顶点多 他就更相信其他的顶点一些 如果少就更相信自己一些) 从图中式子来看 感觉都是相信自己5/8。。可能没看懂u是多少)

Catmull-Clark Subdivision(网格细分)

网格细分不再局限于三角形了
在这里插入图片描述

在这里插入图片描述
奇异点:度不为4的点
在这里插入图片描述

如何新增顶点

在每个老顶点的中间新增一个点 并且在每一个面中间新增一个点
在图中我们能看到原来的奇异点还是奇异点没变 但是在非四边形的内部新增了一个奇异点 并且所有的非四边形都变成四边形面了 所以我们得出:在细分之后 老的奇异点不会消失 并且在每一个非四边形内部会多一个奇异点 此时非四边形面也会被细分成四边形面(以后奇异点数量就不会再增加了(也就是没有非四边形面了))

如何更新顶点位置

在这里插入图片描述

边坍缩(简化模型)

在这里插入图片描述
看起来就像拿住边两边的那个点 一捏 就是右边的图了

如何坍缩一条边

如果我们把想要坍缩的点做一个平均 就会像左图一样 明显不是我们要的效果
所以我们使用右图中的二次度量误差
在这里插入图片描述

什么是二次度量误差

二次误差度量:求一个点到他要度量的那几个点的距离的平方和达到最小(如上图的右边那个)

我们该选择哪条边进行坍缩

我们肯定选择二次度量误差最小的边进行坍缩 所以我们对每一条边都进行二次度量误差 把这个度量误差当作这条边的分数(权值)然后选取分数最低的进行坍缩 但是我们会发现我们坍缩了一条边之后 会影响到其他与坍缩的边相关的边的度量误差值 所以我们需要一个数据结构能取出最小的那个值 然后更新部分与这个值相关的值 所以
当我们选择坍缩时:使用优先队列或者堆存储每条边的二次度量误差 然后选取取出最小的值进行坍缩 再更新与之相关的其他边的二次度量误差值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值