这个问题背负着以下问题:
Three.js - Buffer geometry particles, need to animate random groups of particles in system
How to quickly update a large BufferGeometry?
我正在开始一个新项目,任何时候场景中都会有数以万计的粒子。这个概念是在整个场景中会出现像星系一样的粒子簇。有时我需要为一个星系及其成千上万的粒子制作动画。我可以在几何图形仍在缓冲区内时执行此操作吗?
我正在使用使用PointCloud
构建的THREE.BufferGeometry
,每个顶点位置都使用Float32Array( numParticles * 3 )
设置。
在过去,我总是使用tween.js来动画在场景中移动的物体。是否有可能提取补间所需的点,转换为vector3,重新定位它们,并在每个更新循环上渲染?
答案 0 :(得分:2)
如果要为成千上万的粒子设置动画,请在GPU上执行模拟,并在顶点着色器中移动粒子的位置。您可以谷歌的流行语是" GPGPU"。
您有很多选择:逻辑可以完全在着色器中,和/或您可以将更新的控制制服传递到着色器,和/或您可以将属性传递给着色器。
这是一个three.js示例:http://threejs.org/examples/webgl_gpgpu_birds.html
以下是使用粒子的示例:http://www.neveroccurs.com/lab/three.js/gpu_particles/?particles=256
three.js r.69