2
我正在模拟运行在我们太阳系周围的小行星的小行星。你可以看到一个初始实现here。在Three.js中改善粒子系统性能
我将整套轨道对象转换为单个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;
MoveParticleToPosition:
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];
我问题是:我如何从这里提高绩效?
例如,是否有更快的方法来更新几何顶点?有没有可以应用于粒子系统的优化?是否有可能更新网络工作者内的顶点?
不再支持__dirty标志。您可以更新到three.js的当前版本,并查看wiki:https://github.com/mrdoob/three.js/wiki/Updates。 – WestLangley