基于Unity的车载HMI/GUI开发工作流
前言
随着最近这些年车联网的蓬勃发展(特别是新能源汽车的崛起),车机也越来越科技范,界面上也越来越往三维化、全息化发展。这里就以RAMS公司分享的案例结合自己的一些看法来讲解开发工作流。
主要流程分为4部分,分别是:设计,PoC软件开发,VR软件开发,SoC可行性测试,每个前置流程都是为了后续流程能更好的开展,同时每个流程如果发现当前流程不可行,则可以回溯到上一个流程反思。
1.设计流程:
本流程的核心就是设计,原型/概念设计、界面设计、三维模型设计、动画设计。
此流程主要参与角色:UX设计师,UI设计师,3D设计师,动画师。
UX设计师主要工作:
- 通过研讨会、市场调查和易用性调查,来确定需求并制作线框模型。
UI设计师主要工作:
- 根据UX定义开展概念设计、界面设计、平面设计。
3D设计师主要工作:
- 根据UI设计师的概念设计进行建模、打光、材质调整
动画师主要工作:
- 根据UI设计师的设计及3D设计师渲染的图像进行动画制作。
通过以上流程,就完成了下面的成果:
其中,左侧为仪表盘界面,右侧为CID(Car Informatic Device)。
CID显示一些控件界面。仪表盘则显示音乐播放、3D车辆模型的自动驾驶界面。
2.PoC软件开发流程:
PoC(Proof of Concept),即概念验证,通常是企业进行产品选型时或开展外部实施项目前,进行的一种产品或供应商能力验证工作。这里指的是基于设计进行的软件开发用于验证设计的想法。
此流程主要参与角色:UI设计师、3D设计师、前端工程师
在开始之前,为了方便测试,先通过分析信号、改造汽车方向盘,使其能支持键盘控制,方便开发测试。
这样通过真实的键盘、和等同实机的屏幕就可以展开高精度的易用性测试。
UI设计师主要工作:
- 设计软件的UI界面(界面的元素控件:如播放器界面、进度条)
3D设计师主要工作:
- 制作UI中所需的3D元素。
- 优化用于ADAS的模型,减面、重拓扑,以轻量化、2次幂为原则开展贴图作业。
- 调整好材质,载入引擎后根据渲染管线的特点进行调整,如果有不好调整的就返回建模软件中调整,之后再回到Unity引擎中,如此反复,不断提升品质。
前端工程师主要工作:
- 负责复杂的交互内容,如方向盘与软件的通讯。
- 开发简易的界面替换工具,方便UI设计师自行替换查看交互效果。
- 使用TCP/IP协议与CID进行通讯联动。
3.VR软件开发
本流程主要目的是通过VR模拟现实的情况来测试易用性和用户体验。
主要参与角色:3D设计师、前端工程师。
3D设计师主要工作:
- 设计VR的3D环境。
- 优化流程2中的模型,制作整个环境空间,在Unity中调整灯光、材质效果。戴上VR眼镜调整大小参数等。
前端工程师主要工作:
- 开发定制工具组件。使流程2开发的软件能在VR上也能运行。
- 为流程2开发的软件制作镜像,使之能满足VR观看的需求,修改仪表盘、CID的交互(触屏),使之能使用VR控制器进行交互。
- 添加行驶事件、昼夜、车辆(外观、车型)、环境切换等功能。
- 屏幕尺寸、大小、位置在VR中可以调整,优化体验。
4.SoC实机测试
SoC:System on Chip的缩写,称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。这里是指用来测试的某开发板。本流程是为了验证在实际机器上的运行。
主要参与角色:嵌入式工程师,前端工程师
硬件:基于NXP的i.MX8
软件:Unity
嵌入工程师工作:
- 将软件移植到SoC。
- 从NXP官网下载对应i.MX8的安卓OS进行安装,根据WIFI等需要的功能安装相应的模块
前端工程师主要工作:
- 调试版本、发布版本。
- 将输出的版本设置为调试版,安装到SoC上进行测试。使用Unity Profiler、Frame Debuger、Console进行测试与监测追踪问题并修正。
最终成品:
- 通常发现问题时:会通过调整着色器、程序、3D模型等来解决。
- 如果能在较早阶段测试可能性,就可以在流程1中重新研讨设计方案。