【问题标题】:Three.JS, mapping a cube to a sphere and Gnomic Projection三.JS,将立方体映射到球体和Gnomic Projection
【发布时间】:2014-10-27 13:05:48
【问题描述】:

新手警报!...

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

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

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

知道我哪里出错了吗?

【问题讨论】:

    标签: 3d three.js geometry


    【解决方案1】:

    啊,我找到了问题,我在球体上的顶点投影不正确。我正在使用...

    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);
     
    }

    【讨论】:

    • vertex.setLength( radius );怎么样
    • 哈!告诉你我是菜鸟,谢谢,那太完美了!我也是 StackOverflow 上的菜鸟,您是否必须将其发布为答案以便我可以标记它?
    • 没关系。只需改进您自己的答案,然后接受您自己的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    相关资源
    最近更新 更多