我正在尝试建立一个热点编辑器为360个图像在A-Frame。
这个想法是,你可以在一个等长方形的全景图上绘制,然后这个工具会用THREE.ShapeGeometry将形状转换成平面。
我可以从JS矢量编辑器中获得每个形状节点的X/Y坐标和在A帧中渲染的平面。然而,我遇到了问题,使他们正确地放置在顶部的天空盒子。
我知道我需要做一些等长方形的投影,但我不确定如何在这种情况下接近它。
有什么想法吗?
Screenshot of vector editor to show what I mean
发布于 2017-03-18 16:46:51
目前还不清楚您希望如何在3D空间中显示这些平面几何图形,但以下信息可能会在某些方面帮助您……
使用类似于spherical polar coordinates的物理样式纬度和经度,但不是从西到东从-180到180,从南到北从-90到90,你有类似于纬度的θ,从0一直指向180,直接向下,φ从0到360绕Y轴旋转。
从这两个角度,你可以映射到球体上的x,y,z(笛卡尔)坐标,在带有纹理的等矩形投影中,你有一个水平方向从0到1的U轴,它在phi方向上类似于0到360,而V轴在垂直方向上从0到1,类似于θ中的0到180。
有了这些信息,你应该能够在theta和phi球面极坐标中识别出等长方形平面上选择的顶点,并将它们转换为球面上的x,y,z笛卡尔坐标。
你想从那里做什么取决于...我会提出一个建议,但你可以接受,也可以随你便。
我认为你要做的是将这些点径向投影到一个与球体表面相切的平面上,即通过球体中心的法向量。我认为,问题的部分在于决定使用哪个平面法线,以及距离球体中心多远。
随机的持续思考让我回想起几何和物理课程,并思考在给定表面恒定密度的情况下,质心等事物。
一种更简单的解决方案是,只需在定义的形状内的某处单击,以定义球体曲面上平面应与之相切的点,然后将法线的长度从等于半径减小到足够小于定义的形状的投影顶点的长度,以便所有顶点都适合球体内部。
为了将投影完美地拟合到球体内部定义的形状的平面上,可以通过确定定义形状的顶点距离切点(沿径向线的平面法线与球体表面相交的位置)最远的顶点来解析地完成,切点的最大弧长类似于沿great circle的最大弧长。
https://stackoverflow.com/questions/42871114
复制相似问题