0

在我的应用程序中,我遇到了 z 缓冲区的问题。我有一个 ParticleSystem,其中的点具有看起来像球体的纹理。但是有两个问题我不能同时解决......

球体要么在 z 缓冲区中正确排序但不透明,要么它们是透明但未正确排序!

请看看我的JSfiddle。(基于mrdoob的这个例子)

在原始示例中,一切看起来都很好。但正如你在我的小提琴中看到的那样,纹理不是透明的,所以隐藏了它后面的部分粒子。我只从 更改GeometryBufferGeometry,因为在我的应用程序中我必须使用它来避免性能问题。您可以通过更改我在小提琴中的评论在这两者之间切换。通过在 和 之间切换GeometryBufferGeometry您可以看到 z 缓冲区正在中断。

在互联网的某个地方,我发现了这个“解决方案”:

depthWrite : false

我添加到材料中。然后粒子看起来不错,但 z 缓冲区不正确。这让我发疯......无论如何我发现我的几何类型是问题所在。

那么,为什么 mrdoob 的示例不适用BufferGeometry呢?我该怎么做才能在我的系统中获得正确排序和透明的粒子?

4

1 回答 1

0

你很困惑。纹理是透明的,切换到BufferGeometry.

发生的情况是,使用BufferGeometry时,粒子不会按排序顺序渲染——它们按照您在缓冲区中指定的顺序渲染。

如果你想使用BufferGeometry,你可以设置

material.alphaTest = 0.5.

然后,在你的情况下,事情应该看起来不错。

三.js r.60

于 2013-09-08T23:50:14.167 回答