当前位置: 首页 > 知识库问答 >
问题:

前端 - 【three.js】如何解决整栋楼模型的闪烁?

西门梓
2023-08-25

其实我也知道模型的闪烁就是【两个或者多个Mesh面重合,导致渲染的时候GPU分不清谁在前谁在后】,网上也是一大堆的方法,例如:

// WebGL渲染器设置const renderer = new THREE.WebGLRenderer({    // 设置对数深度缓冲区,优化深度冲突问题    logarithmicDepthBuffer: true});

或者是 两个mesh面的距离拉开

mesh1.position.z = 0;mesh2.position.z = 1;

甚至是设置相机的near和far。

第一种和第三种方法我都试过了,但是第二种无从下手。
因为我是渲染一整栋楼的模型,我如何知道是哪两个mesh面重合了,以及把它们一个个单拎出来设置position.z呢?
还是说让建模师在建模的时候就要刻意分离两个面的距离?

共有1个答案

韦原
2023-08-25

建模不能有重叠面,优化一下建模

const material = new THREE.MeshStandardMaterial({    color: 0xffffff,    polygonOffset: true,    polygonOffsetFactor: 1,  // 正值将面向前推    polygonOffsetUnits: 1});
 类似资料:
  • threejs的使用过程中,我发现会透光,在一些角度会穿过模型,有些时候不会穿过模型,是怎么回事 threejs的使用过程中,我发现会透光,在一些角度会穿过模型,有些时候不会穿过模型,是怎么回事,希望各位大佬帮忙解决,感谢

  • 问题描述: 如下图所示,就是模型拉远后,场景的背景颜色会逐渐侵蚀到模型,现在我截图的这个距离就看不到一半的模型了。 这个是什么问题?如何解决?

  • 问题描述: 我使用three.js来渲染模型,然后我是打算实现分层渲染的效果,所以模型按照层数给到了我,所以就是多个模型一起渲染。 可以看到下面的图片,是有很多模型数据的。我是使用new THREE.Object3D() 或者 new THREE.Group() 来集合这些模型的,然后scene.add(floorGroup)。scene里面的确也是有这些模型数据的存在。 但是实际渲染的时候却只有

  • 我有一个使用reactstrap的react应用程序(bootstrap4)。我使用react-router为导航创建了一个简单的布局。我不明白为什么当你点击一个navbar项目时会闪现。我使用的是react-router-dom中的内置NavLink,它保持选中的NavItem高亮显示。 这里是网站的链接 标题组件 CSS

  • 请问,在cesium中,导入外部glb模型后,如何通过鼠标控制模型的动作。 比如:导入车辆glb模型后,控制车门的打开关闭、后备箱的打开关闭、车窗的升降? 是必须使用three.js或Babylon.js么?

  • 在本机安装了,nvm 它管理node 担现在突然没有了vue的环境 这图是 用户变量