OpenGL开启Gouraud明暗处理,减少马赫夫效应
来源:互联网 发布:淘宝一元购骗局揭秘 编辑:程序博客网 时间:2024/04/29 11:02
在我们建立三维模型的过程中,当用多边形网格或者是三角面片来近似的表示曲面的表面时,曲面被离散成许多的平面多边形,如果我们的网格较大,离散度较粗,在模型表面使用明暗处理后,两两相邻的多边形会出现凸起或者是凹陷的折痕,在连接处显得比周围处亮或者暗,这就是所谓的马赫夫效应,如下图所示
针对于出现的马赫夫效应,我们需要进行明暗处理,消除或者是减少三维模型的马赫夫效应,使其看上去更加的光滑美观,常用的明暗处理技术有双线性光强插值—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处理的模型从可视化的角度上来看更加的光滑,效果更好。
- OpenGL开启Gouraud明暗处理,减少马赫夫效应
- OPENGL光照处理、明暗处理、光源(转)
- [OpenGL]计算机图形学:明暗处理的基本算法
- (191)明暗处理
- 【raviramamoorthi-Computer Graphics】OpenGL Shading: Gouraud and Phong
- 课堂笔记_ 明暗处理、视点变换
- 立方体明暗处理(即立方体隐面算法加上颜色)
- “融化奶酪效应”的处理
- 雪崩效应造成处理阻塞
- OpenCV2.4.12 开启 OpenGL
- 开启Spring注解减少XML配置
- D3D中一个明暗处理的问题(D3DSHADE_FLAT) (问题,希望DX解答)
- F1舒马赫退役
- SSAS中处理数据库压缩效应
- Gouraud着色,拉格朗日线性插值
- 战区漫步Gouraud渲染
- iOS 开启OpenGL错误调试
- wordpress优化第三招 开启gzip减少网页流量
- android studio打包方式
- MySQL主从复制搭建,基于日志(binlog)
- echarts 图表根据容器大小自适应
- 递归地推练习总结
- STL学习网站-- map 内存改变,迭代器失效,_Isnil(_Ptr)和红黑树
- OpenGL开启Gouraud明暗处理,减少马赫夫效应
- python建立二维数组问题
- java 使用动态代理 和ThreadLocal实现事务管理实例
- Spring学习-35:SSH框架整合之jar包的整理
- iOS 不支持多继承,实现多继承的4种方式
- 4.18-合并数组
- springmvc的执行流程详解
- iOS 10 Siri调用
- Java连接Redis碰到的坑connect timed out