美文网首页
2024-11-19 three 模型闪烁

2024-11-19 three 模型闪烁

作者: 忙于未来的民工 | 来源:发表于2024-11-18 14:54 被阅读0次

深度缓冲区

在three中,使用深度缓冲区(z-buffer)实现场景的可见性计算,大概就是一个二维数组,每个元素存放的是一个像素点。而每个元素也就是像素点可以使用不同的数据类型来存储,数据类型的精度越高,产生深度冲突的可能性就越低。
默认情况下,Three.js可能使用16-bit或24-bit深度缓冲。
如果要渲染的大深度范围的场景,可以将webgl中的LogarithmicDepthBuffer属性设置为true,这是一个特殊的深度缓冲扩展,使用更高的精度来缓冲像素。

闪烁产生原因

在深度缓冲区中当两个模型的同一个像素点的渲染结果对应到一个相同的位深时,渲染器就不知道用哪个了,这个时候就会出现闪烁。

解决办法

1:提高缓冲区 精度,LogarithmicDepthBuffer设为true
2:将模型之间的距离调大一点
3:手动设置渲染顺序,three的object3d基类有一个renderorder属性,可以手动设置渲染的顺序
4:设置多边形偏移,当两个面深度相同时,设置了偏移的面会自动向前或者向后便宜一点,three的material类有三个属性用于设置多边形偏移

  • polygonOffset 是否开启多边形偏移
  • polygonOffsetFactor 多边形偏移因子
  • polygonOffsetUnits 多边形偏移单位

参考:https://www.cnblogs.com/lst619247/p/9098845.html

相关文章

  • Three.js模型隐藏或显示

    Three.js模型隐藏或显示 个人技术博客 你在使用Three.js开发项目的过程中,可能需要隐藏一个模型,或者...

  • three复用模型

    1. clone() 加载模型的时候,如果想让一个模型成百上千的出现,我们可以使用这个方法完成,代码如下: 这个方...

  • three.js

    三大组建:THREE.Scene() 场景 不需要参数scene.add(模型) /场景添加模型

  • Three.js模型标签

    Three.js模型标签 在很多的实际的项目中,你可能需要给一个Three.js的模型添加标签,标签可以通过一个包...

  • Three.js 导入 MMD 模型

    项目信息 版本: "three": "^0.147.0"模型来源:https://www.aplaybox.co...

  • 15three.js加载obj模型

    three.js加载obj模型 varscene =newTHREE.Scene(); varloader =ne...

  • MTLLoader 报 Handlers.get() has b

    使用Three.js加载外部模型(OBJ,JSON...等格式的模型文件)。 上代码: yarn add thre...

  • Three.js跨域问题(无法预览)

    Three.js跨域问题 通过Three.js加载obj、FBX等格式外部模型文件的时候是ajax异步加载数据的过...

  • Unity 模型出现 条纹,闪烁的原因

    闪烁 一般是因为两个面距离太近,重合,会导致模型闪烁 解决办法 : 避免模型共面 条纹 一般是因为,这个模型即产...

  • 将不同格式的3d模型导入three.js

    three.js除了可以自己绘画3d模型以外,当然也是可以自己导入3d模型。官方提供了许多例子,多且难寻。于是体贴...

网友评论

      本文标题:2024-11-19 three 模型闪烁

      本文链接:https://www.haomeiwen.com/subject/ftdmjjtx.html