参考:OpenGL教程:深度测试

深度冲突

一个很常见的视觉错误会在两个平面或者三角形非常紧密地平行排列在一起时会发生,深度缓冲没有足够的精度来决定两个形状哪个在前面。结果就是这两个形状不断地在切换前后顺序,这会导致很奇怪的花纹。这个现象叫做深度冲突(Z-fighting),因为它看起来像是这两个形状在争夺(Fight)谁该处于顶端。

防止深度冲突

第一个也是最重要的技巧是永远不要把多个物体摆得太靠近,以至于它们的一些三角形会重叠。通过在两个物体之间设置一个用户无法注意到的偏移值,你可以完全避免这两个物体之间的深度冲突。在箱子和地板的例子中,我们可以将箱子沿着正y轴稍微移动一点。箱子位置的这点微小改变将不太可能被注意到,但它能够完全减少深度冲突的发生。然而,这需要对每个物体都手动调整,并且需要进行彻底的测试来保证场景中没有物体会产生深度冲突。

第二个技巧是尽可能将近平面设置远一些。在前面我们提到了精度在靠近近平面时是非常高的,所以如果我们将近平面远离观察者,我们将会对整个平截头体有着更大的精度。然而,将近平面设置太远将会导致近处的物体被裁剪掉,所以这通常需要实验和微调来决定最适合你的场景的近平面距离。

另外一个很好的技巧是牺牲一些性能,使用更高精度的深度缓冲。大部分深度缓冲的精度都是24位的,但现在大部分的显卡都支持32位的深度缓冲,这将会极大地提高精度。所以,牺牲掉一些性能,你就能获得更高精度的深度测试,减少深度冲突。

我们上面讨论的三个技术是最普遍也是很容易实现的抗深度冲突技术了。还有一些更复杂的技术,但它们依然不能完全消除深度冲突。深度冲突是一个常见的问题,但如果你组合使用了上面列举出来的技术,你可能不会再需要处理深度冲突了。

其次在THREEjs中,当使用非默认的颜色缓冲区时,注意颜色缓冲区的深度纹理.format是否正确,另外.type是否有足够高的精度。

如何解决深度冲突(Z-fighting),画面闪烁的问题相关推荐

  1. webgl中解决深度冲突-多边形偏移

    1.webgl中解决深度冲突-多边形偏移 1.什么是深度冲突? 就是当几何图形或者物体的两个表面极为接近时,就会使得表面看上去斑斑点点,这种现象就是 深度冲突. 看看这个缓冲区渲染出的效果 缓冲区数据 ...

  2. openGL深度冲突z-fighting

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一.为什么会产生z-fighting 二.防止深度冲突 1.第一种方法 2.第二种方法 3.第三种方法 参考 前言 针对z-figh ...

  3. 游戏美术设计干货分享:制造“冲突”,提高画面张力

    游戏美术设计干货分享:制造"冲突",提高画面张力 http://www.gameres.com/475470.html 发布者: 小篱 | 发布时间: 2015-12-9 14:1 ...

  4. 回溯法解决部落冲突问题

    回溯法解决部落冲突问题 实验内容 问题描述 思路分析 方法步骤 实验代码 实验内容 原始部落byteland中的居民为了争抢有限的资源,经常发生冲突.几乎每个居民都有它的仇敌.部落酋长为了组织一支保卫 ...

  5. 3dmax常用操作快捷键复合操作法及解决快捷键冲突2021

    3dmax建模的过程中快捷键的掌握对效率的提高非常必要.这里根据其重要程度来归纳如下.不过要特别提醒,快捷键每个软件都有,如果你的快捷键不灵,那说明有其他的软件占用了该快捷键. 解决快捷键冲突 解决的 ...

  6. OpenGL.ES在Android上的简单实践:23-水印录制(FBO离屏渲染,解决透明冲突,画中画)

    OpenGL.ES在Android上的简单实践:23-水印录制(FBO离屏录制,解决透明冲突) 1.水印签名罢工了? 不知道大家有没注意到,之前我们使用MediaCodec录制的视频,水印签名那部分区 ...

  7. flicker(画面闪烁)现象产生的原因

    flicker(画面闪烁)现象产生的原因 目录 flicker(画面闪烁)现象产生的原因 1.产生原因 2.解决办法:曝光时间设置成1/100s的整倍数 1.产生原因 传感器Sensor在室内日光灯下 ...

  8. Gradle 使用技巧(四) - 如何定位和解决依赖冲突

    1. 前言 随着业务的复杂度加深,我们免不了要引入许多的第三方开源库,也不可避免的会出现依赖冲突的错误.最常见的是V7.V4包之间的冲突. 2. 如何定位依赖冲突 解决依赖冲突很简单,难得是如何去定位 ...

  9. 解决vue初始化数据时的闪烁问题

    解决vue初始化数据时的闪烁问题 参考文章: (1)解决vue初始化数据时的闪烁问题 (2)https://www.cnblogs.com/xxySsm/p/11971608.html 备忘一下.

最新文章

  1. android源代码 abi,Android内核源码Abi目录学习笔记
  2. 一篇文读懂分布式系统本质:高吞吐、高可用、可扩展
  3. [九省联考2018]IIIDX
  4. 矩阵在计算机程序中的应用
  5. android键盘弹出头部上移处理
  6. Android 缓存目录 Context.getExternalFilesDir()和Context.getExternalCacheDir()方法
  7. 牛客练习赛 58——树链剖分
  8. Simulink之交流调压电路
  9. Android 渗透测试学习手册 第六章 玩转 SQLite
  10. python处理excel表格-如何用python处理excel表格
  11. 2021全国化妆品产业区域研究报告
  12. 计算机高特效吃鸡游戏主机配置单,畅玩主流游戏吃鸡LOL组装电脑配置清单
  13. 芝麻授权 java调用_手机浏览器怎么调用支付宝进行用户授权呢?
  14. 【创业感悟】企业生存法则
  15. 不积跬步无以至千里---工作收获
  16. 我所能做的,就是真实地记录 | 小别手记
  17. 【arduino】常用芯片ATMEGA328P-AU 32TQFP资料详解
  18. 硬盘 测试软件 临界值,怕文件丢失?你该如何检测硬盘寿命状态呢?
  19. 一种突发事件的时滞动力学模型 2019-nCoV与参数辨识
  20. android webview播放mp4,Android的webview不播放mp4视频在同一页

热门文章

  1. NetBIOS漏洞攻防
  2. 函数名前加::的缘由
  3. 中国移动联手多家通信巨头推行“绿色包装”
  4. 公众号运营新规则,插入任意小程序不再需要关联
  5. Hystrix熔断流程
  6. Python对PHP服务器hmac_sha1签名认证方法的匹配实现
  7. uni-app 点击小眼睛显示/隐藏密码
  8. tortoiseGIT 清除凭证
  9. Denny Zhang:一辈子做一个自由职业者
  10. 高级解决方案专家吴帆:元宇宙与智慧城市管理 l 华坤道威专访