我们已经使用THREE.js创建了一个PCB查看器,并且现在正计划为其添加一些选择功能。这并非一项艰巨的任务,实际上我已经实现了这一功能,但遇到了性能问题。为了实现PCB各层(形状)的所有特征均可单独点击和选择(选中时颜色会发生变化),我认为每个形状都需要有自己的THREE.js网格,以便我们可以独立控制它们的材质。确实如此,这种方式按预期运行良好,但由于现在不是将同一PCB层上的所有形状合并为一个网格,而是拥有成千上万个网格,自然会导致严重的性能问题。
我明白大量网格会导致性能下降,这是显而易见的事实。不知是否有任何人可以提供一些关于如何更高效地实现这一目标的建议?目前,我们仅需在点击时改变各个形状的颜色。在我修改代码之前,所有形状都在同一个几何体中,属于同一个THREE Mesh。是否有一种方法,能够保持这种较为简单的结构,同时仍然能够分别操作各个形状/对象呢?虽然对我来说这听起来有些牵强,但我在THREE.js方面的经验尚不丰富。