未来的世界一定是虚拟的,人们在线下的所有活动,如今都可以搬到线上进行,如何让用户在线上获得沉浸式的临场体验,是互联网接下来的发展新方向。
上海东方传媒技术有限公司(SMT)使用Unity打造了世界人工智能大会云端峰会,提供“云端会议”一体化技术整体解决方案,给线上观众带来临场感。上海东方传媒技术Unity技术总监朱名一,就在Unity线上技术大会中与我们分享了这场虚拟盛会的诞生过程。
以下是演讲实录:
大家好,我是SMT的朱名一。非常感谢Unity公司今天邀请我来参加这一次技术的分享,我要分享的主题是基于Unity引擎创造的沉浸式虚拟云观众会场的项目。
今天我所讲的内容,大致分为三个部分,首先简单介绍一下项目整体的开发状况和特点,第二部分会介绍一些技术实现的细节,第三部分会拓展Unity的技术细节,最后介绍一下我们曾经开发过的其他产品和项目。
Unity引擎不但能制作电影、开发手游、开发桌面应用程序、开发APP,能开发各种跨平台的应用。其实很多用户心里都在想,Unity到底还能做什么?很多年轻人的想法是,Unity不就是一个做手游的开发平台吗?其实完全不是。今天我就为大家介绍一下,能不能把Unity发挥到极致,能不能使用Unity更多的技术,我们到底还能用Unity呈现什么样的作品。
在这之前,我想简单地介绍一下我们公司的情况。我们来自SMT,就是上海东方传媒技术有限公司,原本是做传统媒体这一块的,现在经历了很大的转型。我们跟很多友商进行合作,所以在今年和去年使用Unity平台开发了世界人工智能大会,开发了世界AI产业大会的沉浸式虚拟云会场,也在去年开发了PMCO的夏季总决赛AR的呈现,所有的制作、开发与呈现都是我们自己基于Unity开发的平台完成的。
我介绍一下什么是沉浸式?可能很多观众对这部分都不太了解。大家会觉得我们的虚拟会场到底是什么样的内容?其实我可以讲得很直白,这个跟游戏有一点关系。它会有客户端,也可能会有服务端。客户端其实跟游戏开发是非常类似的,开发过游戏的同学们可能会比较熟悉服务端,服务器、数据库的调用、高并发服务器的通讯协议。服务端去控制客户端的内容,通过5G传输的方式,还增加了现场拍摄推流的内容和技术实现,整套就实现了这次世界人工智能大会云端的会场。
由于今年疫情的关系,很多海外的用户,以及国内用户都难以举办线下大会,如果一场本来可能有名观众参与的会议,今年可能只有名观众会到场,剩下的几千名观众只能在线上开会。我们如何去互动呢?这是一个问题。
像以前,我们会想办法进行线上开九宫格的互动方式,就像我们的Zoom系统、腾讯会议系统。如今我们想借用游戏技术来呈现一种虚拟仿真沉浸式的会议现场,这就是交给了我们一个难题,如何使用我们的3D引擎来打造这样一个会场。
我们在这个过程当中就想到了使用游戏引擎平台,游戏引擎平台的呈现效果会很好。很多同学关心三维制作、后期合成、游戏开发、软件开发,包括后台开发。我们把这些东西拿捏起来,似乎就能融合成一个非常大的整体,我们就去这么尝试了。
接下来我放一段视频,关于我们这次的一个云会场,这是在全3D环境里面一种比较仿真的实施会议系统,它跟游戏很像,但是跟游戏的区别在于实时直播流信号的交互。我们把很多东西拿捏起来,里面有聊天系统、聊天会议、实时流信号传播。你们在大屏上看到的所有的直播信号,都是当天在人工智能大会上所发生的一切。
你们看到的很多虚拟角色,由我们三维软件所打造,包括你们熟悉的MAYA、3DMAX、C4D这些软件都可以进入到Unity引擎。我们在三维软件里面进行建模、骨骼绑定、贴图、蒙皮,也就是相当于CG的工种modeling、bending或者叫rigging、texture、material,包括animation。全部导入到Unity引擎以后,然后再进行程序代码的开发。代码分前端与后端,前端是客户端、呈现端,后端会有注册系统、数据库,把这一套链路连起来以后似乎有点像游戏,互联网游戏是不是就这么做的呢?其实有点像。
我们在这个基础上又增加了互联网游戏没有的,就是刚才大家所看到的一个直播流的应用。我再补充一点,我们的虚拟云会场还有一个难点,就是不需要用APP来实现。这话怎么讲?如果我让每个客户都去装一个APP,是不是很麻烦。很多同学会问,Unity不就是做APP是最方便的吗?Unity做APP相当好,我个人非常喜欢。但是我们这次的应用是不借助于APP,我们需要在浏览器上实现。
那问题就来了,做过开发的同学就知道,尤其是IT公司、互联网公司是不是会用JS的H5形式去开发前端页面吗?会!能不能做到很好的CG影像效果的呈现呢,然后又有互动?在H5当中,在JS里面可以用一些3D,也有3D引擎,但是画质相对较弱。以前包括我们曾经有很多同学用过cocos2d系统,cocos2d系统有3D的成分在,但是也是比较弱的。我们把Unity3D的技术植入到Web页面当中,是不是最终能交付一个非常好的页面效果?答案是可以的。使用UnityWebGL的技术可以实现这样的效果。
我刚才讲到,我们为什么要把Unity走向极限?所谓走向极限,我所讲的不是AAA级游戏的极限,AAA级游戏极限是在同台竞争,比如用PS5或者Xbox,我上面开发一个游戏,你可以把HDRP、URP一切所有的效果光线跟踪全部开出来,在WebGL当中能不能这么做呢?对不起,这一切都不可以,完全不可以!
怎样去弥补,怎么能更好地去体现或者说我们去补足这一些丢失呢?我们就需要用各种手段,在WebGL里面。据我了解,在UnityWebGL这个板块用的用户不如开发APP的这么多,我们怎么去实现沉浸式实现的效果?
首先我大致介绍一下虚拟云观众,前面大家也看过宣传片了。比如说先打造一个会议室,在会议室里面同时能容纳名观众。我们每个观众都有自己的视角,也就是说什么呢?大家玩过第一人称游戏,我自己的夜间视角能像射击游戏一样看到对方是什么样子。我坐在不同位置上,就像电影院一样看到的视角是不一样的。有些人问视角不好怎么办?对不起,谁让你买了这个票呢?我们还原了这样的效果,大家一起坐在电影院看直播、看综艺。
同时我们也进行了阿凡达系统的打造。很多熟悉Unity的朋友都知道,阿凡达系统在Unity系统当中是动画系统。我所讲的阿凡达系统跟这个概念不一样,每一个现场看到的虚拟角色背后都是有一个真人注册登陆的。你背后的角色,可以互相之间交流,可以互相打招呼,可以互相聊天,这一切都可以。
我们也可以根据客户的要求定制,会有更多的动作。哪怕以后做个综艺节目,有一个用户在台下走到台上跳舞都可以。或者做一场拳击赛,两个用户在上面打拳击也可以。所有的动作设计,都可以根据用户来定制。
有了聊天室、互动和各方面的呈现,然后我们还有一个推流的直播。在大屏上,我们有实时推流系统,而且是低延迟的,所以直播所有的内容环节大家是能同步看到的。这个问题又带来了,大家知道我们的很多APP软件,或者是H5上的,或者是很多网站上的,比如说看优酷、B站等,我们这些推流系统是一种普通的传统推流。那么怎么在Unity里面进行推流?也就是说我们再讲深入一点,如何把这些推流的内容转化为shader贴到Unity的模型上去?这是一个问题,而且是实时的。更难的是,如果试过在APP中进行推流的同学,觉得这有什么好难的,我们马上能实现。你能不能在WebGL界面的模型再进行推流呢?这是一个难点。
经过我们和Unity公司的很多技术专家一起探讨,最终实现了实时推流效果,这是在WebGL当中实现的,而不是在APP当中实现的。也就是说,大家拿一个手机,可以直接用手机打开浏览器观看,也可以在家中打开浏览器观看,你可以在平板上打开浏览器观看。我只要给你一个HTTP网址就行了,你的注册、登陆全在里面实现就可以。
我们以后会进行2.0版本的迭代,还有很多的拓展。比如说在聊天过程当中能不能有自己的名片功能,每个阿凡达,每个角色代表我自己,我是实名注册。我把名片发给客户,那些人就知道你是谁。或者有些客户您根本不认识,你在里面可以像QQ、