我正在模拟围绕太阳系运行的小行星。您可以在此处查看初始实现。
我将整个轨道对象集转换为单个 ParticleSystem,我可以在我的家用机器上以 60fps 的速度运行 10,000 个轨道(在我的笔记本电脑上大约为 30fps)。15-20k 让我的机器降到 30fps。
我正在运行一个网络工作者来计算一个新的位置列表,然后我更新主线程中每个对象的位置,如下所示:
for (var j=0; j < positions.length; j++) {
myobjects[j].MoveParticleToPosition(positions[j]);
}
particle_geometry.__dirtyVertices = true;
移动粒子到位置:
var vertex_particle = this.particle_geometry.vertices[this.vertex_pos];
vertex_particle.x = pos[0];
vertex_particle.y = pos[1];
vertex_particle.z = pos[2];
我的问题是:如何从这里提高性能?
例如,有没有更快的方法来更新几何顶点?是否有可以应用于 ParticleSystem 的优化?是否可以从网络工作者中更新顶点?