查看原文
其他

改变你观察世界的方式——如何在LOL里进行VR直播

2016-12-14 林森 Gad-腾讯游戏开发者平台


2016号称是VR爆发元年,各大厂商纷纷推出自己的VR产品,各大视频网站相继推出自己的VR频道,全程VR视频、VR直播的APP遍地开花,连在麦当劳吃个全家桶都有VR眼镜相送。


麦当劳的开心乐园餐盒版VR眼镜

然而终于到了年底清算KPI的时候了,好像这个行业并不像年初想象的那么美丽,未来也没有来得想象中的那么快。

究其所以,无外乎两大原因:


一、硬件设施跟不上

二、内容制作成本居高不下

于是我们开始想:我们可以为这个还没有来的未来做点什么?

随着基础科学和通信技术的日新月异的发展变化,其实人类观察、表述、传输、重现这个世界的方式一直都在发生变化,从报纸到电台,从电台到电视台,从文字到声音,从声音到视频,随着载体的变化,我们能够通过越来越大的数据存储量记录越来越多的细节,但是这个世界其实一直都还是那个世界。

只不过现在,我们可以用VR的方式来观察记录这个世界。


Nokia OZO


Google Jump


Facebook Surround 360

随着各大巨头在VR视频采集领域的频频出手,我们想到,其实我们现有的无数3D游戏大作其实也是一个个被精心构建的完美世界,为什么我们不能在现有的存量巨大的游戏身上,稍微改变一下我们观察这个世界的方式,以边际成本基本为零的方式为这个行业在内容源头带来一丝清泉呢?

想象一下,当你带上VR眼镜,你再也不是远远架在高空的上帝视角,而是就站在德玛西亚身边,看着他和你一起冲进召唤师峡谷,挥舞着手中的大剑,当你环顾四周,可以看到源源不断的小兵跟随着你前赴后继,誓死一战,是多么不一样的体验。

想象一下,当你在守望先锋里被人放了冷枪,带上VR眼镜,你可以一次一次重复以各种你当时忽略了的视角回放,看看那个对手到底什么时候躲在哪里下的黑手。

现在,跟着我们的镜头一起进入到召唤师峡谷,来重新看一看这个你无比熟悉又陌生的世界吧:

注:web页面只是方便用来演示,性能开销较大,建议在I7主机上用Chrome观看,鼠标拖拽可以改变视角。

技术原理



全景本身是一个球面成像,但是现有的视频编解码方式都是基于平面进行的,所以需要对球面信息向平面做一次映射,映射方式有很多种,常见的全景图像格式有球面展开、鱼眼、立方体展开等。

所谓球面展开,就是这幅初中地理课本上见到的地球仪到底世界地图的映射方法,当切分粒度足够细的时候,其实就是一个球面到一个二维平面的展开了,平面宽度为2π,平面高度为π。


LOL的世界在球面上成像之后的效果大概是下面这个样子,当然,细心的你可能发现这里有一个细小的区别,地球仪是在球体外部成像的,当时当我们在球面内部观察世界并在球面成像时其实是在内部成像的,方便展示,我们还是以外球面来表示:


LOL场景的球面成像

球面展开之后是这个样子:


LOL场景的球面成像展开 

虽然上下两个极点看起来有点别扭,但是基本是目前最通用的全景图像表示格式。

考虑到采集和观看还原的便利以及有效视频面积的优势,我们采用了立方体展开的方式,立方体成像的原理也比较简单,盗个图:


图像来源:

在立方体模型中,可以想象人眼(摄像机)位于一个透明正方体盒子的正中心,当人眼改变方向,分别面向盒子的前后左右上下六个面去观察外部的世界时,外部世界在正方体的每个面上的成像的集合就是这个世界在人眼处能被观察到的全部信息,将这部分成像信息记录下来,在播放端还原到一个同等的立方体的内表面,再在同样的位置向外观看,这个时候观察到的世界到底是真实的世界还是一个虚拟的世界,其实已经傻傻分不清了。

说道傻傻分不清,休息一下,来看个片:

我们先搁置是否是对猩猩残忍的争议,单纯从技术的角度来观察这个现象,你知道笔者在外地时,想和家里的狗狗视频聊个天时有多么困难么?无论用手机,还是pad,甚至投影到电视上,让人像的尺寸尽可能接近于1:1的显示,它都无动于衷。

当人类在接触信息时,其实在不停的动用超强的大脑,开动想象,还原一个历经数次压缩,甚至到失真的信息,当你在书上看到一句“罗马和埃及打了一场血流成河的战争”,你头脑里马上涌过千军万马,铁蹄肆踏,然而你根本看不清每个战士的脸。

猩猩不会说谎,他相信了他真的看到了挂在树上的香蕉,无比真实,这就是VR带给我们最大的改变。

回来继续。

 在主播端的LOL游戏中,我们首先将摄像机调整到适合的位置,然后调整视角为90度,在同一时间(相对于游戏动画,即游戏动画静止)向空间的前后左右上下六个方位进行后台成像,就可以在玩家无感知的情况下获得这一时刻的全景图像了(当然,游戏帧率会受到轻微影响了)。

实际在游戏场景下取到的图像:


整理后便于编码传输:

如何在不影响用户正常游戏的情况下神不知鬼不觉完成这一切,我们发明了一套后台虚拟摄像机阵列渲染的机制,能够确保用户在无感知的情况下,在用户主机的后台完成时时的全景图像的采集、拼接、编码、传输。


在播放器侧,将六个正方形纹理重新贴回给一个立方体的表面:


立方体外立面贴图

和前文提到的球面展开的示例图类似,真实的情况是这样,贴在立方体内侧:


立方体内表面贴图 

人眼最终是在被立方体包围的立方体中心向外观察这个立方体的内壁,一如采集成像的过程。

把观看摄像机架在采集时的摄像机所在的位置,通过接受传感器数据,跟随sensor随意转动视角,到此,我们就在播放终端进入了一个全新的360x180度的全景LOL世界!


至此,在目前已有的成熟的游戏视频录制、直播和播放的技术基础之上,我们扩展了全景图像的采集、排布、与原有的编码、传输、解码、播放技术配合,再加上播放端的3D还原,就完整的实现一整套VR直播的技术方案,录制点播同理适用。

 然而,并没有结束,本文至此一直都在混淆一个概念:

VR VS 全景视频

这也是目前绝大部分业内厂商普遍在混淆视听的一个概念,VR其实是一个非常宽泛的概念,全景视频的采集和呈现只是这个领域里的一部分,还包括动作捕获,人机交互,更丰富多样的体感反馈等等,只不过因为关联到对人的视觉冲突最强烈的成像部分,所以一提到VR好像就是360全景,甚至连成像部分很重要的3D部分都给忽略了,别忘了,还有音频的3D处理呢。

在本文系列的下一篇


《改变你观察世界的方式(二)——如何在LOL里进行3D全景成像》

中,我们会来探讨如何将游戏这个原本就是3D的虚拟世界通过采集传输成像在播放终端还原出一个视觉上呈现3D效果的全景图像。

这里,我们继续讨论一个在VR领域里非常重要的一件事情:交互。

首先,游戏直播和游戏已经是完全不一样的两件事了,所以VR游戏中交互的概念并不适用与VR直播,经过图像采集、视频编码、网络传输、视频播放、3D还原这么长的一串流程之后,你还希望在屏幕后面挥挥手,游戏里的艾希瞬间开个大?当然不可能。

但是并不是无事可做啊,相反,可以做的事更多了。

举个栗子:

忽然由一个2.5D的世界走入一个真正的3D世界是不是很不习惯?是不是队友在地图上离你太远在3D世界里已经遥远的看不清楚了?是不是找不到刚刚种的蘑菇哪里去了?

没关系,我们送你非常6+1模式,通过在采集端对传统视角的一并采集传输,我们在播放终端可以随时呼出传统视角,以观察战争全局。并且可以通过头控或者更其他交互方式把这个大屏幕随意摆放在召唤师峡谷的天空的某个角落,或者,让他消失。


采集端成像


播放器还原效果

进而的,战争时时数据,积分面板,双方英雄战力分析,出装分析,所有你想的到的观看一场真正的比赛应该有的,全都可以有!拍拍双手,屏幕秒变计分板,召之即来,挥之即去!

什么?还想要个女仆和你肩并肩坐在一起看比赛?这都不是事儿,只要你想要,我们可以让女仆跟你一起抓着滑翔伞在召唤师峡谷里面双飞!未来就是一个只有你想不到,没有做不到的哆啦A。

到此,这还不是VR直播么?这就是VR直播!

未来,已来。

点击一下立即阅读相关好文章


VR教育大有可为痛点在哪再见了面向对象的编程


游戏策划进阶的二三事—市场价值篇


如何练习人体我有好方法


“零成本”的手机MR应用开发

......


近期热文

Unity虚拟现实的实现方法(基于暴风SDK)

年终盘点:2016 VR市场和用户


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存