Graphics Three.js ParticleSystem闪烁着大量数据
背景故事:我正在创建一个基于Three.js的3D图形库。类似于,但为3D。它叫graphosaurus,源头可以找到。我使用Three.js并使用一个粒子表示图形中的单个节点 这是我必须处理的第一个任务:给定任意一组点(每个点都包含X,Y,Z坐标),确定可以查看图形中所有点的最佳相机位置(X,Y,Z) 我的初始解决方案(我们称之为解决方案1)涉及计算所有点的边界球体,然后将球体缩放为围绕点0,0,0的半径为5的球体。由于这些点将保证始终落在该区域内,我可以为相机设置一个静态位置(假设FOV是静态的),并且数据将始终可见。这很好,但它要么需要更改用户指定的点坐标,要么需要复制所有点,两者都不是很好 我的新解决方案(我们称之为解决方案2)不涉及触摸输入数据的坐标,而只是定位相机以匹配数据。我在这个解决方案中遇到了一个问题。由于某些原因,在处理非常大的数据时,当粒子位于其他粒子的前面/后面时,粒子似乎会闪烁 以下是两种解决方案的示例。确保移动图形以查看效果:Graphics Three.js ParticleSystem闪烁着大量数据,graphics,graph,3d,three.js,webgl,Graphics,Graph,3d,Three.js,Webgl,背景故事:我正在创建一个基于Three.js的3D图形库。类似于,但为3D。它叫graphosaurus,源头可以找到。我使用Three.js并使用一个粒子表示图形中的单个节点 这是我必须处理的第一个任务:给定任意一组点(每个点都包含X,Y,Z坐标),确定可以查看图形中所有点的最佳相机位置(X,Y,Z) 我的初始解决方案(我们称之为解决方案1)涉及计算所有点的边界球体,然后将球体缩放为围绕点0,0,0的半径为5的球体。由于这些点将保证始终落在该区域内,我可以为相机设置一个静态位置(假设FOV是静
X
移动到X+DELTAX
,则一组粒子将获得X
的摄影机变换,而其他粒子将获得X+DELTAX
的变换
如果将渲染与用户交互分离,则应该可以解决问题,假设这就是问题所在。这意味着您应该通过锁定(不更新)变换矩阵,直到完成渲染循环,将
相同变换应用于所有粒子和连接它们的边 结果是相机的mynear
值太低,far
值太高,导致“z-fighting”。通过缩小数据集上的这些值,问题就消失了。因为我的数据集依赖于用户,所以我需要确定一种算法来动态生成这些值。看起来像z-fighting。你需要减少相机的远平面。@Charlotte我试着显著减少远平面,但没有发现任何差异。还有其他想法吗?在摆弄了近/远值之后,我需要增加近值和远值。也许我需要根据输入的数据动态生成这些值。看起来你已经解决了。在不剪裁模型的情况下,近平面和远平面之间的差异应尽可能小,以避免z形格斗。