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


  Qt提供了非常专业的两个独立渲染引擎,也就是说Qt可以实现在同一个原代码里面既编辑2D又编辑3D,3D和2D控件混合的状态,或者是可以在同一个直角坐标系里面绘制3D和2D的原件,把2D的文字或者照片浮空显示,有一个3D车模或者3D的模型从前到后不停进行穿越 。
  此外,从Qt6.0开始,Qt支持骨骼动画、支持变形动画和3D粒子效果 。
  完整工具链 确保及时高质量交付
  Qt的工具也是非常重要的部分,其提供了业内最完整的工具链 。
  第一,Qt提供了Designer Tools,就是Qt的设计师工具,提供简单的托托拽拽,编辑关键帧就可以实现动画的工具,这是在前面设计端 。
  第二,Qt也提供了Developer Tools,可以用来编写代码、编译和调试 。
  第三,Qt支持自动化的测试工具,Qt有集成自动化回归测试的小工具,这样的话Qt编写一些测试脚本,放在Qt的CI/CD工具里面,这样每开发一次,或者每提交一次代码可以进行完整的自动测试 。从而提高开发结果的质量,也缩短开发时间 。
  Qt的设计工具Design Studio,有几个功能 。
  一是可以支持素材导入 。2D的素材包括Photoshop、Illustrator、Sketch、Figma等,把工具开发出来的UI直接转换成Qt的代码 。
  二是生成了这个场景就可以编辑它的动画,编辑它的状态机,实现简单的场景拼接 。这个版本Qt还对3D开发进行了一些优化,包括它的可视化3D粒子效果的编辑,包括它的PBR高级材质编辑,以及自定义着色器的编辑 。
  Qt的测试工具,细分Qt三个产品:
  第一是Squish,是一个自动化回归测试工具 。
  第二是COCO,代码覆盖率的统计工具,有多少代码是被测试过的,有多少代码是被运行过的,有多少代码是死代码,都可以通过这个工具进行分析,进行优化 。
  第三是Test Center,测试结果管理工具,是一个服务,可以把前面生成的所有测试报告放在这里面 。
  这是Qt测试工具的集合 。
  整合安卓
  十年之前就可以把整个Qt的程序放在安卓上,该产品叫做Qt for Android 。Qt可以用Qt的开发工具去开发安卓的APP,开发出来的程序可以通过安卓的NDK进行编译,打包生成Apk 。
  Qt for Android Automotive可以把整个Qt UI封装成一个Surface,可以内嵌到原生Android Activity显示 。Qt也可以设置它做成系统顶层,这样可以变成一个浮动窗口,浮动在任何界面上 。典型的应用比如一些3D的交互头像,做一些人机对话功能,或者是做一些3D方面的信息推送 。
  另一大类是关于IVI Launcher,IVI桌面系统,安卓用于汽车的桌面开发其实会对桌面有非常特殊的要求,Qt希望安卓的APP变成一个卡片 。一般的安卓APP一旦启动的时候是全屏运行的,Qt想把安卓的APP变成一个窗口或者卡片运行在桌面上,这样Qt就可以在桌面上运行很多很多的APP,用窗口组合形势进行管理 。因此,Qt打造了这个桌面系统,安卓原生的APP一旦启动之后,它变成了一个卡片或者是小窗口运行在桌面上,这个窗口还可以自定义布局方式 。其中运用了Qt窗口管理模块的技术,以及修改了安卓原生,把这个生命周期修改成它可以并行运行的状态 。视频中有四个应用程序,而且这四个都是原生的,窗口也可以拖拽,进行位置或者顺序的替换等等 。
  Qt在安卓上还有另一种方案 。现在数字座舱一般会使用Hypervisor的虚拟机去做操作系统的隔离,资源的隔离,但有些车厂会觉得Hypervisor比较贵,技术支持上还是有些问题,能不能找一个Hypervisor的替代方案?