three.js - 不透明对象上的 Three.js 透明度伪影
问题描述
您好,我对three.js 有疑问。我在我的场景中导入了一个不透明的“大”glb 模型,但如果模型在相机视图中被自身覆盖,则前景变得透明。(正如你在图片上看到的,背景山在前景)
我尝试了一些解决方案,例如:
- 在 glb 材料上的 depthTest 为 false
- 排序顺序为假
- 使用对数深度缓冲区
- 将材质透明更改为假
- 将 alphaTest 从 0 更改为 1 0.1 步
但没有任何效果。如果有人有解决方案:)
谢谢 !
解决方案
无法完全正确地渲染透明对象。您首先需要渲染任何不透明的对象,然后从后到前渲染透明表面,以便任何新的表面混合在它后面的东西之上。在许多情况下,这是无法做到的,尤其是在渲染可能重叠的透明对象时。
解决这个问题需要将有问题的对象(甚至是单个三角形)切割成更小的部分,以便保留顺序,而这通常几乎是不可能的。由于您使用的是 Three.js,因此请查看是否可以更改您的设计以使这不是问题,或者不正确的渲染顺序的工件不会太明显。
推荐阅读
- c - 在 Dev-C++ 中,为什么我导入了项目所需的文件却无法编译我的项目?
- java - Java:从作为参数传递的接口创建匿名类
- php - 如何在 Macbook 上安装 Freetype 扩展
- javascript - 使用 Webpack 的条件需要/导入
- anylogic - 创建具有不同颜色的 ID 的不同类型的托盘,并使用源块插入它们
- intellij-idea - 使用 IntelliJ 时捕获所有日志
- python - 如何在预装的 3.8.2 旁边安装 python 3.6.10
- android - 未找到挂钩“after_prepare”的脚本。在离子科尔多瓦运行android
- css - 如何仅在一个跨度上启用文本选择?
- arrays - System.NullReferenceException 但代码之前有效