Unity Open Day 北京站-工业专场:多场景Unity实例转场:一镜到底
杨丞:各位好,很高兴Unity官方邀请我参加这个开放日,和大家感受最前沿的技术,探索和创新。在滴滴目前可能我从事的部门和工作范围会有一些涉密,我的材料不能涵盖我所做的工作,但是希望今天讲的内容还是能够让大家觉得是有干货的。目前我在职于滴滴,从事技术和管理工作,涉及到3D团队、美术、TA、技术,同时也有前端、移动端和后端,我带的团队有丰富的多样性,其中一个对外可诉的画像就是带团队做一些前沿的探索和创
·
杨丞:各位好,很高兴Unity官方邀请我参加这个开放日,和大家感受最前沿的技术,探索和创新。在滴滴目前可能我从事的部门和工作范围会有一些涉密,我的材料不能涵盖我所做的工作,但是希望今天讲的内容还是能够让大家觉得是有干货的。
目前我在职于滴滴,从事技术和管理工作,涉及到3D团队、美术、TA、技术,同时也有前端、移动端和后端,我带的团队有丰富的多样性,其中一个对外可诉的画像就是带团队做一些前沿的探索和创新,同样把这些亮点或者爆点应用在后续的项目中。
我跟大家介绍一下什么叫一镜到底。一镜到底它是在影视、动画特效中运用的拍摄手法。有两种传统方式,一种是在前期,比如表演演员不NG,一次性从头拍到尾;一种是做后期的处理,让镜头连贯起来,让大家感觉到真的是从开始到结束一气呵成的。
我主要讲的是技术,技术更多是通过控制镜头起伏和落伏的精准度,掩盖瑕疵来实现“一镜到底”效果的。同时,在主体运动的时候要确保核心内容不会被无视,也不会让用户有眩晕感,还要通过后期处理实现颜色等的平滑过渡。
讲了这么多术语和专有名词,我们先看一看今天的内容。这里三张图(涉密),左上角是特斯拉的车模,右上角是导航中的行车图。两张图共同的地方很明显,有车。在使用这类导航地图APP时候,它会建议你输入车牌,可以配合有些城市的交通管制,如单双号等等。假设导航APP里希望用户输入车的品牌,当用户输入品牌后界面上应该出现对应品牌的车模,比如输入特斯拉,导航APP应该出现一个特斯拉的车模。之后当用户输入目的地的时候,直接从车模界面切到右上角的导航界面,开始准备行程出发。
在这里假定车模使用的技术就是Unity,而地图使用技术是一个OpenGL,就存在两种渲染如何通过一镜到底做融合的问题,在融合的过程中如何通过技术手段避免晕眩或瑕疵。我们可能要做一些设计脚本,比如分镜,还要用一些特效软件做动效,然后转给研发同学实现,之后还要做一些参数的调整和打磨,最终交付给用户,做到极致的体验。
我们有一个最简单的技术手段,从3D车模一镜到底到右边导航界面,可以做一上一下的叠加,再通过镜头先将车模做一个曲线的旋转叠加到导航的界面上,当在车模旋转最后一帧和导航第一帧重合的时候再做一个淡出和淡入,这就是最简单的多场景一镜到底。
跟大家简单总结几点,第一刚讲的这两个图片是在单一应用中多场景一镜到底的一个探索,实现两个场景的完美过渡;第二,在技术上使用Unity引擎进行实现。那在什么情况下会有多应用转场这种情况呢?就是智能座舱。
单应用只是前菜,接下来讲硬核的东西。座舱里特斯拉系统是Linux,国内都是安卓。在这之上是用安卓的原生应用开发车舱,还是也用一种引擎全场景覆盖?比如理想L9跟安卓深度融合打造车机体验,包括车模,空调,座椅,ADAS和地图;路特斯用了另外的技术,用了两个芯片。很多车企可能会选择用8155的芯片,极少数用8295,我们要在8155芯片做一镜到底,跟Unity结合。我说的第一种方式,即安卓原生应用和Unity做包括车模、充电、导航、空调座椅吹风等功能,都做了尝试。同样也可以跟车控开发功能做跨应用的融合。
先回到我们的主题,在单应用里讲的是在地图导航APP里模拟两种场景,如果放在智能座舱多应用里就很容易联想到,左上角是P档驻车页,第二个是在导航中或者即将导航的过程;第三张图放了一个中控,空调基本都是从中控前排出风。
三张图就是三个应用,可能有同学会问为什么不能放到一个应用里面去呢?滴滴内部把车模和地图融合以后发现要么是驻车页应用模块不稳定,要么是地图不稳定,可能会带来两个模块相互不稳定,最后崩溃,就会存在两个团队的拉扯,在沟通成本上费时费力,同时上市周期比较长,也会涉及到安全涉密的风险。如果对于其他企业,用的地图就是像百度、高德的SDK,车企要跟地图公司深度合作的话,研发成本、沟通成本、费用成本都会比较大。所以将车模和地图融合,至少我们在这条路上已经探索了大半年,初步做到了可以完美解决车模跟地图的融合,将二者放在一个应用里做到一镜到底,复杂度就会小很多。
但是对空调来说,因为用户可以在任何场景下打开空调,它的层级需要非常高。因此,对于滴滴来说当时做调研的时候,我们就把这三张图中的上面两长图(驻车车模和地图)融合在一个应用,并且把它作为假象中的第一个应用去运行。对于空调来说可能做一个嵌入,让它在任何应用上都可以控制。
讲一下曾经调研时候发现的一个问题,对安卓来说应用和应用之间存在跨界性,用什么方式通信都会有一些延时,会在2到3毫秒左右。同时,当我们做一镜到底的时候,要考虑在车载应用最极端的情况下CPU负载要有保留,为了保护用户安全,还是得有一两百CPU的冗余。同样对于各个应用,比如从导航想进入到空调,这时候如果被打断或者中间某个应用崩溃了,我们该如何做一些补救?如果有同行或者相应团队做调研,这些都是大家不可避免会遇到的挑战。对于多应用来说,如果每一个应用都持有一个Unity的实力,每个应用都加载一次Unity的引擎,对CPU也会有一定消耗。
我跟Unity的团队特别是售前售后团队都有交流,今年推出了一个多应用的解决方案。我们也希望在每个应用里做到极致,如果能跨越性能的负载,我们还会继续选择,只不过目前能够满足一定的诉求。今天三张图开局只是抛砖引玉,给大家一种思路,能够通过以上手法做到单应用、多应用或多视图之间的切换,也希望会后能跟大家和同行多一些学习和交流。谢谢。
更多推荐
已为社区贡献712条内容
所有评论(0)