从零开始制作全景图

时间:2017-1-8 作者:剧中人

2016年被称作VR产业元年,国内VR相关的创业项目也如雨后春笋般茁壮成长着。VR全景漫游作为整个VR中的领头军,在内容产出量上占据着比较大的比重。

经过半个月摸索,小剧终于研究出如何拍摄、制作以及生成全景图,这里分享下这段时间研究的成果,供大家交流参考。

制作全景图需要哪些步骤

制作全景图其实很简单,只需要【前期拍摄】、【后期拼图】、【Web展示】这三步就够了,下面我来分别说一下在这三步分别要做哪些事情。

一、前期拍摄

前期拍摄

前期拍摄很重要,因为全景照片需要的照片细节比较多,如果出现多张照片拍摄点不一致、或者照片素材不完整就就完蛋了,因为即使通过补拍也很难准确找到上次的拍摄点。另外因为天气的差异、时间的推移阳光也会发生变化从而影响画面的完整性。

那么前期拍摄要注意哪些点呢 ?

为了保证照片的完整融合需要定点拍摄,最好配合三脚架使用,可以使拍摄点更稳定。相邻画面要保证40%以上的重合点,有利于后期拼图时有更多可参考的像素细节。

照片融合

标准的拍摄流程是怎么样的?

根据前面提到的定点拍摄和相邻画面40%的重合率,一般标准的全景拍摄方式为水平拍摄一圈、俯视45°拍摄一圈、仰视45°拍摄一圈,每圈平均拍摄8张,垂直向下俯视一张、垂直向上仰视一张,一共26张。

当然,这里提到的仅仅是标准的全景图拍摄方式,有经验的话可以根据相机的不同可以适当的变通,初次拍摄推荐使用标准方法。

拍摄角度

补充说明:写这篇文章时,对拍摄的理解并不深入,其实这里有一个『节点』的概念。因为普通三脚架旋转时旋转中心为相机机身中心,并非是镜头成像中心,因此拍摄时照片间必然会有一部分偏差。专业的全景拍摄需要借助全景云台来调节成像『节点』,可以达到更佳的效果减轻后期工作量。

拍摄中可能的困难点有哪些?

正常拍摄中,一般会借助于三脚架或者无人机航拍。三脚架适合室内、公园视角较低的环境拍摄。无人机由于垂直升降的能力,可以拍摄更高更广的视角。

三脚架因为要架设在地面上,无法直接通过旋转角度拍摄地面,需要移开三脚架单独补拍一张地面。

使用无人机拍摄因机位的原因无法拍摄垂直向上仰视的角度,向上仰视一般也很难达到45°,所以需要在地面另外补拍天空用于后期合成。

二、后期拼图

前期照片拍好了,下面就会进入后期拼图的过程。常见的全景渲染模型一般是球体模型,需要将前期拍摄的照片拼合为2:1的展开图。

球面展开图

为什么是2:1呢?

可以把上图中的球体理解为地球,展开图为一张世界地图,每一条水平线对应地球的一个纬度,中间最粗的那条水平线即为赤道,每一条竖线对应地球的一条经度线。可以发现这张展开图的长是以地球为半径圆的周长,宽则是周长的一半,所以展开图比例为2:1。

相信大家应该都看过一篇微博、朋友圈广为流传的一篇文章叫《世界地图错的离谱》,文章提到各个国家的比例其实并不一致,格陵兰岛看起来和非洲差不多大,但其实面积只是非洲的十四分之一。

其实原因很简单,通过展开图可以发现南北极原本只是一个点,在展开图中已经被拉成了和赤道一样宽的线,各个纬度本来应该依次缩小却也和赤道保持一致,这 就是全景图再战开的时候画面畸变产生的结果。

下面来看一张实际处理完成的展开图

展开图-上海科技大学

这是我们组前端妹纸学校的后门,右侧还有一个新建的玻璃塔的建筑,中午午休的时候和小组的某富豪一起去拍的照片。可以扫下二维码查看最终的效果。

仔细看看这张展开图,形变和上面描述一致,正上方和地面已经被扭曲拉伸到了极为夸张的形变,而水平区域相对形变较小。

二维码

有哪些软件可用来制作展开图呢?

经过一番搜索,终于让小剧找到一些能够制作全景图拼图的软件,可以下载试用。

理论上只用PS即可完成全景拼图,但是因为使用PS工作量较大,而且形变、对齐等操作比较困难,所以一般情况并不推荐。

这里列举的全景拼图软件中,使用最广的是第二个:PTGui,其余几款软件没有实际使用经验,就不做介绍了,后面会简单介绍PTGui的使用。

对了,PTGui是一款收费软件,希望大家支持正版,不要使用破解软件哦。

PTGui是怎么操作的?

PTGui第一步是导入拍摄的照片素材,然后通过【对齐图片】即可自动拼合全景图,只不过一般情况自动对齐多少是有瑕疵的,需要通过下面几个工具对细节进行调整。

Control Points 是照片的特征点的管理工具,这一步一般不需要操作,软件会自动识别相同的特征点。

control-points

mask 是 PTGui的遮罩控制工具,不过和PS中的遮罩略有不同,这里增加了一个绿色遮罩。

红色遮罩为去除像素,最终渲染的时候会放弃这一片区域,用于去除融合时有瑕疵的部分,绿色遮罩为强制显示,用于希望用当前区域完整渲染建筑物、树木等物体。

而没有遮罩的部分会通过软件计算后,选择性的显示或隐藏。

mask

Panorama Editor 是PTGui的全景编辑器,是一个可视化编辑全景图的界面,可以通过拖拽移动、旋转调整照片的位置,进行更精细的调整。 Panorama Editor

通过 create Panorama 可以直接导出全景图,如果发现无法导出的话,可能是Control Points检测到的特征点较少,要手动添加一部分。

create Panorama

补天补地的技巧

别误会,这里的补天补地并非是女娲的神迹,而是用于处理天、地难以拼合的问题。前面提到过的,拍摄中由于三脚架机位的原因,地面一般是后期补拍的,视角难免会不一致,飞行器拍摄时,单独补拍的天空同样也很难以融入到画面中。

通过观察展开图的天空和和地面可以发现,借助于PS中的极坐标滤镜可以很自由的进行平面坐标和极坐标间的相互切换,特别适合处理天空、地面的修补。

先来简单来看一下极坐标与平面坐标间的切换关系。

极坐标

使用方式很简单,打开photoshop,然后从菜单上选择 滤镜 → 扭曲 → 极坐标,在弹出的极坐标对话框中选择对应的转换方式。然后再使用补拍的照片进行修补即可,具体PS的使用可以自行搜索或请教身边设计朋友。

极坐标-ps

三、Web展示

全景图已经拍摄、处理完毕,接下来就是发布了,目前有两种方式发布,一种是发布至全景分享平台,具有代表性的就是720云,另外你也可以使用WebVR中的工具,自己实现全景效果。

720云

720云采用krpano实现全景,有完整的全景相关设置,可自定义小星星开场、默认开启陀螺仪等等,同时支持VR模式预览。为避免广告嫌疑,更多细节就不介绍了。

自研(以 threejs 为例)

自己开发的话,可选的组件有很多,这里以 threejs 为例。

创建场景,然后创建摄像头,可配合VRControls实现视觉跟随效果,最关键的一步是使用球体创建天空,圆心放置在摄像机所在位置,并使用制作好的展开图进行贴图,因为摄像机在球体内部所以要设置为背面贴图。

另外因为贴图显示的是背面,用户看到的其实是翻转后的照片,所以需要再次水平翻转来修复。

这里展示下关键部分的代码。

code


上面的都太难了,有没有简单点的?

前面介绍的全景制作方法需要熟悉相关的基础知识,以及熟练掌握至少两款软件的使用方法,对于拍摄及处理难度都是较大的挑战,如果对于画质没有过高要求,有没有更方便的办法呢?

1、屌丝级拍摄方案 (不仅屌丝,而且还傻)

转转鸟 转转鸟完全使用手机拍摄,开始拍照后在转动手机时对准屏幕上出现的黄点,将黄点拍完即可,其原理和前面提到的拍摄过程一致。

因为手机无法在一个点固定,照片间融合情况相当差,画质一般,仅供个人体验。

2、高富帅模式

其实现在市面上有很多专业的全景相机,使用经过调教后的镜头及后期软件,无需繁琐操作即可输出全景画面,一般默认支持全景视频拍摄。

最大优势是无需技术门槛,即开即用,另外因为全景拍摄是多个镜头在按下快门后一瞬间拍摄完成,无需处理物体的位移,如行人、汽车、云等。 目前的劣势是因为镜头数量限制,一次拍摄所覆盖的像素有限,仅限于时效性较强的场景拍摄,如VR现场直播。

高端设备


简单来说,本次提到的拍摄全景方法可以总结为三种的模式,步骤相当繁琐但是成像效果最佳的技术宅模式、使用手机APP拍摄的屌丝模式、以及借助专业设备的高富帅模式

你愿意选择哪一种模式呢?