背景故事:我创建了一个基于Three.js的3D图形库。类似于sigma.js,但3D。它被称为图龙和来源可以找到here。我使用Three.js,并使用表示图中单个节点的单个粒子。Three.js ParticleSystem闪烁着大量数据
这是我必须处理的第一个任务:给定任意一组点(每个点都包含X,Y,Z坐标),确定最佳摄像机位置(X,Y,Z),可以查看所有点在图中。
我最初的解决方案(我们称之为解决方案1)包括计算所有点的边界球,然后将球体缩放为围绕点0,0,0的半径为5的球体。由于点将保证始终落在该区域,因此我可以为相机设置一个静态位置(假设FOV是静态的)并且数据始终可见。这很好,但它要么需要改变用户指定的点坐标,要么复制所有的点,这两点都不是很好。
我的新解决方案(我们称之为解决方案2)不涉及输入数据的坐标,而只是定位相机以匹配数据。我遇到了这个解决方案的问题。出于某种原因,当处理大量数据时,粒子在位于其他粒子的前面/后面时似乎闪烁。
以下是两种解决方案的示例。确保走动图表看效果:
你可以看到差异的代码here
让我知道,如果您有任何见解关于如何摆脱闪烁。谢谢!
看起来像z战斗。你需要减少相机的远景。 – Charlotte
@Charlotte我试着大幅减少远平面,没有看到任何差异。任何其他想法? –
摆弄近/远值后,我需要增加近值和远值。也许我需要根据输入的数据动态生成这些值。 –