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
我正在通过调整 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