

让虚拟世界的体验更加真实,SMT皮皮虾数据AR可视化迎接市场新机遇
Unity China
阅读 645
2020年12月21日
未来的世界一定是虚拟的,人们在线下的所有活动,如今都可以搬到线上进行,如何让用户在线上获得沉浸式的临场体验,是互联网接下来的发展新方向。
上海东方传媒技术有限公司(SMT)使用Unity打造了2020世界人工智能大会云端峰会,提供“云端会议”一体化技术整体解决方案,给线上观众带来临场感。上海东方传媒技术Unity技术总监朱名一,就在Unity线上技术大会中与我们分享了这场虚拟盛会的诞生过程。
演讲回放录播:
以下是演讲文字实录:

大家好,我是SMT的朱名一。非常感谢Unity公司今天邀请我来参加这一次技术的分享,我要分享的主题是基于Unity引擎创造的沉浸式虚拟云观众会场的项目。
今天我所讲的内容,大致分为三个部分,首先简单介绍一下项目整体的开发状况和特点,第二部分会介绍一些技术实现的细节,第三部分会拓展Unity的技术细节,最后介绍一下我们曾经开发过的其他产品和项目。
Unity引擎不但能制作电影、开发手游、开发桌面应用程序、开发APP,能开发各种跨平台的应用。其实很多用户心里都在想,Unity到底还能做什么?很多年轻人的想法是,Unity不就是一个做手游的开发平台吗?其实完全不是。今天我就为大家介绍一下,能不能把Unity发挥到极致,能不能使用Unity更多的技术,我们到底还能用Unity呈现什么样的作品。
在这之前,我想简单地介绍一下我们公司的情况。我们来自SMT,就是上海东方传媒技术有限公司,原本是做传统媒体这一块的,现在经历了很大的转型。我们跟很多友商进行合作,所以在今年和去年使用Unity平台开发了世界人工智能大会,开发了世界AI产业大会的沉浸式虚拟云会场,也在去年开发了PMCO的夏季总决赛AR的呈现,所有的制作、开发与呈现都是我们自己基于Unity开发的平台完成的。

我介绍一下什么是沉浸式?可能很多观众对这部分都不太了解。大家会觉得我们的虚拟会场到底是什么样的内容?其实我可以讲得很直白,这个跟游戏有一点关系。它会有客户端,也可能会有服务端。客户端其实跟游戏开发是非常类似的,开发过游戏的同学们可能会比较熟悉服务端,服务器、数据库的调用、高并发服务器的通讯协议。服务端去控制客户端的内容,通过5G传输的方式,还增加了现场拍摄推流的内容和技术实现,整套就实现了这次世界人工智能大会云端的会场。

由于今年疫情的关系,很多海外的用户,以及国内用户都难以举办线下大会,如果一场本来可能有5000名观众参与的会议,今年可能只有300名观众会到场,剩下的几千名观众只能在线上开会。我们如何去互动呢?这是一个问题。
像以前,我们会想办法进行线上开九宫格的互动方式,就像我们的Zoom系统、腾讯会议系统。如今我们想借用游戏技术来呈现一种虚拟仿真沉浸式的会议现场,这就是交给了我们一个难题,如何使用我们的3D引擎来打造这样一个会场。
我们在这个过程当中就想到了使用游戏引擎平台,游戏引擎平台的呈现效果会很好。很多同学关心三维制作、后期合成、游戏开发、软件开发,包括后台开发。我们把这些东西拿捏起来,似乎就能融合成一个非常大的整体,我们就去这么尝试了。
接下来我放一段视频,关于我们这次的一个云会场,这是在全3D环境里面一种比较仿真的实施会议系统,它跟游戏很像,但是跟游戏的区别在于实时直播流信号的交互。我们把很多东西拿捏起来,里面有聊天系统、聊天会议、实时流信号传播。你们在大屏上看到的所有的直播信号,都是当天在人工智能大会上所发生的一切。
你们看到的很多虚拟角色,由我们三维软件所打造,包括你们熟悉的MAYA、3D MAX、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引擎,但是画质相对较弱。以前包括我们曾经有很多同学用过cocos 2d系统,cocos 2d系统有3D的成分在,但是也是比较弱的。我们把Unity 3D的技术植入到Web页面当中,是不是最终能交付一个非常好的页面效果?答案是可以的。使用Unity WebGL的技术可以实现这样的效果。
我刚才讲到,我们为什么要把Unity走向极限?所谓走向极限,我所讲的不是AAA级游戏的极限,AAA级游戏极限是在同台竞争,比如用PS5或者Xbox,我上面开发一个游戏,你可以把HDRP、URP一切所有的效果光线跟踪全部开出来,在WebGL当中能不能这么做呢?对不起,这一切都不可以,完全不可以!
怎样去弥补,怎么能更好地去体现或者说我们去补足这一些丢失呢?我们就需要用各种手段,在WebGL里面。据我了解,在Unity WebGL这个板块用的用户不如开发APP的这么多,我们怎么去实现沉浸式实现的效果?
首先我大致介绍一下虚拟云观众,前面大家也看过宣传片了。比如说先打造一个会议室,在会议室里面同时能容纳250名观众。我们每个观众都有自己的视角,也就是说什么呢?大家玩过第一人称游戏,我自己的夜间视角能像射击游戏一样看到对方是什么样子。我坐在不同位置上,就像电影院一样看到的视角是不一样的。有些人问视角不好怎么办?对不起,谁让你买了这个票呢?我们还原了这样的效果,大家一起坐在电影院看直播、看综艺。

同时我们也进行了阿凡达系统的打造。很多熟悉Unity的朋友都知道,阿凡达系统在Unity系统当中是动画系统。我所讲的阿凡达系统跟这个概念不一样,每一个现场看到的虚拟角色背后都是有一个真人注册登陆的。你背后的角色,可以互相之间交流,可以互相打招呼,可以互相聊天,这一切都可以。
我们也可以根据客户的要求定制,会有更多的动作。哪怕以后做个综艺节目,有一个用户在台下走到台上跳舞都可以。或者做一场拳击赛,两个用户在上面打拳击也可以。所有的动作设计,都可以根据用户来定制。
有了聊天室、互动和各方面的呈现,然后我们还有一个推流的直播。在大屏上,我们有实时推流系统,而且是低延迟的,所以直播所有的内容环节大家是能同步看到的。这个问题又带来了,大家知道我们的很多APP软件,或者是H5上的,或者是很多网站上的,比如说看优酷、B站等,我们这些推流系统是一种普通的传统推流。那么怎么在Unity里面进行推流?也就是说我们再讲深入一点,如何把这些推流的内容转化为shader贴到Unity的模型上去?这是一个问题,而且是实时的。更难的是,如果试过在APP中进行推流的同学,觉得这有什么好难的,我们马上能实现。你能不能在WebGL界面的模型再进行推流呢?这是一个难点。

经过我们和Unity公司的很多技术专家一起探讨,最终实现了实时推流效果,这是在WebGL当中实现的,而不是在APP当中实现的。也就是说,大家拿一个手机,可以直接用手机打开浏览器观看,也可以在家中打开浏览器观看,你可以在平板上打开浏览器观看。我只要给你一个HTTP网址就行了,你的注册、登陆全在里面实现就可以。
我们以后会进行2.0版本的迭代,还有很多的拓展。比如说在聊天过程当中能不能有自己的名片功能,每个阿凡达,每个角色代表我自己,我是实名注册。我把名片发给客户,那些人就知道你是谁。或者有些客户您根本不认识,你在里面可以像QQ、微信一样聊天,我们把所有的内容就全部捏合了,而且捏合在WebGL系统里。

Unity系统不单单能够做手游、电影,更重要的是能够做高端网页。而且把高端网页现在有限的技能发挥到极致,因为能够兼顾到所有手机。大家知道手机的GPU性能是远远不及独立显卡的,我们为什么能跨平台呢?源于WebGL非常轻量化,但是性能一定会比端游有所损失,我们如何优化?稍候会讲,会把技术细节跟大家介绍。
这里罗列了虚拟云观众项目的情况,可以多方面的定制,然后各种聊天、应用、答卷,可以植入答题功能,这就是将来的拓展。然后所有的角色、大屏幕,包括虚拟舞台都可以进行定制,只要大家有三维制作能力、三维建模能力、三维贴图能力,在引擎里面进行Material的制作,或者角色动画的制作,会打关键帧动画,导入动画以后进行蒙皮,进来了以后可以在WebGL当中去呈现这样的内容。

最后就是当我们完成这个项目以后,还有大数据分析、数据统计,这一点对用户来讲也非常重要。比如说有位嘉宾在上面演讲,每个观众可以在“台下”进行虚拟鼓掌,可以献花,这些都是数据。事后会议结束以后,这些数据拿出来就是一个成熟的数据分析资源,这一点也是非常重要的。
下面就是我们这一次使用的功能和优势的体现,大家做过互联网编程或者网络工程这一块的都知道,WebGL可以实现快速加载,可以在多平台进行发布,不需要下载APP软件。而且我也可以提供相对精致的效果,相对于平时的网页、H5页面,我相信WebGL以后一定将是动态网页的转折点。

网页一直在升级,从最早的flash到H5,现在到WebGL,我觉得这是一个趋势,而且效果会越来越好。这就是我们今年参加的世界人工智能的分会项目,我们同时都使用了WebGL技术,全平台使用Unity打造。
接下来,我会详细介绍一下在Unity工程文件中的操作细节,这部分我相信广大网友也是比较感兴趣的。
请大家看一下我们现在的,今天我也录了一个屏,给大家直观介绍Unity爱好者是怎么在引擎当中去实现效果。首先在网页设计摒弃了前端H5设计环节,所有的UI全部在Unity中完成,我觉得这个是一步到位非常方便的。我们使用的UI系统,很多人会问到底要用什么?其实不需要用什么插件,UGUI就能搞定了。搞定发布出网页,网页一样能支持。因为我现在不是网页版本,大家知道网页版本都要部署环境的,所以我这边就是把工程文件直接打开。
由于世界人工智能大会这一块结束了,今天的后台服务已经关闭了,暂且先做了一版离线版,离线版不需要注册登陆就能进。我给大家看一下模拟环节,进去以后进行注册。大家记住,这里面又有互联网的开发环节,就是你们在Unity里面开发完界面开发,我们叫前端开发,然后所有的数据要传到后台。
在这里我停顿一下讲一些细节,不管了不了解这一块的同学们,大家知道这个跟单机游戏不一样,因为牵涉到互联网环节。我们这个项目属于B/S开发,也就是BS开发。BS开发的特点是后台跟前台分离,后台其实需要服务器,现在所有注册、登陆的跟互联网页面开发是一模一样的。当我注册进去以后,通过数据库存储,可能要过一层PHP,我把这些数据全部存储到动态网页,由动态网页分存储到数据库当中,以后再拿出,我就能检索到用户是不是已经登陆,这是一套常规操作。
我们再继续下去。
因为我是脱机版本所以就不需要验证了,Unity WebGL在这一块做的非常不错,大家知道WebGL跟我们现在传统的APP开发有个最大的不同在于,它的底层属于JS环节,因为它是网页。
大家在开发UnityAPI的时候很多用的是C#,C++作为Unity的后台也是支持非常好的,我们可以使用动态库进行调用。
如果你要用WebGL进行开发,一定要用JS这样的底层,普通的API调用一定会转译成JS。但是在基础工作当中,或者是一些干外挂的,你所编写程序一定是JS支持的。比如说二次开发,都是以JS为底层。就是因为以JS为底层,我们能很方便地支持JS Library,可以做JS的库,方便Unity调用。你说Unity到底能支持几种语言?我的回答是能支持很多种语言,因为C++支持,C#也支持,JS其实也是支持,只是套了一层C#的外壳,底层还可以编译成JS,这样就通了。然后又保留了很多JS接口和PHP的接口,我在WebGL、Unity里面能很方便地调用PHP接口进行数据库的存储操作。
下面到了我们这边的模型环节,我们的设计师做了一些模型。这些模型都可以进行自定义,大家看为什么是简模?这个模型为什么做简模?当时是考虑到跨平台性。即使你在桌面,如果在电脑上放的话,面数支持的非常多。如果在手机上放,过多的模型会对WebGL产生更多的压力,导致不顺滑。因为WebGL所采用的OpenGL,或者说所用的显示机制不一样,我们不能像使用APP那样随心所欲,当然也不能叫随心所欲,APP承载的浮点运算应该是远远高于WebGL的,所以在我们的WebGL当中,一定会进行适度的优化。我们会把这个面数尽可能地做得相对更少,来呈现人物形象,当然这可以是卡通的,也可以是仿真的。
进入房间,我们开启了今天的游戏分论坛。进去之后,我们就能点座,选中一个座位,然后就能坐进去了。现在是整套流程,进去以后大家会发现里面有很多人。这是一个介绍,把提示框关了以后,大家所看到的就是云会场的全景。所有的角色,其实就是现场。身边可能是你的同事、你的家人、你的朋友,或者你根本不认识的人,也可能是海外观众。你可以跟他打招呼,而且我们是动态实时的。
我现在是脱机版,其实这边是没有人的,我现在是做了假人放进去。在真实场景中,会有很多人在里面,我们可以进行实时聊天。
大屏上放的是我刚才所讲的实时推流技术,这一切都是在我们的页面中完成的。对于我们整个WebGL页面端的显示的负担压力还是比较大的,我这边就跳转了,大家看一下整体环境的打造。
这边是一些模型的导入,UGUI就不在上面了。每个角色模型,在右下角大家都能够看到。
我们通过FBX的导入进来,用传统方式就行了,不需要把骨骼全部分开。我们要保证所有的面都是有效的,因为这个面数非常讲究,远远要比APP开发的多边形的数量更讲究。也就是说,如果我们转为开发APP,我可以有十倍以上的多边形数量,我把它加载上去,但是在WebGL中不能这么多。但是我们的需求,比如做200人、500人,就会适当减面。
这又是我们另外一个技术要点,做过TA、美术的同学可以注意一下,你们很了解的UV展开的贴图。我刚才讲到在WebGL中,做HDRP、URP全部没用,无效!而且如果超过三盏以上的点光源,效果就会丢失。大家刚才看到我这里面所有呈现的效果,我在场景中只打了一盏光源。场景中基本上是没有光的,大家为什么能够看到有光效呢?而且我这盏光源只是对人物、人物的阴影有效,其他都是无效的。我们用了烘焙技术,很多同学应该了解烘焙技术,这样我可以不借助光源,甚至把整个场景的光源全部删了,用烘焙技术一样能还原比较高质量的视角效果。但是条件非常苛刻,在WebGL条件中是比较苛刻,连我实时的动态光照或GI效果都开不出来,我们的反射、折射都很难开出来,而且开的效果不好。我索性把这些全部关掉,我们就做模拟反射,全部最后烘焙出来。
在我们的WebGL虚拟云观众的项目中,融合了很多技术,这里面既有互联网技术,又有游戏开发技术,还有很多CG技术,它是一个集大成的项目。包括这边的贴图,我们全部使用了烘焙。其实就是把它拆分得非常细腻。实际操作大概就是这样。
我们在其中实现的几个突破,首先就是简模的建模,包括光效只能打一盏灯光,超过三盏就无效,我甚至都阴影都不敢打,那我们怎么去节省光效,那怎么去模拟阴影、烘焙阴影?除了人物在动态的时候,我们用动态阴影,动态阴影需要实时光照打。所谓的静态阴影,全部使用烘焙技术来做,包括粒子效果,所有的流程要重新走一遍,不能按照传统的APP或者EXE来制作,包括流信号嵌入。还有主持人,大家看到有一个主持人,刚才的主持人也是实时流信号推入进来的,线上有一个真实主持人。每一个人的角度看到主持人不同的视角,不是一个简单的贴片。我在左边能够看到主持人的侧面,在前面能够看到主持人的正面,这也是我们独自开发的比较新的技术。

最后想讲的是,很多玩家、开发者如果对游戏感兴趣的话,我觉得你们也会比较关心虚拟角色在角色互动帧同步这一块。对于WebGL来讲,一样是可以实现帧同步的。所谓的区别在于,比如说是不是一定要WebSocket做服务器呢?当然肯定是需要,因为传统的服务器不一定能用。因为我在前端的接口,需要跟WebSocket相连接。至于帧同步的逻辑,或者以后状态同步的逻辑,都可以通过相同逻辑来写,这是没有的问题的。但是在JS层面上跟后台的帧同步服务器相连。
对于SMT公司来讲,我们以后的拓展将是把SMT云制作,加上人工智能系统、虚拟云观众、5G通讯技术,把它们融合在一起,打造一个全新的会议一体化解决方案。这样的东西,我觉得能称为互联网1.5或互联网2.0,我非常看好这一块。因为将来一定是一个虚拟的世界,我们所看到的淘宝网其实也是虚拟世界,在虚拟买卖。但是你能不能实现人走进去呢?我觉得大家可以思考一下。以后的世界是虚拟的,我们需要更高的同步、更大的带宽、更快的传输速率,把整个东西拿捏在一起,就能引来新一轮的互联网革命。

接下来还有点时间,我想介绍一下跟这次云会议不一样的东西,SMT早在前两年,我们就专门为各大电竞赛事,包括今年的S10英雄联盟也由我们公司承办。我们其实也承办了很多电竞赛事的开幕式、开场秀,包括比赛期间的一些数据的呈现。现在大家看到的,就是我们前几年基于Unity平台打造的专业的AR、VR虚拟引擎跟踪系统。其实我觉得我们应该是国内第一家,所有其他系统都是国外开发的,而且是使用大家众所周知的友商引擎,使用Unity引擎是首次。大家看到画面效果是非常不错的。
在这个过程当中,我们就又实现了诸多突破,大家所看到现在的效果,我们融合了很多技术。比如说Almebic的导入、流体的制作,在虚拟呈现当中全部能实现出来。现在这是《王者荣耀》国际版AR的呈现,我们在比赛中的呈现。这是我们的“吃鸡”开幕式。大家看到的所有画面全部用Unity来打造,我们是开发了虚拟的呈现和跟踪系统,包括我们的数据版、比分版实时数据的拾取,包括综艺节目,比如现在所看到的苏宁电器的综艺节目,东方卫视播的。
Unity到底能做多少事?非常多,综艺、电竞、娱乐、游戏这些板块全部能实现。
今天的分享大概到这里,谢谢大家。
0条评论

问
AI
全新AI功能上线
1. 基于Unity微调:专为Unity优化,提供精准高效的支持。
2. 深度集成:内置于团结引擎,随时查阅与学习。
3. 多功能支持:全面解决技术问题与学习需求。

问
AI