Threejs - 你可以使用带有Points材质的circleBufferGeometry吗?

时间:2017-09-14 16:22:40

标签: three.js buffer-geometry

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

documentation for threejs points表示它接受几何或缓冲几何,但我也注意到有一个circleBufferGeometry。我可以用这个吗?  或者除了使用精灵之外,还有另一种方法可以使这些点变圆吗?我不确定,但似乎loading an image for each particle会导致很多不必要的开销。

那么,简而言之,是否有更高性能或更简单的方法来制作圆形粒子(球体或圆盘)的粒子系统,并且没有精灵?

2 个答案:

答案 0 :(得分:1)

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

您的第一个选择是(正如您所指出的)为每个点加载纹理。我真的没有看到这会如何引入“很多”开销,因为纹理只会加载一次,并且会应用于所有点。但是,我相信你有理由。

您的另一个选择是create your own shader to draw the point as a circle。此方法将点作为正方形,并丢弃圆外的任何片段(多个片段构成像素)。

答案 1 :(得分:1)

如果你想绘制每个"点" /"粒子"作为几何圆,您可以使用THREE.InstancedBufferGeometry或查看this