技术总监详解:怎么用 Unity 引擎技术开发智能座舱 HMI 相关应用

embedded/2024/10/9 13:17:35/

想象一下,当启动车辆,眼前的屏幕瞬间点亮,呈现出一个逼真的 3D 城市景观,无论是清晨的第一缕阳光穿透云层,还是夜幕降临时霓虹灯下的繁华都市,都能够通过细腻的光影效果展现在眼前。3D HMI 方案提供直观、立体的三维交互体验。高度仿真不仅让驾驶变得更加有趣,同时也帮助驾驶员更好地理解车辆周围的情况,增强了驾驶安全性。

在 Unite Shanghai 2024 智能座舱专场演讲中,Unity 中国平台技术总监杨栋分享了《Unity 智能座舱 HMI 开发流程》,介绍如何使用 Unity 引擎技术开发汽车智能座舱中的 HMI 相关应用。

本文为演讲实录。

HMI 项目的产品呈现形式可能是中控、仪表、多块屏幕互动,可穿戴设备(手表、头盔)等多种场景,这些前瞻性的场景正吸引着越来越多的探索者。Unity 自主开发的 Demo3.5,是一款基于高级技术和美术效果的 Demo,可以在搭载高通第四代座舱芯片骁龙 8295 平台上做实时渲染,目标价值是让我们看到利用 Unity 做出写实画质的成效。

下图从简单到复杂展示了用 Unity 开发 HMI 项目的流程,这些流程同样适用于仪表或多屏系统。

如图所示,Demo3.5 的基础是 Demo1.0 版本。这个 Demo 成为了 Unity 开发 HMI Demo 的起点,后来我们逐渐推出了 2.0、3.0、3.5、4.0 版本,每个版本都展示了不同的功能和发展方向。在这个行业中,团结引擎是一种非常新颖的工具,没有现成的成熟规范,所以整个过程都是一次探索。我们的目标是通过不断的努力和探索,分享一些有价值的成果。目前,我们正在规划 Demo 5.0,计划在明年的上海车展上向大家展示。

在 Demo3.5 版本的演示视频中可以看到非常多熟悉的元素,包括车模控制,3D、2D 控制、光影效果、自定义车漆、空调效果,以及利用 2D 控件控制温度、香氛、仪表设计等。

在开发阶段如何实现这一过程?我将分为四部分为大家讲解阐述。

HMI 产品定义与功能实现

Unity 的引擎具备实现上图六类功能的能力,这些功能已经在量产车上实现。

  • 4D 动态壁纸:能够实现如日夜变化、下雨、下雪、结冰等不同的配套天气效果。用户可以在屏幕上直观地感知车辆所处的真实环境,以及车辆的状态。我们把它定义为 Unity 本身“可见即所得”的场景编辑器,这也是 Unity 最出名的功能之一。事实上,用任何非可视化的工具生产内容时候,最大的困扰是观察不到最终结果,但使用 Unity 实时渲染的引擎,却几乎可以直观看到最终的结果,且所有结果都可以进行快速迭代。

  • 全场景的一镜到底:“一镜到底”涵盖了车辆内外环绕的场景,甚至可以延伸到驾驶员平常接触不到的部分。例如,可以将镜头拉得很远,通过感知数据与车模配合,观察到肉眼感知不到的地方。

  • 车控车设自然交互:这一功能基于 3D 技术实现的优势是直观。事实上,几乎 99% 以上的人都是“视觉动物”,所以 Unity 提供了一个实际可触摸的界面。今后,Unity 也将基于客户提出的需求,积极探索更多交互方式,包括采用AI技术实现手势识别、空中操控 3D 的控件等,都将陆续出现在 HMI 平台上。

  • 香氛调节:通常情况下,在车辆内部放置香氛,除了闻到的那一刻,一般无法感知它的具体状态。我们使用引擎中粒子效果和实时渲染技术来实现这一功能,能使驾乘人员对车内香氛功能有切实的感官反馈。驾乘人员可以通过匹配用不同的颜色、传播速率、飞行的速度,加强其直观的感受。

  • 自定义车漆:这一功能的设计体现了 Unity 实时渲染引擎的极高灵活性。面对底漆、金属漆、轻漆等繁多的车漆种类,在更多图层上,都可以运用 Unity 自带的 PBR 的渲染系统,同时可以采用 Shader Graph 的方式进行 Shader 的编程。事实上,团结引擎拥有一整套“车漆库”,可以适配各类 HMI 项目的需求。

  • 座舱特效:特效具备多种自定义的可能性,从基础技术实现的角度看,主要涉及粒子效果、Shader 效果,以及座椅加热效果等,这些效果的实现并不需要其他特殊能力,都可以通过团结引擎的基础子功能实现。

同时,Unity 还能实现对于颜色的自定义。

在设计 Demo 的过程中,Unity 使用了快捷的开发方式。在测试 Demo 性能时,可以利用快捷测试面板,关闭不需要的元素,以查看具体的性能影响。

在场景中开发动画相关功能时,可针对场景内物体动画参数进行调整,大大加快整个开发流程。

Unity 本身包含的定制化摄像机动画参数调整功能,对于设计人员而言非常方便。如果没有这类控件供设计人员使用,很多效果则需要反复与开发团队沟通,开发人员也需在代码中写死这些数值,增加了沟通成本。

Unity 引擎能力

Unity 是一款跨平台引擎,覆盖广泛的市场。

以下九条具体功能,是基于用户需求,利用 Unity 引擎实现的。

  • 可编程渲染管线:团结引擎通过其强大的可编程渲染管线,支持全平台的通用渲染管线(URP),和 PC、Mac、Linux、Xbox 及 Playstation 的高画质渲染管线(HDRP),并包含后处理和按需渲染功能。目前,HDRP 主要用于游戏开发中。我们也在将 HDRP 的高端性能,如物理光照更高级的材质表现,以及光照模型迁移到车机环境中。 对于URP 而言,其本身也能实现非常好的效果,3.5 版本的效果就是全部基于 URP 实现的。

  • 3D UI 系统:Unity 已经包含了非常灵活的 UI 系统,既可以用来做 2D 的 UI,也能实现 3D 的 UI,甚至可以将 2D 的 UI 放在世界坐标中让它看起来像 3D 的 UI。为新世代的车机 HMI 提供全新的三维互动式UI体验。

  • 无代码开发:Unity 支持可视化编程,降低了开发难度。只需采用“拖拉拽”的方式,调用现成的模块就可以实现相应功能。这套工具完全能够胜任车机 HMI 交互式功能的开发,除非面临多车机信号处理的复杂场景。在处理其他更复杂的逻辑时,可以配合用 C# 的语言解决,甚至可以将基于 C# 语言编写的代码封装成代码块,直接在可视化编程中使用。

  • 丰富的光照系统:这与特效密切相关。

  • Shader 开发系统:新版本加入了老版本没有的 Shader Graph 可视化着色器编程系统,同时提供更完善的可视化 Shader 编程工具。迭代速度更快,支持的功能更多。目前,许多技术美术行业的从业者大部分在使用 Shader 可视化编程工具。

  • 粒子系统:粒子系统能够为3D场景和物体增加更丰富的效果。Unity 的粒子系统可以实现高质量的粒子特效,如香氛、下雨、下雪等。

  • 动画系统:可以灵活支持动画状态机。适用于各种场景,如车门开关。还可以直接在 Unity 中进行添帧,并配合 Client 工具,更好地管理动画的 animation clips。

  • 性能分析的调试:Profiler 也包含在团结引擎之中。它有两种模式:一种与引擎同步运行,另一种是独立运行的 Stand along 模式。在车机领域,Unity 能提供更多的 Profiling 的工具,如在 QNX 平台上,团结引擎也能提供相应的 Profiler 工具。

  • 支持移动端主流图形 API:能够支持近 30 个计算平台创作实时渲染互动式内容。

HMI 开发流程

HMI 项目开发工作流程顺序依次为 2D 的设计,2D 转 3D 动效。而由于实时渲染系统本身具备赋能交互的能力,这意味着只需要将 2D 设计转换成可交互的 3D 设计即可,但这一转换过程并非一蹴而就,需要使用多种工具。

在这设计团队工作流中,设计团队生成后续的动效,如一镜到底的转换是通过什么样的轨迹完成?特效看起来如何?这些中间态过程,对后续的 3D 美术和技术实现具有良好的参考价值。

图中的第三环与 3D 美术与美术团队有关,主要工作是处理模型、贴图,以及 DCC、CFD、blender 等软件,实现面向可使用资产转换。在技美实现流程中,主要是嫁接前面的动效和美术资产,使其在引擎中保质保量地运行。目前,Unity 的转化率能达到 80%~90%,如果不采用该流程,效果转化率只能达到 50%~60%。

在程序开发、测试优化、打包工作流程中,加入了两个持续迭代的大环。因为持续迭代对于实时渲染项目非常重要,在开发实时渲染互动式应用时,不能像 DCC、Maya、CFD 软件那样,直接呈现效果。但对于交互式内容而言,通常情况下,在测试优化或程序开发阶段,一旦素材完成替换,整个场景几乎瞬间变为成品。

下图是上图的扩展。图中的 Plastic 是 Unity 自带的的版本控制工具。Unity 工程的特点是素材文件非常大,例如一个车模至少几十兆,甚至上百兆。在这种情况下,进行迭代和版本控制必不可少。使用 Plastic 优势在于,它在上传和下载大型二进制文件时速度很快。同时,Unity 也会提供 SVN、gate 等版本控制工具。此外,Unity 还提供了云真机服务和 UPR 性能测试服务。

在不久的将来,还将推出有关 HMI 技术的书籍。

HMI 开发架构

对于是 HMI 开发架构,用一个关键词表示就是—— return 驱动不同的画面渲染。

在设计成可在车机应用上运行的过程中,实际的画面是由不同部分组成的,例如空调温度、座椅控制、车模显示以及底部的数字等。传统的做法是一个场景包含所有元素,但效率很低。

实际上,并非所有画面都需要实时渲染。例如,车模需要持续渲染,而静态画面则可以停止更新。此外,关于画面的分割,可将 Unity 的渲染结果嵌入到安卓原生环境中,传统方法会被限制于全屏单一层次的显示,而无法做到多层叠加。例如,如果需要在全屏显示动态数字,传统方法会很复杂。但是通过 URAS 的方法,只需要渲染画面的 5% 部分,这让屏幕上的元素放置和动画制作变得非常灵活和简单。

在实现设计成可在车机上运行的应用的过程中,我们最关心的是如何高效渲染。如图所示,团结引擎基于 Unity 2022 LTS 版本开发,特别支持 QNX 平台、HMI 安卓。后者与普通安卓平台有所不同,HMI 安卓提供 URAS 程序架构能力,目前,团结引擎已经成为车机平台的首选。

对于如何将 Unity 项目转移到团结引擎,Unity 提供了 Unity Hub,用户只需安装团结 Hub 即可。在 Unity Global 版本中,QNX 平台也得到了有限支持,而对于团结引擎的支持更加全面。使用老版本的 QNX 平台可以平滑过渡,如果在 Unity Global 版本中使用安卓开发车机应用,转移到团结引擎中完全可行。但若使用针对车机定制的 HMI 安卓,则需要一定的学习成本。此外,图中的资源商店的插件和自定义插件需要一定的适配,测试显示,资源商店中的插件基本可以在团结引擎中运行。

HMI专用渲染服务 - URAS

对于 UAAL,有一点值得强调,虽然大家看到的通常是单个 Render Service,但实际上,Unity 也可实现部署多个 Render Service。并非单一 Render Service 支持多个应用的渲染能力,就意味着只能用一个 Render Service。

下图展示了单个 Render Service 架构图,以及如何与安卓结合,如何获取数据源数据。

对于多个 Render Service 的配置,其基本模式与单个 Render Service 保持一致。但从产品实现的角度来看,部署多个 Render Service 有其优势。例如,可以将关键应用分配到一个 Render Service 上,而将娱乐相关应用分配到另一个 Render Service 上。无论是单个还是多个 Render Service,选择的可能性都很多。对于 Render Service 的选择,应基于需要的功能类型,以及希望通过哪些不同的 Render Service 或单个 Render Service 支持的功能数量。

下图展示的是传统方式和 Render Service 方式性能的对比。最显著的区别在于 CPU 和内存性能的提升,GPU 保持不变,启动时间也有显著优化。如果使用自带的团结引擎,这一切都将是内置功能。在进行多屏开发时,如果需要同时测试第三块屏幕,可以在编辑器中自定义所需的宽高比和分辨率。

此外,我们也会为用户提供实例工程、示例代码。

团结引擎车机套件是基于团结引擎车机版及相关开发工具打造的智能座舱 3D HMI 应用集合(车模车控、导航智驾、游戏娱乐、3D Launcher 等)支持主流座舱系统和平台,覆盖座舱主要应用场景,并提供一流的视觉效果体验。作为车载应用渲染方案的最佳实践集合,能够有效缩短项目开发周期,降低成本。截止五月,智能电动车品类中超过 85% 的主机厂用 Unity 来打造中控屏、仪表盘。Unity 中国已与 35 家车厂合作,推出了 68 款量产车型。

[1]团结引擎官网:

https://unity.cn/tuanjie/tuanjieyinqing

[2]团结引擎专区:

https://developer.unity.cn/plate/tuanjie-engine

[3]团结引擎问答专区:

https://developer.unity.cn/plate/tuanjie-engine?tab=ask


http://www.ppmy.cn/embedded/125087.html

相关文章

国外电商系统开发-运维系统文件上传-高级上传

如果您要上传文件到10台服务器中,有3台服务器的路径不是一样的,那么在这种情况下您就可以使用本功能,单独执行不一样的路径 点击【高级】上传

TCP BIC 的拟合函数分析

前面说了这么多,还没有对 bic 的数学性质进行分析,本文补上。 tcp reno 完全依赖 ack 时钟以 rtt 为单位线性增窗,增窗速度与 rtt 负相关,如何在 rtt 比较大时增加增窗速度,这就是 bic,以二分替换遍历。 …

ubuntu中挂载点内存不足,分配不合理后使用软链接的注意事项

有时候因为最初挂载点设置的时候没有完美契合现在的空间需求,我们要想对空间进行重新划分,就会收到提示“卸载当前磁盘”或者“当前分区正在被使用”,查到的教程很多是从U盘启动gparted。或者因为只有一个硬盘,只能重装系统。 但…

K8s域名解析方案CoreDNS(K8s Domain Name Resolution Solution CoreDNS)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

PostgreSQL升级:使用pg_upgrade进行大版本(16.3)升级(17.0)

1.pg_upgrade工具介绍 pg_upgrade 会创建新的系统表,并以重用旧的数据文件的方式进行升级。 pg_upgrade 的参数选项如下: -b bindir,--old-bindirbindir:旧的 PostgreSQL 可执行文件目录; -B bindir,--new-…

SQL Server—了解数据库和数据库的创建

了解数据库和数据库的创建 SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。 了解数据库 1. 服务器数据库需要配置几点: 1 …

如何从数码相机中恢复已删除的照片

照片恢复是恢复已删除照片的最佳工具,带有恢复 RAW 照片的选项。在本文中,我们将解释如何检索已删除的照片。 不仅适用于专业摄影师,而且对于像我们这样喜欢捕捉回忆的人来说,Moments 相机是一种重要的数字设备。可悲的是&#x…

[C#]winform部署官方yolov11-obb旋转框检测的onnx模型

【官方框架地址】 https://github.com/ultralytics/ultralytics 【算法介绍】 Yolov11-obb(You Only Look Once version 8 with Oriented Bounding Boxes)是一种先进的对象检测算法,它在传统的Yolov3和Yolov4基础上进行了优化,加…