在three.js中,我们啥时候需要启用PointCloud.sortParticles?

Posted

技术标签:

【中文标题】在three.js中,我们啥时候需要启用PointCloud.sortParticles?【英文标题】:In three.js, when we need PointCloud.sortParticles enabled?在three.js中,我们什么时候需要启用PointCloud.sortParticles? 【发布时间】:2013-07-19 20:20:24 【问题描述】:

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

【问题讨论】:

【参考方案1】:

编辑:PointCloud 现在是 Points,并且 .sortParticles 属性已被删除。这意味着这些点按照它们在缓冲区中存在的顺序进行渲染。下面的答案已经过时了。三.js r.73


这是一个完美的例子,说明如果您使用 three.js,至少了解 webGL 的基本概念很重要。 (见this SO post。)

如果渲染顺序很重要,您需要设置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

【讨论】:

谢谢!深度排序的概念对我很有帮助。

以上是关于在three.js中,我们啥时候需要启用PointCloud.sortParticles?的主要内容,如果未能解决你的问题,请参考以下文章

Three.js将多边形线条(Line)转换成模型(Mesh)

three.js 粒子特效

Three.js 开发机房

在 Three.js 着色器上启用扩展

35three.js鼠标控制物体旋转缩放

图解 WebGL & Three.js 工作原理