我在 webgl 上下文中有两个透明的重叠球体。在重叠期间,我想控制球体的绘制方式。您可以在此页面上看到我的问题:
http://andrewray.me/stuff/circle-clip.html
当红色和蓝色球体重叠时,我希望蓝色球体隐藏在红色球体后面。
如果我只是更改将球体添加到场景中的顺序(如果我先添加大球体),我会得到所需的行为: http ://andrewray.me/stuff/circle-clip-correct.html
但是,在我的项目中情况有所不同。即使我先添加了大球体,我也看到了交叉点。
我得到的最接近的是将较小的球体移近相机。在这个例子中,我将较小的球体移近了 10 个单位:http : //andrewray.me/stuff/b-test/
但是,如果你用方向键四处走动,你会看到交叉路口时不时地闪烁,有时会粗鲁地保持可见(尤其是从侧面冒出的气泡)
我已经尝试depwthWrite: false
在这两种材料上进行设置,但这没有任何效果。
我有点搞砸了,renderer.sortObjects = false
但我认为这消除了我希望与场景的其余部分一起出现的“自然”绘制顺序。正是这些领域我有问题。
- 我可以在 webgl/three.js 中强制透明对象的绘制顺序吗?即使将较小的球体移近 10 个单位,它们也似乎在进行 z-fighting
- 或者有什么方法可以强制重叠透明对象的行为?