團結(jié)引擎通過其強大的可編程渲染管線支持全平臺的通用渲染管線(URP)和 PC、Mac、Linux、Xbox 及 Playstation 的高畫質(zhì)渲染管線(HDRP),并包含后處理和按需渲染功能。目前,HDRP 主要用于游戲開發(fā)中。我們也在將 HDRP 的高端性能,如物理光照更高級的材質(zhì)表現(xiàn),以及光照模型遷移到車機環(huán)境中。 對于URP 而言,其本身也能實現(xiàn)非常好的效果,3.5 版本的效果就是全部基于 URP 實現(xiàn)的。
Unity 已經(jīng)包含了非常靈活的 UI 系統(tǒng),既可以用來做 2D 的 UI,也能實現(xiàn) 3D 的 UI,甚至可以將 2D 的 UI 放在世界坐標中讓它看起來像 3D 的 UI。為新世代的車機 HMI 提供全新的三維互動式UI體驗。
Unity 支持可視化編程,降低了開發(fā)難度。只需采用“拖拉拽”的方式,調(diào)用現(xiàn)成的模塊就可以實現(xiàn)相應功能。這套工具完全能夠勝任車機 HMI 交互式功能的開發(fā),除非面臨多車機信號處理的復雜場景。在處理其他更復雜的邏輯時,可以配合用 C# 的語言解決,甚至可以將基于 C# 語言編寫的代碼封裝成代碼塊,直接在可視化編程中使用。
新版本加入了老版本沒有的 Shader Graph 可視化著色器編程系統(tǒng),同時提供更完善的可視化 Shader 編程工具。迭代速度更快,支持的功能更多。目前,許多技術美術行業(yè)的從業(yè)者大部分在使用 Shader 可視化編程工具。
粒子系統(tǒng)能夠為3D場景和物體增加更豐富的效果。Unity 的粒子系統(tǒng)可以實現(xiàn)高質(zhì)量的粒子特效,如香氛、下雨、下雪等。
可以靈活支持動畫狀態(tài)機。適用于各種場景,如車門開關。還可以直接在 Unity 中進行添幀,并配合 Client 工具,更好地管理動畫的 animation clips。
Profiler 也包含在團結(jié)引擎之中。它有兩種模式:一種與引擎同步運行,另一種是獨立運行的 Stand along 模式。在車機領域,Unity 能提供更多的 Profiling 的工具,如在 QNX 平臺上,團結(jié)引擎也能提供相應的 Profiler 工具。
HMI 項目開發(fā)工作流程順序依次為 2D 的設計,2D 轉(zhuǎn) 3D 動效。而由于實時渲染系統(tǒng)本身具備賦能交互的能力,這意味著只需要將 2D 設計轉(zhuǎn)換成可交互的 3D 設計即可,但這一轉(zhuǎn)換過程并非一蹴而就,需要使用多種工具。
在這設計團隊工作流中,設計團隊生成后續(xù)的動效,如一鏡到底的轉(zhuǎn)換是通過什么樣的軌跡完成?特效看起來如何?這些中間態(tài)過程,對后續(xù)的 3D 美術和技術實現(xiàn)具有良好的參考價值。
圖中的第三環(huán)與 3D 美術與美術團隊有關,主要工作是處理模型、貼圖,以及 DCC、CFD、blender 等軟件,實現(xiàn)面向可使用資產(chǎn)轉(zhuǎn)換。在技美實現(xiàn)流程中,主要是嫁接前面的動效和美術資產(chǎn),使其在引擎中保質(zhì)保量地運行。目前,Unity 的轉(zhuǎn)化率能達到80%~90%,如果不采用該流程,效果轉(zhuǎn)化率只能達到 50%~60%。
在程序開發(fā)、測試優(yōu)化、打包工作流程中,加入了兩個持續(xù)迭代的大環(huán)。因為持續(xù)迭代對于實時渲染項目非常重要,這由于在開發(fā)實時渲染互動式應用時,不能像 DCC、Maya、CFD 軟件那樣,直接呈現(xiàn)效果。但對于交互式內(nèi)容而言,通常情況下,在測試優(yōu)化或程序開發(fā)階段,會面臨突然發(fā)現(xiàn),一旦素材完成替換,整個場景幾乎瞬間變?yōu)槌善贰?/p>
下圖是上圖的擴展。圖中的 Plastic 是 Unity 自帶的的版本控制工具,Unity 工程的特點,是素材文件非常大,例如一個車模至少幾十兆,甚至上百兆。在這種情況下,進行迭代和版本控制必不可少。使用 Plastic 優(yōu)勢在于,它在上傳和大型二進制文件時,速度很快。同時,Unity 也會提供 SVN、gate 等版本控制工具。此外,Unity 還提供了云真機服務和 UPR 性能測試服務。
對于是 HMI 開發(fā)架構(gòu),用一個關鍵詞表示就是——return 驅(qū)動不同的畫面渲染。
在實現(xiàn)設計成可在車機應用上運行過程中,實際的畫面是由不同的部分組成的,例如空調(diào)溫度、座椅控制、車模顯示以及底部的數(shù)字等。傳統(tǒng)的做法是一個場景包含所有元素,但效率很低。
實際上,并非所有畫面都需要實時渲染。例如,車模需要持續(xù)渲染,而靜態(tài)畫面則可以停止更新。此外,關于畫面的分割,可將 Unity 的渲染結(jié)果嵌入到安卓原生環(huán)境中,傳統(tǒng)方法會被限制于全屏單一層次的顯示,而無法做到多層疊加。例如,如果需要在全屏顯示動態(tài)數(shù)字,傳統(tǒng)方法會很復雜。但是通過 URAS 的方法,只需要渲染畫面的 5% 部分,這讓屏幕上的元素放置和動畫制作變得非常靈活和簡單。
在實現(xiàn)設計成可在車機上運行的應用的過程中,我們最關心的是如何高效渲染。如圖所示,團結(jié)引擎基于 Unity 2022 LTS 版本開發(fā),特別支持 QNX 平臺、HMI 安卓,后者與普通安卓平臺有所不同,HMI 安卓提供 URAS 程序架構(gòu)能力,目前,已有用戶通過 Unity 開發(fā)具體項目,如團結(jié)引擎已經(jīng)成為車機平臺的首選。
對于如何將 Unity 項目轉(zhuǎn)移到團結(jié)引擎,Unity 提供了Unity Hub,用戶只需安裝團結(jié) Hub 即可。在 Unity Global 版本中,QNX 平臺也得到了有限支持,而對于團結(jié)引擎的支持更加全面。使用老版本的 QNX 平臺,可以平滑過渡,如果在 Unity Global 版本中使用安卓開發(fā)車機應用,安卓將轉(zhuǎn)移到團結(jié)引擎中完全可行。但若使用針對車機定制的 HMI 安卓,則需要一定的學習成本。此外,圖中的資源商店的插件和自定義插件需要一定的適配,測試顯示,資源商店中的插件基本可以在團結(jié)引擎中運行。
下圖展示了單個 Render Service 架構(gòu)圖,以及如何與安卓結(jié)合?如何獲取數(shù)據(jù)源數(shù)據(jù)?
下圖展示的是傳統(tǒng)方式和 Render Service 方式性能的對比。最顯著的區(qū)別在于CPU 和內(nèi)存性能的提升,GPU 保持不變,啟動時間也有顯著優(yōu)化。如果使用自帶的團結(jié)引擎,這一切都將是內(nèi)置功能。在進行多屏開發(fā)時,如果需要同時測試第三塊屏幕,可以在編輯器中自定義所需的寬高比和分辨率。