Three.JS,将立方体映射到球体和Gnomonic Projection

时间:2014-10-27 13:05:49

标签: 3d three.js geometry

Noob警告!...

为了避免在将纹理包裹在默认球体周围时极点处的奇点,我试图实现使用立方体作为基本几何体的标准技术。

所以这里cube wireframe我将BoxGeometry的顶点移动到封闭球体的表面,这似乎产生了一个很好的规则晶格。

然后我采用直线网格并使用' CubeMap'来应用变换。或NASA' G.Projector'将直线地图转换为Gnomic Cube地图(6个地图,每个地图各一个'面部')。当我将这些地图应用到立方体时,我不会获得经常的纬度/经度线。见这里:plain grid maps

知道我在哪里错了吗?

1 个答案:

答案 0 :(得分:3)

啊,我发现了问题,我对球体顶点的投影是不正确的。我正在使用......



function displaceVertex(vertex) {
  var x2 = (vertex.x/radius) * (vertex.x/radius);
  var y2 = (vertex.y/radius) * (vertex.y/radius);
  var z2 = (vertex.z/radius) * (vertex.z/radius);

  vertex.x = vertex.x * Math.sqrt(1 - (y2 * 0.5) - (z2 * 0.5) + ((y2 * z2) / 3));
  vertex.y = vertex.y * Math.sqrt(1 - (z2 * 0.5) - (x2 * 0.5) + ((z2 * x2) / 3));
  vertex.z = vertex.z * Math.sqrt(1 - (x2 * 0.5) - (y2 * 0.5) + ((x2 * y2) / 3));
}




将顶点均匀地分布在球面上。需要的是将它们投射到表面,我已将上面的内容更改为以下内容,项目现在可以正常工作......



function displaceVertex(vertex) {
  vertex.setLength(radius);
 
}