2017-03-18 24 views
1

我正在尝试在A帧内构建360图像的热点编辑器。从扁平等矩形全景映射形状到A帧内的平面

这个想法是,你可以绘制一个equirectangular全景,然后这个工具将形状转换成平面与THREE.ShapeGeometry。

我可以从JS矢量编辑器中获取每个形状的节点的X/Y坐标,以及在A-Frame中渲染的平面。但是,我有问题让他们正确安置在天空盒上。

我知道我需要做一些equirectangular投影,但我不确定如何在这种情况下接近。

任何想法?

Screenshot of vector editor to show what I mean

回答

0

目前尚不清楚你想怎么显示在三维空间中的平面几何但也许以下信息可以帮助你一些方法...

使用物理风格spherical polar coordinates - 如纬度和经度,而不是从西向东运行从-180到180,从南到北运行从-180到180,你有类似于0的纬度从0直线指向直到180指向直线,φ从0运行到360转动Y轴。

从这些两个角度可以映射到X,Y,Z(笛卡尔)坐标上的球体并与纹理的方形投影,有运行从0到1水平这就好比0〜360 U轴在0和1垂直的φ和V轴上,这在θ中是0到180。

有了这些信息,您应该能够在theta和phi球形极坐标中的equirectangular平面上识别您的选择顶点,并将它们转换为球体表面上的x,y,z笛卡尔坐标。

你想从那里做什么取决于...我会提出一个建议,但采取它或让你随心所欲。

我想你要做的就是将这些点径向投影到一个与球体表面相切的平面上,即用一个穿过球体中心的法向量。我认为,问题部分在于决定使用什么样的平面法线,以及距离球体中心多远放置它。

随机继续沉思让我回想起几何学和物理学课程,并考虑像质量中心这样的事物,因为它在整个表面上具有恒定的密度。

更简单的解决方案可以是在定义的形状内的某处点击以定义平面应该切向的球体表面上的点,然后将法线的长度从等于半径减少到足够小于定义形状的投影顶点的全部适合于球体内部的东西。

为了恰好在球体内部将投影拟合到所定义的形状的平面上,可以通过识别离切向点最远的定义形状的顶点(其中沿径向线的法线方向与球体的表面相交),这将是沿着great circle的最大弧长度。