所谓720度全景图就是一个包含了摄影点当前位置720度的景物的图片,参考图片如下:

ios-720-viewer_1

这种720度全景图除了能用全景相机拍摄外,还能用带鱼眼镜头的相机或普通相机通过软件的加工而来。

当然这些全景图由于各种扭曲而导致不能直接观看,他只能在全景图浏览程序下正常观看。

实际浏览效果如下,用户可以左右上下移动画面来进行观赏。

ios-720-viewer_2

至于程序的实现,主要使用到了 OpenGL ES 三维图形API。

利用 OpenGL ES 构建一个球体,并在球面上使用纹理渲染而成。

也可以构建一个正方体,然后对正方体的六个内面使用纹理渲染而成。

由于 OpenGL ES 的球面并不是由曲面组成的,而是由一个个小的三角形组成,所以使用球体的方法构建全景图,程序初始化会较慢,并且会占有更多的显存。

组成球面的三角形越多,渲染出来的球面看上去就会越细腻,相应地,程序的运行速度也会越慢。

而使用正方体来创建全景图,他仅仅需要6*2(正方体有6个正方面,每个正方面由两个三角形构成)的三角形即可,无论是初始化还是运行速度都明显由于使用球体的方法。

在3D游戏开发领域里,人们称这种使用三维图形API创建的,用于包含整个游戏世界的立方体为天空盒(Skybox)。

天空盒的六个面总是远离摄像机位置,你可以通过改变游戏人物的视角来观看天空的景象。