OpenGL开启Gouraud明暗处理,减少马赫夫效应

在我们建立三维模型的过程中,当用多边形网格或者是三角面片来近似的表示曲面的表面时,曲面被离散成许多的平面多边形,如果我们的网格较大,离散度较粗,在模型表面使用明暗处理后,两两相邻的多边形会出现凸起或者是凹陷的折痕,在连接处显得比周围处亮或者暗,这就是所谓的马赫夫效应,如下图所示

针对于出现的马赫夫效应,我们需要进行明暗处理,消除或者是减少三维模型的马赫夫效应,使其看上去更加的光滑美观,常用的明暗处理技术有双线性光强插值—Gouraud明暗处理技术和双线性法向插值-Phong明暗处理技术。以下展示经过明暗处理前后结果对比

 

 

OpenGL提供了两种着色模式void glShadeModel ( GLenum mode),恒定着色GL_FLAT,光滑着色GL_SMOOTH,而GL_SMOOTH中则是使用了Gouraud明暗处理技术,对于Phong明暗处理技术可以参见http://blog.csdn.net/dalewzm/article/details/46291397

http://blog.csdn.net/silangquan/article/details/10011169

 

Gouraud明暗处理算法在处理亮度的不连续性方面很有效,但是在明暗强度函数的斜率急剧变化处仍然可以看到马赫夫效应,不能完全消除光强度的不连续性。而Phong明暗处理是对表面的法向量而不是亮度进行插值,大大改善了Gouraud模型对高亮度镜面反射光的处理,在每一点都是用法向量的一个近似值,所以一般法向量插值的结果要优于亮度插值,在很大程度上消除了马赫夫效应,但是会大大增加明暗处理的时间。

 

鉴于此,我在用MC算法建立三维模型的时候,由于我的网格设置较大,导致出现了马赫夫效应,即模型表面的可视化效果不光滑,如下:

 

 

于是使用OpenGL自带的Gouraud明暗处理技术,以一个MC算法生成的章鱼模型为例子,效果如下

相比未使用明暗处理的模型,使用了Gouraud处理的模型从可视化的角度上来看更加的光滑,效果更好。

如果您觉得这篇博文有用,请访问我的个人站:http://www.stubbornhuang.com,更多博文干货等着您。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HW140701

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值