Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js-在r70+中向后渲染精灵深度;_Javascript_Three.js - Fatal编程技术网

Javascript Three.js-在r70+中向后渲染精灵深度;

Javascript Three.js-在r70+中向后渲染精灵深度;,javascript,three.js,Javascript,Three.js,它看起来像是与r70+关于精灵的z深度有什么不同 这是一个与r69完美配合的系统 除了使用r71之外,这里是相同的。 您可以看到,现在当场景旋转时,精灵的深度并不总是正确显示。有一半的时间它们以错误的z深度旋转到视图中 这是一个bug,还是我需要补充一些我遗漏的新东西 我已经尝试了下面所有常见命令的变体,但似乎没有什么能像以前那样有效 var shaderMaterial = new THREE.ShaderMaterial({ ... depthTest: fals

它看起来像是与r70+关于精灵的z深度有什么不同

这是一个与r69完美配合的系统

除了使用r71之外,这里是相同的。 您可以看到,现在当场景旋转时,精灵的深度并不总是正确显示。有一半的时间它们以错误的z深度旋转到视图中

这是一个bug,还是我需要补充一些我遗漏的新东西

我已经尝试了下面所有常见命令的变体,但似乎没有什么能像以前那样有效

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外,还显示了破碎的行为。对于透明的示例,现在有必要自己对粒子进行排序,因为引擎不再对它们进行排序。我用这些信息更新了我的答案。