Threejs LOD Globe详细信息

时间:2018-07-12 12:05:19

标签: javascript three.js

我正在寻求用THREEJS制作一个地球仪,这个地球仪的范围从观察整个地球到观察城市。最简单的解决方案是使用maploader,但这不是我想要的。

这个想法是使用镶嵌技术,但是您可能会理解,如果将地球放大到某个国家或城市的水平,则地球可能会太细或不够细。

我当前的尝试是使用geoJson(http://makc.github.io/three.js/map2globe/)来创建地球,该地球在从最远的地方查看时都可以使用。然后,当我放大时,我会使用内置的LOD功能来在每次缩放到特定级别时更改地图。

我的LOD实现示例:

const earth = new Earth(1, null, '#6394b3', country_data);
const earth_low = new Earth(1, null, '#6394b3', country_data_low);

// both vertices from another file with different details
var earthGeometries = [
  [earth, 1],
  [earth_low, 2]
];
let earthMesh;

for (let i = 0; i < earthGeometries.length; i++) {
  earthMesh = earthGeometries[i][0];

  earthMesh.updateMatrix();
  earthMesh.matrixAutoUpdate = false;
  lod.addLevel(earthMesh, earthGeometries[i][1]);
}

lod.updateMatrix();
lod.matrixAutoUpdate = false;
group.add(lod);

这有效,但似乎确实使它不那么平滑,并且性能不如我期望的那样。

现在,我读了一篇博客(http://jeremybouny.fr/en/articles/webgl_lod/)帖子,该帖子使用了自定义LOD函数,但似乎无法使其在我的地球上正常工作。

任何人都可以通过指导我朝正确的方向提供帮助,或者给我一个有关如何处理此问题的基本示例!

0 个答案:

没有答案