在MAKE PANO (FLAT) 平面全景中添加热点

在krpano的下载包中,有一个MAKE PANO (FLAT) droplet.bat,可以对单个平面照片生成渐进式的全景展示。使用非常简单,将高清平面图片直接拖拽到droplet图标上,松开,过一会儿,项目就生成好了。

现在问题来了,加入我们现在还要在这个图上面加热点,怎么做呢?似乎有点棘手。先来点预备知识。

全景图点坐标与球面坐标的关系

在全景图中某个点的X、Y坐标和全景漫游时该点在虚拟空间中atv、atv是存在某种线性关系的。
例如
ath = ((x / 全景图宽度) – 0.5) * hfov


atv = ((y / 全景图高度) – 0.5) * vfov



假设我们有一张8000*4000的全景图,那这个图的中点就是x,y(4000,2000),按照公式我们可以得出ath,atv都是0。也就是说全景图的中点是球面坐标的原点。

hfov通常在圆柱形全景和球形全景都是360,vfov你可以从xml文件中获取或者手动计算。如果是完整的全景图,vfov则是180。

对球形全景
vfov = 360 * 全景图高度/全景图宽度

对圆柱形全景
vfov = 360 * arctan( 全景图高度/全景图宽度* PI ) / PI

arctan是反正切函数,PI是圆周率。

那么,krpano的平面全景实际上也是球面全景或圆柱体全景的一种,只是它的hfov值为1.0,也就是说在这个三维空间中只有1度宽,因此它是平的。

那么热点的ath和atv坐标也在这个范围内,当一个hfov为1.0的全景时其中热点应该是-0.5到0.5。

假设我的照片是4000*6000的尺寸,我要定的热点在平面图的坐标是x为2767,y为2784,那么

因为hfov为1.0,因此vfov为1.5。

也就是

得到了ath是0.19175,然后atv是-0.054。

注意这里要用zoom的话,scale要设为一个很小的数值。

另外,如果想拖拽全景时有scrollarea的感觉,使用