Three.js对非透明对象的透明伪像

问题描述 投票:0回答:1

Transparency artefact problem

你好,我对three.js有问题。我在场景中导入了一个“大” glb模型,如果该模型在相机视图中被自身覆盖,则前景变为透明。 (如您在图片上看到的,背景montain在前景上)

我尝试了一些解决方案,例如:

  • depthtest在glb材质上为false
  • sortOrder为false
  • 使用logarithmicDepthBuffer
  • 将材料透明更改为假
  • 将alphaTest从0更改为1,步长为0.1]

但是没有任何作用。如果有人有解决方案:)

谢谢!

three.js overlay transparent depth
1个回答
0
投票

无法完全正确地渲染透明对象。首先,您需要渲染所有非透明的对象,然后从后到前渲染透明的表面,以便所有新对象在其后面的内容上融合。在许多情况下,无法做到这一点,尤其是在渲染可能重叠的透明对象时。

解决此问题将涉及将有问题的对象(甚至是单个三角形)切成较小的碎片,以便保留顺序,这通常几乎是不可能的。由于您正在使用Three.js,因此请查看是否可以更改设计以免出现问题,或者渲染顺序不正确的工件不太明显。

© www.soinside.com 2019 - 2024. All rights reserved.