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值,将丢弃片段。特别是,深度缓冲区不会写入。