当前位置: 首页 > ds >正文

three.js+WebGL踩坑经验合集(8.3):合理设置camera.near和camera.far缓解实际场景中的z-fighting叠面问题

本篇延续上篇内容:

three.js+WebGL踩坑经验合集(8.2):z-fighting叠面问题和camera.near的坑爹关系-CSDN博客

笔者也是狠佩服自己:一个还没划上句号的文章都能拖了半年才继续写。这次也是运气好,工作上再次遇到叠面问题,可以借这机会继续深入研究。

在重新进入状态之前,笔者先不给大家深入探讨帮助文档说得让人一知半解的,polygonOffset的两个系数m和r的工作原理,而是先承接上篇内容,把camera.far也简单说一说。

上篇我们重点讨论了near以及far/near这两个指标在处理z-figting问题上的重要性,至于far是还没有单独揪出来说。

实际上,这玩意儿也不用太纠结,我们继续沿用上一篇的曲线图进行直观的演示。

因为图像不是直线,所以叠面问题的严重程度不仅仅取决于far和near,还要看我们的应用场景处于曲线的哪个区间,越是陡峭的区间,z深度拉得越开,叠面问题越少。所以笔者在上述演示的基础上完善了下,每200像素绘制一条竖直线,观察在near和far调整的过程中,曲线跟这些竖直线的交点处的斜率变化。

注意:本文说的错开,是看白色曲线的斜率,而非每根紫色线的距离

不难看出,在这个案例中,near越大或者far越大,5个面的z都错得越开。实际上,大多数的业务场景都有这个规律,但至于near和far具体设置多少,这还得看场景物体的具体坐标。这里说的坐标,指的是物体的世界坐标跟camara.matrixWorldInverse相乘后的结果。

由此可见,near和far都尽可能调大,对叠面问题的缓解会有非常大的帮助,结合上一篇文章,我们来小结一下:

1 透视相机下缓解叠面问题的方案,首先要让far/near尽可能大

2 在far/near足够大的情况下,far和near同时调大,能非常有效地缓解叠面问题

3 我们应该根据业务场景来确定项目中最终的near和far值,一是确保物体不被裁切,二是尽可能让物体落在z深度错开程度比较高的区间内,可以用跟笔者类似的方法调出一个满意的结果

4 正交相机无视这些问题

笔者这几天对polygonOffset再次做了深入的研究,api给出的offset计算公式

m*polygonOffsetFactor+r*polygonOffsetUnits

中的r笔者已经搞明白了是啥,下篇会给大家分享,而m值,目前还没搞透,但也有点眉目了,所以下篇先来聊聊r这个系数到底是个什么玩意儿,敬请期待!

http://www.xdnf.cn/news/18898.html

相关文章:

  • 如何在IDEA中使用Git
  • MyBatis-Plus 快速入门 -常用注解
  • 使用阿里云实现短信注册
  • SAVITECH盛微先进SAVIAUDIO音频解码芯片方案与应用
  • ValueTask 实战指南:解锁 .NET 异步编程的性能秘密
  • window显示驱动开发—混合系统 DDI 和 dList DLL 支持
  • 【P2P】P2P主要技术及RELAY服务实现
  • mac设置鼠标滚轮方向
  • 让清洁更智能,让城市更美好
  • 20、DMA----释放CPU压力,加快传输
  • 无人机航拍数据集|第30期 无人机腰果成熟度目标检测YOLO数据集3098张yolov11/yolov8/yolov5可训练
  • Day8--HOT100--160. 相交链表,206. 反转链表,234. 回文链表,876. 链表的中间结点
  • 艾利特石油管道巡检机器人:工业安全的智能守护者
  • 高通平台wifi--p2p issue
  • leetcode 17.04 消失的数字
  • 理解Vuex的辅助函数,分析mapState、mapGetters、mapMutations和mapActions各个应用场景
  • SQL 语句拼接在 C 语言中的实现与安全性分析
  • 大模型应用实战:构建企业知识库 RAG 系统(含权限控制 + 多轮对话)
  • 无线USB转换器TOS-WLink网盘更新--TOS-WLink使用帮助V1.0.pdf
  • 【C++游记】List的使用和模拟实现
  • 矩阵系统源代码开发,支持OEM贴牌
  • 5G与6G技术演进与创新对比分析
  • 我们为你连接网络,安装驱动程序
  • 车载诊断架构 --- DTC Event与DTC Status的对应关系
  • AWS ECS 成本优化完整指南:从分析到实施的最佳实践
  • CVPR 2025端到端自动驾驶新进展:截断扩散模型+历史轨迹预测实现精准规划
  • Frida 加密解密算法实现与应用指南
  • 【Linux】协议的本质
  • 基于深度学习的翻拍照片去摩尔纹在线系统设计与实现
  • Java基础第4天总结(继承)