一个构架 打造全栈式数字座舱极致体验

  Qt提供的图形化工具可以很方便地开发车载数字座舱中图形化界面 。同时Qt for Android Automotive将Qt技术、车载信息娱乐系统以及安卓平台三者进行集成,提供Java API的Qt/C++封装,为开发团队提供易于使用的、可靠稳定的Android IVI的底层接口 。
  作为国际知名软件,Qt已发展了26年,在各行各业都有广泛的应用,公司总部位于芬兰,主要提供图形化开发框架和渲染引擎 。目前,Qt公司在赫尔辛基纳斯达克是上市,每年保持30%-40%的成长率 。
  在汽车行业,Qt服务众多客户、项目,全球有几个标杆性的用户,一个是梅赛德斯奔驰,MBUX全系列的数字座舱系统都是基于Qt平台开发;特斯拉的数字座舱也是基于Qt开发;以及福特、现代等等 。国内的厂商也有较多合作,如上汽大众,广汽等等,Tier One包括延锋伟世通和德赛西威 。
  极致渲染
  Qt本身是非常庞大的体系架构,涵盖桌面的应用程序开发,嵌入式或者智能穿戴都有对应的解决方案 。提供多种开发方式 。在数字座舱上用的比较多的开发方式,一个是基于Qt Quick技术的2D和3D的UI,另一个是Qt支持Web UI,Qt内置的浏览器,可以在Qt界面上嵌入HTML的内容 。
  林斌介绍了最重要的部分——Qt Quick渲染引擎/图形技术 。该技术首先是一种开发语言 QML,它也是一个渲染引擎,可以同时渲染2D和3D内容 。这是Qt和很多厂家的技术不一样的地方,它统一了2D和3D设计工具,设计团队可以很方便地拖拽,把画面组合起来 。
  林斌介绍了Qt展示的流程图/软件架构图是完整Qt Quick技术的渲染总线 。值得一提的是2D的渲染引擎,为什么有独立的2D渲染引擎?是因为2D场景也是由GPU渲染的,但是2D场景的一些需求和3D场景不一样,2D场景会产生大量碎片化的图元,需要对它做一些批次整合,或者做一些性能的优化,它的渲染效率才会大大提高 。总之,如果用GPU渲染2D场景,必须要有这种专业的引擎 。
  除了2D渲染引擎,Qt还提供3D的渲染引擎专门用于渲染3D场景下的内容,它的优化逻辑和算法和2D是不一样的 。Qt能做到2D和3D完整的解决方案 。Qt现在GPU的渲染会基于OpenGL的标准,大多数的软件都是基于OpenGL标准进行开发,但是OpenGL已经算是上一代的架构了,以Vulkan为代表的新一代的技术架构已经有了取代的趋势,未来五到十年,两者会并存 。Qt在引擎的输出部分做了一层渲染硬件接口,不会直接对接OpenGL或Vulkan,而是以插件的形式让用户自由选择,客户可以不修改一行代码,直接通过环境变量切换不同输出 。
  从3D的性能方面而言,Qt可以支持先进的光照算法,基于图片的光照技术(IBL)等技术,满足汽车App的需求 。
  如图,不停旋转的球是另外一个技术——真实物理渲染(PBR)技术,它可以非常高精度的模拟真实的金属或者物体表面的反光情况,还是在那个案例里面,如果有一个car body control的车模,车模表面的反射或者一些倒影都可以用这个技术完全可以实现 。
  Qt可以动态生成顶点,动态生成材质,针对汽车行业很典型的地形生成需求,即ADAS或者一些车载导航的道路周边需要有一些随机生成的地形,Qt完全支持该功能,可以随机生成或者加入一些算法生成地图 。
  Qt后期着色器可以给画面增加一些变化,比如说我整个画面要做一些动态的模糊,或者配合你的主题颜色要做一些变色 。
  在开发当中普遍问到一个问题,车载3D的图形界面对画面的精细度要求非常高,完美度要求非常高,所以Qt Quick也加入了丰富全面抗锯齿的功能 。