图形学算法-网格细分

一、网格细分的作用

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

二、网格细分的原理

1、简单的细分

直接在三个边界,产生三个顶点(边界的中点),每个面片分割成四个面片,这种做法易于理解,但缺点也是很明显,就是相邻三角形之间不光滑过度,比如正方形的两个边界位置,不管细分多少次都依然是边界棱角,当然如果你故意想保留边界特征可以这么操作

2、loop 细分

loop 细分在简单细分的基础上,增加了光滑过渡的因子,即在每个顶点添加一个权重约束,让相邻三角面片之间有连续性的效果,本质上是连续模型的线性插值效果。
更新顶点位置的条件如下:
1、边界网格顶点:
设边界顶点v0的两个相邻边界点分别为v1、v2,更新后顶点位置为:

2、内部网格顶点:
设内部顶点v0,相邻顶点为v1…vn,更新后位置为:

其中

3、边界的边点:
边界两端的点为v0,v1,更新点为:

4、内部边的点:
边的两点为v1、v2,边的对边两个顶点为v0、v3,更新后为:

三、代码实现及效果

1、直接细分:

2、loop细分:
更新网格顶点

更新边界上的点

保存面片

在这里插入图片描述

在这里插入图片描述

四、结论:

从效果可以看出,不断细化的同时,网格逐渐收缩,无限循环下去将会收缩成一点,这个和拉普拉斯光顺时有类似的效果

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值