Javascript Three.js-在r70+中向后渲染精灵深度;
它看起来像是与r70+关于精灵的z深度有什么不同 这是一个与r69完美配合的系统 除了使用r71之外,这里是相同的。 您可以看到,现在当场景旋转时,精灵的深度并不总是正确显示。有一半的时间它们以错误的z深度旋转到视图中 这是一个bug,还是我需要补充一些我遗漏的新东西 我已经尝试了下面所有常见命令的变体,但似乎没有什么能像以前那样有效Javascript Three.js-在r70+中向后渲染精灵深度;,javascript,three.js,Javascript,Three.js,它看起来像是与r70+关于精灵的z深度有什么不同 这是一个与r69完美配合的系统 除了使用r71之外,这里是相同的。 您可以看到,现在当场景旋转时,精灵的深度并不总是正确显示。有一半的时间它们以错误的z深度旋转到视图中 这是一个bug,还是我需要补充一些我遗漏的新东西 我已经尝试了下面所有常见命令的变体,但似乎没有什么能像以前那样有效 var shaderMaterial = new THREE.ShaderMaterial({ ... depthTest: fals
var shaderMaterial = new THREE.ShaderMaterial({
...
depthTest: false,
depthWrite: false,
transparent: true
});
particleSystem.sortParticles = true;
我知道新的renderDepth,但该解决方案似乎无关,也无法解释为什么它会破坏以前的行为。我们现在不需要为所有摄影机角度手动不断更新渲染图,是吗?
PointCloud。sortParticles
已在three.js r70中删除;看
在原始示例(无透明度)中,可以通过启用材质的深度测试来获得所需的行为:
var shaderMaterial = new THREE.ShaderMaterial({
...
depthTest: true
});
在更新的示例中(使用透明度),有必要自己在three.js r70中对粒子进行排序
请注意,three.js在渲染对象时仍处理z排序。这可能值得调查。谢谢@msmolens。不幸的是,如果启用了透明度,这将无法正常工作。我的原始JSFIDLE应该包含一个精灵纹理,这样我们就可以看到为什么它不能与透明度一起工作。查看此更新以了解为什么此修复程序不起作用,同时还允许使用透明png。如果在points_fragmentshader中添加alpha测试,例如:If(gl_FragColor.a<0.1){discard;}可以在没有透明度的情况下工作,但结果并不理想,那么它是否起作用。边缘都参差不齐。更糟糕的是你不能使用透明度。下面是一个关于r69中模糊纹理外观的示例。现在,这里是一个使用“gl_FragColor.a<0.1”技术与r71的示例。和原始的r69版本,除了使用r71外,还显示了破碎的行为。对于透明的示例,现在有必要自己对粒子进行排序,因为引擎不再对它们进行排序。我用这些信息更新了我的答案。