Javascript ThreeJS PointMaterial纹理透明背景问题

Javascript ThreeJS PointMaterial纹理透明背景问题,javascript,three.js,Javascript,Three.js,我有一组由三个点组成的粒子,我使用三个点材质和纹理。纹理是用画布制作的笔划矩形,它可以工作,但只是部分工作,这就是问题所在 在这里,您可以看到我的粒子发生了什么: 如您所见,粒子的透明度仅适用于某些粒子,而不适用于其他粒子 这里会发生什么 这是我用来创建材质的代码: var material = new THREE.PointsMaterial( { size: this.particleSize, vertexColors: THREE.VertexColors, map: ct

我有一组由三个点组成的粒子,我使用三个点材质和纹理。纹理是用画布制作的笔划矩形,它可以工作,但只是部分工作,这就是问题所在

在这里,您可以看到我的粒子发生了什么:

如您所见,粒子的透明度仅适用于某些粒子,而不适用于其他粒子

这里会发生什么

这是我用来创建材质的代码:

var material = new THREE.PointsMaterial( {
  size: this.particleSize,
  vertexColors: THREE.VertexColors,
  map: ct.getTexture(),
  transparent: true,
  fog: false } );

问题的原因是粒子没有按深度排序,并且没有按从后到前的顺序渲染

解决办法是增加

material.alphaTest = 0.5;
然后,透明片段将被丢弃


three.js r.73

谢谢韦斯特兰利。!我应用了这个解决方案,效果很好!。但为了确保我理解我所做的,这个alphaTest属性作为一个阈值,将使用的纹理中alpha值大于.5(在本例中)的每个像素设置为透明,将值小于.5的像素设置为不透明像素??非常感谢。对于小于0.5的alpha值,将丢弃片段。特别是,深度缓冲区不会写入。