Threejs - 你可以将 circleBufferGeometry 与 Points material 一起使用吗?

Threejs - can you use circleBufferGeometry with Points material?

我正在通过调整 threejs 中的 buffer geometry drawcalls example 在 threejs 中设置粒子系统。我想创建一系列点,但我希望它们是圆形的。

documentation for threejs points says it accepts geometry or buffer geometry, but I also noticed there is a circleBufferGeometry。我可以用这个吗? 或者除了使用精灵之外还有另一种方法可以使点变圆吗?我不确定,但似乎 loading an image for each particle 会导致很多不必要的开销。

那么,简而言之,有没有更高效或更简单的方法来在没有精灵的情况下在 threejs 中制作圆形粒子(球体或圆盘)的粒子系统?

Points 对象的几何定义了点在 3D space 中的位置。它定义点的形状。点也被绘制为四边形,因此它们始终是正方形,尽管它们不必以这种方式出现。

您的第一个选择是(如您所指出的)为每个点加载一个纹理。我真的不明白这会如何引入 "a lot" 开销,因为纹理只会加载一次,并且会应用于所有点。但是,我相信你有你的理由。

您的另一个选择是 create your own shader to draw the point as a circle。该方法以点为正方形,舍弃圆外的任何碎片(多个碎片组成一个像素)。

如果想把每个"point"/"particle"都画成几何圆,可以用THREE.InstancedBufferGeometry或者看看this