在three.js中,什么时候需要启用PointCloud.sortParticles?

3

我发现一些示例启用了这个属性,但是没有足够的评论让我理解它的重要性。 你能告诉我这个属性的最佳实践是什么吗?

1个回答

8

编辑:现在PointCloud已更名为Points.sortParticles属性已被移除。这意味着点将按照它们在缓冲区中的存在顺序进行渲染。下面的答案已过时。three.js r.73


如果你正在使用three.js,了解至少基本的WebGL概念是非常重要的,这是一个很好的例子。(参见此SO文章

如果渲染顺序很重要,你需要设置PointCloud.sortParticles = true

以下是一个渲染顺序很重要的示例:

var material = new THREE.PointCloudMaterial( {
    map: texture, // has transparent areas
    transparent: true
} );

var pointCloud = new THREE.PointCloud( geometry, material );
pointCloud.sortParticles = true; // the default is false

在这种情况下,渲染器将按深度对点进行排序,因此距离摄像机更远的点将首先被渲染,并显示出较近点的透明区域。
以下是一个渲染顺序无关紧要的示例:
var material = new THREE.PointCloudMaterial( {
    map: texture,
    blending: THREE.AdditiveBlending,
    depthTest: false,
    transparent: true
} );

// point cloud
var pointCloud = new THREE.PointCloud( geometry, material );

由于排序发生在CPU端,因此最好明智地选择您的材料设置,以避免开销 - 尤其是对于大型系统。

我建议您建立一个测试平台并进行实验。有很多可能要考虑的情况。

three.js r.69


谢谢!深度排序的概念真的帮了我很多。 - Yad Smood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接