Javascript 粒子系统中缓冲区几何体的Z缓冲区问题

Javascript 粒子系统中缓冲区几何体的Z缓冲区问题,javascript,three.js,particle-system,Javascript,Three.js,Particle System,在我的应用程序中,z缓冲区有问题。我有一个粒子系统,其中点的纹理看起来像球体。但是有两个问题我不能同时解决 要么球体在z缓冲区中正确排序但不透明,要么透明但排序不正确 请看一下我的表。(基于mrdoob) 在最初的示例中,一切看起来都很好。但正如你在我的小提琴中所看到的,纹理是不透明的,因此隐藏了部分粒子。我只将几何体更改为缓冲几何体,因为在我的应用程序中,我必须使用它来避免性能问题。您可以通过在小提琴中更改我的评论来在这两者之间切换。通过在Geometry和BufferGeometry之间切换

在我的应用程序中,z缓冲区有问题。我有一个粒子系统,其中点的纹理看起来像球体。但是有两个问题我不能同时解决

要么球体在z缓冲区中正确排序但不透明,要么透明但排序不正确

请看一下我的表。(基于mrdoob)

在最初的示例中,一切看起来都很好。但正如你在我的小提琴中所看到的,纹理是不透明的,因此隐藏了部分粒子。我只将
几何体
更改为
缓冲几何体
,因为在我的应用程序中,我必须使用它来避免性能问题。您可以通过在小提琴中更改我的评论来在这两者之间切换。通过在
Geometry
BufferGeometry
之间切换,可以看到z缓冲区正在断开

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

我把它添加到材料中。然后粒子看起来很棒,但z缓冲区不正确。 这让我快发疯了。。。无论如何,我发现我的几何类型是个问题


那么,为什么mrdoob的示例不适用于
BufferGeometry
?如何在我的系统中获得正确排序和透明的粒子?

您感到困惑。纹理是透明的,切换到
BufferGeometry
时保持透明

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

如果要使用
BufferGeometry
,可以设置

material.alphaTest = 0.5.
那么,在你的情况下,事情应该看起来很好


three.js r.60

谢谢!但现在纹理有了人工制品。你能解释一下
alphaTest
的作用吗?而这个技巧似乎只在透视相机中起作用。我有第二个,一个正交相机,在我的系统上可以鸟瞰,但是z缓冲区仍然是错误的。我还需要为这个相机做些什么吗?如果片段alpha小于
alphaTest
,则不会渲染片段。如果你还有其他问题,你必须写一篇新文章,并提供一个实例。说它“有工件”或缓冲区“错误”不是描述性的。我回答了你贴在这里的问题。
material.alphaTest = 0.5.