并非所有颗粒都是透明的(单一材料)

时间:2013-12-31 05:38:25

标签: three.js

我的粒子并非全部渲染为透明。在下面的图像中,您可以看到一些图像被一盒背景颜色(其背后的剪辑图像)所包围,而其他图像却没有(不要在背后剪辑图像)。

enter image description here

这是我正在使用的PNG文件: enter image description here

我加载图像并创建如下材质:

    cimage = THREE.ImageUtils.loadTexture( '/models/candy/c1.png' )
    cmat = new THREE.ParticleSystemMaterial
        size: 100
        map: cimage
        transparent: true

为什么粒子不是全透明的?


我发现了这个related question,但没有一个解决方案真的是我想要的:

  • depthWrite / depthTest = false:我希望粒子影响深度,它们应该正确重叠。
  • sortParticles = true:仅当存在一个粒子系统时才有效,方块仍然出现在其他粒子系统中
  • alphaTest = 0.5:这是最接近的,但图像的边框要么不干净,要么仍然有背景颜色。

1 个答案:

答案 0 :(得分:1)

您需要对粒子系统进行排序以获得正确的透明级别。

particlesystem.sortParticles = true

当您有多个一起查看的粒子系统时,您有3个选项:

  • 使用alphaTest属性,因为这会丢弃具有少于定义的alpha的片段
  • 你可以做的是将两个粒子系统结合起来并给它另一个着色材料。这样就可以将它们再次整理为一个。
  • 最后一个选项是在webglrenderer中编写自己的postplugin。 (这很难)