Three.js 并非所有粒子都是透明的(单个材质)
我的粒子并非全部渲染为透明。在下图中,您可以看到一些图像被背景色框包围(在它们后面剪辑图像),而其他图像则不是(不要在它们后面剪辑图像) 这是我正在使用的PNG文件: 我加载图像并创建如下材质:Three.js 并非所有粒子都是透明的(单个材质),three.js,Three.js,我的粒子并非全部渲染为透明。在下图中,您可以看到一些图像被背景色框包围(在它们后面剪辑图像),而其他图像则不是(不要在它们后面剪辑图像) 这是我正在使用的PNG文件: 我加载图像并创建如下材质: cimage = THREE.ImageUtils.loadTexture( '/models/candy/c1.png' ) cmat = new THREE.ParticleSystemMaterial size: 100 map: cimage
cimage = THREE.ImageUtils.loadTexture( '/models/candy/c1.png' )
cmat = new THREE.ParticleSystemMaterial
size: 100
map: cimage
transparent: true
为什么粒子不是全部透明的
我发现了这一点,但没有一个解决方案是我真正想要的:
- depthWrite/depthTest=false:我希望粒子影响深度,它们应该正确重叠
- sortParticles=true:仅当存在一个粒子系统时有效,其他粒子系统的方块仍然显示
- alphaTest=0.5:这是最接近的,但图像的边框不是不干净,就是仍然有背景色
particlesystem.sortParticles = true
如果同时查看多个particleSystem,则有3个选项:
- 使用alphaTest属性,因为这样会丢弃定义了alpha小于1的片段
- 您可以将两个粒子系统合并,并为其提供另一个着色器材质。这样就可以将它们再次作为一个整体进行排序
- 最后一个选项是在webglrenderer中编写自己的postplugin。(这很难)