在虛幻引擎中,Mass Framework是面向數(shù)據(jù)的一種框架設計,而MassAI則是一個具體的用例。
Mass Framework可以分為三部分:MassEntity,MassGameplay,MassAI。
1. Mass Entity
MassEntity是一種面向數(shù)據(jù)的框架,該框架有兩部分,一為片段(Fragment),非常小的數(shù)據(jù)結(jié)構(gòu),會連續(xù)的儲存在內(nèi)存中;另為實體(Entity),則是由片段構(gòu)成集合的實例。
該框架中將所有處理邏輯與數(shù)據(jù)構(gòu)成進行解除聯(lián)系,所有的數(shù)據(jù)構(gòu)成均在片段中。為了了解要在哪些實體中執(zhí)行某些邏輯,需要通過實體查詢(EntityQuery)的方式來過濾實體,將其分割為特定邏輯需要的片段,然后再由處理器(Processors)對所有邏輯進行批量更新。例如,要更新所有實體的位置,就是通過處理器來一次性執(zhí)行。
這種處理邏輯與數(shù)據(jù)構(gòu)成分離的方式,可以增強數(shù)據(jù)和代碼的一致性,減少高速緩存缺失,簡化未來的并行執(zhí)行,可以有效的限制一次性模擬實體數(shù)據(jù)的基礎。
2. Mass GamePlay
Mass GamePlay能夠?qū)⒋罅康膶嶓w正式帶入游戲世界中。我們可以在Mass GamePlay中定義生成可視化、LOD等機制。
MassSpawner是Mass GamePlay中管理實體生成的部分,其為一個需要放置在關卡中的常規(guī)Actor。
2.1. 獲取生成位置
MassSpawner通過區(qū)域圖(ZoneGraph)來確定實體的生成位置。
區(qū)域圖(ZoneGraph)可以取代AI導航網(wǎng)格體的作用。它是一個由交叉點連接在一起的逐點廊道結(jié)構(gòu)生態(tài)系統(tǒng),并存儲了可操作的標簽,這些標簽可以是靜態(tài)的,如識別車道中的行人;也可以是動態(tài)的,如一條開放或封閉的車道、指定AI行為。
在《黑客帝國》中,MassSpawner通過區(qū)域圖對行動中的人群與交通工具實現(xiàn)了基于密度的實體分布,對于停在路邊的車輛使用了根據(jù)靜態(tài)點云的分布方式,這些實體分布方式可以在Mass Spawner的屬性中選擇。
以人群舉例,MassSpawner合并了行人密度和人行道網(wǎng)絡的數(shù)據(jù)表示,為人群創(chuàng)建了一個相互連接,且?guī)в姓_注釋的區(qū)域圖。區(qū)域圖中的注釋會說明它們的功能,如:人行橫道、人行道、十字路口道等。此外,這些注釋還包含預期密度,當前是否處于封閉狀態(tài),是否開啟調(diào)試信息等選項。MassSpawner會在這些線路上,根據(jù)密度數(shù)據(jù),在不同距離上創(chuàng)建一個生成位置。交通系統(tǒng)也是如此操作的。
對于停放的車輛,通過點云的方式直接在每個位置生成一輛載具。
2.2. 具體生成實例
具體生成實例不僅需要完成視覺效果,還得生成AI的行為。
MassSpawner通過Mass Entity Definition來確定具體生成的實例。
Mass Entity Definition是一種新的資產(chǎn)類型,通過該資產(chǎn),可以輕松處理不同實例使用的片段列表。該定義最重要之處在于視覺效果,如在不同LOD級別中顯示什么?截距距離是多少?可視角有哪些?每級LOD的預算最高是多少?
如上圖所示,框架中會存在四個不同的LOD級別,分別為紅色10m(帶有面部動畫的Actor),黃色20m(無面部動畫Actor),綠色500m(輕量級的頂點動畫網(wǎng)格體),無顯示。
在Mass Entity Definition中,人群與交通系統(tǒng)存在著一定的區(qū)別。
人群使用的是狀態(tài)樹,一個可擴展的通用型狀態(tài)機。通過狀態(tài)樹,可以描述當前實例可能出現(xiàn)的所有狀態(tài),即控制AI的行為,如漫步、閑逛、奔跑等。狀態(tài)是通過自上而下評估入口條件和運行相關參數(shù)化任務來確定的,確定后狀態(tài)樹會默認轉(zhuǎn)換到該狀態(tài),除非滿足了另外的轉(zhuǎn)換條件。
此外,為了完成人群的相互避讓,虛幻官方開發(fā)了一個基于力的避讓機制,可以高效的處理動態(tài)和靜態(tài)障礙,且會對身體碰撞做出反應,如在恢復原本行為前播放一段一次性動畫。這些動畫的數(shù)據(jù)來自于Mass動畫處理器,而Mass動畫處理器的相關數(shù)據(jù)來自于實體的片段。
交通系統(tǒng)中,則沒有使用狀態(tài)樹。所有行為都在Mass Processor以編程的方式生成。
如沿著車道陸續(xù)前進,會沿著車道排列車輛。為避免車輛相撞,車輛會知道他與另外一輛車的距離,并根據(jù)距離調(diào)整車速,
且車輛采用人群中使用的避讓系統(tǒng),會對障礙物進行避讓。
此外,交通系統(tǒng)需支持車道變更與車道合并。當檢測鄰近車道為空車道時,通過創(chuàng)建一個幽靈實體來模擬車輛出現(xiàn)在這條車道上,然后就可以進行變道了,且在變道完成后,會移除原車輛實體。
交通系統(tǒng)中的車輛也具有LOD系統(tǒng),操作與人群的基本一致。紅色10(可形變,可摧毀,可交互的Actor),黃色150(有物理效果,但只是在Mass Framework中模擬的Actor),綠色5000(僅有簡單曲線和位置的實例化靜態(tài)網(wǎng)格體),與無可視化。
交通系統(tǒng)的移動矢量生成,隨時都可以發(fā)生,所以官方通過矢量拉動的方式來降低開銷。文章來源:http://www.zghlxwxcb.cn/news/detail-416295.html
3、Mass AI
Mass AI主要分為Mass人群與Mass交通系統(tǒng)。具體實現(xiàn)在本文上部分已有講述。文章來源地址http://www.zghlxwxcb.cn/news/detail-416295.html
到了這里,關于【UE5 Mass AI】UE5技術演示視頻中的MassAI筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!