天天看點

【UE4】實體引擎(藍圖)虛幻實體系統

文章目錄

  • 虛幻實體系統
    • 1、實體引擎
    • 2、實體互動
      • 産生實體互動的必備條件
    • 3、實體碰撞
      • 靜态網格編輯器
      • 簡單碰撞
        • 添加簡單形狀碰撞
        • 添加K-DOP簡單凸包碰撞
        • 添加自動凸包碰撞
      • 添加複雜碰撞
    • 4、碰撞類型
      • 碰撞預設
      • 物體類型
      • 蹤迹類型
      • 碰撞預設面闆
      • 碰撞啟用
    • 5、碰撞響應
      • 碰撞響應事件
      • 重疊事件
      • 撞擊事件(hit事件)
    • 5、實體追蹤
      • 追蹤方式
      • 射線檢測
        • 1、通道射線檢測
        • 2、預設射線檢測
        • 3、物體類型射線檢測
      • 形狀檢測
    • 5、作用力
      • 虛幻中的力
      • 沖力
      • 推進力

虛幻實體系統

1、實體引擎

實體引擎通過為剛性物體賦予真實的實體屬性的方式來計算運動、旋轉和碰撞反映。

遊戲引擎中的實體引擎的主要目的是為了解決物體在空間的狀态資訊。

正常的實體引擎遵循實體定律,按照給定的算法,進行模拟實體運動。是以在沒有多元因素影響的情況下,實體引擎的計算結果是一緻的。這和現實世界基本一緻。

虛幻使用的是PhysX3.3的實體引擎驅動實體仿真以及碰撞計算。

2、實體互動

碰撞相應和**追蹤響應(射線)**構成了虛幻引擎4在運作時處理碰撞和光線投射的基礎。

虛幻中的碰撞互動方式分為三種:忽視,重疊,阻擋

忽視:物體和物體之間不産生任何實體結果,這使得實體引擎将這兩種物體不作為檢查範本。

重疊:物體和物體本身可以互相穿透,并産生事件通知。實體引擎時刻會關注物體之間的位置關系。

阻擋:物體和物體之間不可以互相穿透,将産生阻擋效果。

産生實體互動的必備條件

在虛幻引擎中,能夠被實體引擎計算的物體必須具備剛體(包裹外殼)。如果希望加入實體引擎運動,還需要開啟去實體模拟。

3、實體碰撞

在虛幻引擎中,實體碰撞添加的途徑有兩種,第一種是靜态網格編輯器中,第二種是實體資源編輯器中(為骨骼Mesh使用)

靜态網格編輯器

【UE4】實體引擎(藍圖)虛幻實體系統

靜态網格的添加的碰撞形式分為兩種,簡單碰撞和複雜碰撞。

簡單碰撞是基礎,如方塊、球體、膠囊體和凸包。複雜碰撞是給定對象的三角網格圖。虛幻引擎4預設在Physx中建立簡單和複雜兩種形态,然後再基于使用者需要(複雜查詢vs簡單查詢)使用相應形态。

【UE4】實體引擎(藍圖)虛幻實體系統

LOD(Levels of Detail):多層次細節,LOD技術指根據物體模型的節點在顯示環境中所處的位置和重要度,決定物體渲染的資源配置設定,降低非重要物體的面數和細節度,進而獲得高效率的渲染運算。

例如遊戲中,背後和遠處的物體為非重要物體,細節度低,眼前近處的物體的細節度高。

簡單碰撞

添加簡單形狀碰撞

打開靜态網格編輯器,在碰撞下拉菜單中找到形狀添加,虛幻提供三種簡單的形狀碰撞器:球體、膠囊體、盒體。

虛幻允許一個物體具備多個碰撞器

【UE4】實體引擎(藍圖)虛幻實體系統

添加K-DOP簡單凸包碰撞

K-DOP是包圍體的一種,是K離散導向多面體(K discrete oriented polytope)的縮寫(K是軸對齊平面的數字)。它抓取軸對齊的平面,将其盡力推向離網格體最近的位置。

10-方塊有4條邊形成斜角-可選擇X、Y或Z軸對齊的邊

18-方塊中所有邊均形成斜角

26-方塊中所有邊和角均形成斜角

【UE4】實體引擎(藍圖)虛幻實體系統

添加自動凸包碰撞

自動凸包包裹也屬于簡單碰撞包裹,通過程式進行計算獲得包裹資料資訊。需要調整凸包頂點最大數量。

凸包數量:決定了包裹物體需要使用的凸包個數,越多越精确,消耗也越大

最大外殼定點數:每個凸包最大允許使用多少個頂點

凸包精準度:使用多少模型面做計算參考,數量越大精度越大

遇到特别複雜的物體,建議先提升凸包數量,其次是凸包精準度。

【UE4】實體引擎(藍圖)虛幻實體系統
【UE4】實體引擎(藍圖)虛幻實體系統

添加複雜碰撞

虛幻中規定,若一個物體開啟了複雜(精準)碰撞,就不能再開啟實體模拟了。

例如,開啟了複雜碰撞的椅子不能再被一個球擊倒。

開啟複雜碰撞後,需要在細節面闆中将碰撞複雜度改成“将複雜碰撞用作簡單碰撞”,物體才能與其他物體進行實體互動。

【UE4】實體引擎(藍圖)虛幻實體系統

項目預設(Default):此設定“預設“使簡單碰撞請求使用簡單碰撞,複雜請求使用複雜碰撞。引擎預設使用的是SAC模式。

簡單與複雜(Simple And Complex) :建立簡單和複雜的形狀。簡單形狀用于正常場景查詢和碰撞測試。複雜形狀(逐多邊形)用于複雜場景查詢。通俗的說,在此狀态下,物體之間的碰撞互動使用的是簡單碰撞,射線(比如槍射出子彈)使用的是複雜查詢。

将簡單碰撞用作複雜碰撞(Use Simple As Complex):若請求複雜查詢,引擎仍将查詢簡單形态,無視三角網格圖。這有助于節約記憶體,是以我們不需要烘培三角網格圖。如果碰撞幾何體更簡單,則可增強性能。通俗的說,在此狀态下,物體之間的碰撞互動使用的是簡單碰撞,射線(比如槍射出子彈)使用的也是簡單查詢,該種模式最高效。

将複雜碰撞用作簡單碰撞(Use Complex As Simple):若請求簡單查詢,引擎将查詢複雜形态,無視簡單碰撞。該設定可将三角網格圖用作實體模拟碰撞。**注意:如果您使用的是Use Complex As Simple,則無法模拟物體;但可将其和其他模拟(簡單)物體進行碰撞。**通俗的說,在此狀态下,物體之間的碰撞互動使用的是複雜碰撞,射線(比如槍射出子彈)使用的也是複雜查詢,此種性能最低。

最推薦使用預設設定, 即簡單與複雜模式,這種模式即保證了碰撞的高效,又保證了查詢的精細。

4、碰撞類型

碰撞預設

虛幻中加入了多種碰撞預設,幫助我們快速設定場景中物體與物體間的碰撞關系,我們可以使用碰撞預設解決場景中大部分碰撞關系問題。

碰撞預設可以在項目設定-碰撞-Preset 中查找到

建立新的碰撞預設需要需要分别選擇物體類型和追蹤類型

【UE4】實體引擎(藍圖)虛幻實體系統
【UE4】實體引擎(藍圖)虛幻實體系統
【UE4】實體引擎(藍圖)虛幻實體系統

兩個物體,它們對對方的碰撞預設必須是一緻的,不能一廂情願。

物體類型

虛幻中使用物體類型來描述碰撞關系。虛幻隻提供了少量的物體類型。我們可以在碰撞設定中進行添加。虛幻允許我們額外添加18種碰撞物體類型。

【UE4】實體引擎(藍圖)虛幻實體系統

蹤迹類型

蹤迹類型用來響應和射線之間的互動關系。虛幻中預設提供兩種蹤迹類型。我們可以自定義添加更多蹤迹類型,最多18個蹤迹類型。

【UE4】實體引擎(藍圖)虛幻實體系統
【UE4】實體引擎(藍圖)虛幻實體系統

比如,發出來一條Visibility類型的射線,如果你希望被打到,就勾選區塊;不希望被打到就勾選忽略或者重疊。

碰撞預設面闆

在碰撞預設描述面闆中我們可以調整物體之間的碰撞關系,包括目前預設提供給的物體的對象類型,碰撞的方式,響應方式,蹤迹類型。

蹤迹類型:目前物體與射線發生關系方式

對象類型:目前對象類型與其他對象類型發生的關系方式

【UE4】實體引擎(藍圖)虛幻實體系統

碰撞啟用

如果碰撞啟用都沒有開啟,後面的也不用看了。

無碰撞(No Collision):沒有任何碰撞資訊産生,并且沒有實體碰撞結果。

純查詢(Query Only):隻會産生碰撞通知(堆疊通知),但沒有實體效果

純實體(Physics Only):隻會産生實體通知,不産生碰撞通知

已啟用碰撞(Collision Enabled):即會産生碰撞通知,又會産生實體效果

【UE4】實體引擎(藍圖)虛幻實體系統
【UE4】實體引擎(藍圖)虛幻實體系統

5、碰撞響應

碰撞響應事件

虛幻中的碰撞響應分為忽略,堆疊,阻擋。與之對應的事件我們均可以得到。常見的StaticMesh元件,Collision元件均具備通知事件。并且我們可以調整元件的碰撞預設,或是自定義碰撞預設,以達到響應碰撞的不同結果。

【UE4】實體引擎(藍圖)虛幻實體系統
【UE4】實體引擎(藍圖)虛幻實體系統

重疊事件

重疊事件分為進入堆疊和推出堆疊,在虛幻中,如果希望獲得堆疊事件通知,需要滿足以下條件:

1、雙方勾選生成堆疊事件(下圖),中文翻譯也是“生成堆疊事件”

2、物體有碰撞包裹

3、碰撞預設中物體之間的碰撞方式為重疊(有一方開啟即可)

【UE4】實體引擎(藍圖)虛幻實體系統

撞擊事件(hit事件)

撞擊事件産生的必要條件:

1、希望接收事件通知方(在藍圖中寫有元件命中節點的一方)勾選生成撞擊事件

2、雙方任意一方開啟實體模拟

3、雙方具備碰撞包裹

4、碰撞預設中物體的碰撞關系為阻擋

【UE4】實體引擎(藍圖)虛幻實體系統

(中文翻譯為”模拟命中生成事件“)

5、實體追蹤

追蹤方式

虛幻中的實體追蹤是指引擎運作狀态下,允許我們使用線或是形狀與場景物體産生互動,并将互動結果進行回報,以達到動态生成實體互動響應的目的。

1、線性的檢測(射線檢測)(射擊遊戲,槍射出子彈)

2、形狀檢測(球,盒子,膠囊)

射線檢測

射線檢測分三種方式,**一種是通道檢測(通道射線檢測),一種是預設檢測(預設射線檢測),一種是物體類型(物體類型射線檢測)。**檢測的方式主要差別是用來篩選目标。

檢測分為單檢測(隻能掃描到一個目标)和多個目标檢測(傳回多個目标)

單檢測和多檢測通俗了解:多檢測就是射線能穿透,可以檢測到多個目标。

【UE4】實體引擎(藍圖)虛幻實體系統

1、通道射線檢測

使用軌迹通道為主要檢測判定依據,碰撞物體與該通道必須為阻擋關系,才能被收集。

如果想要射線被檢測到,需要保證物體的碰撞設定中,與該射線通道的響應方式為阻擋。

【UE4】實體引擎(藍圖)虛幻實體系統

(中文翻譯為:由通道追蹤線條)

Trace Complex :鈎選後,射線便不跟物體的包裹進行互動,而是跟物體的複雜碰撞進行互動。

Actors to Ignore:這是一個放對象的數組,用于存放不想被射線打到的目标(比如射擊遊戲中的隊友)

Ignore Self:是否忽略自己

Draw Debug Type:調試資訊

2、預設射線檢測

使用預設關系進行碰撞檢測,需要填入預設名稱。

注意:射線使用預設如同物體之間的預設關系一樣,如果希望被射線檢測到,需要保證射線預設物體類型,和希望被檢測到的物體類型之間的響應關系為阻擋(注意預設設定需要雙方預設關系種的物體響應方式均為阻擋),方可被檢測到。

【UE4】實體引擎(藍圖)虛幻實體系統

Profile Name:放一種碰撞預設(填入該碰撞預設的名稱),該射線的檢測遵循該碰撞預設的設定。

3、物體類型射線檢測

将希望被射線檢測到的物體類型建構成為數組進行填入,并且隻與類型比對的物體産生互動關系。

【UE4】實體引擎(藍圖)虛幻實體系統

Object Types:這是一個數組,填入想要互動的物體類型。常見的物體類型有:靜态場景(World Static)、動态場景(World Dynamic)、Pawn、實體形體(Physics Body)、載具(Vehicle)、可破壞物(Destructible)

形狀檢測

形狀檢測方式與射線檢測方式相同,會根據給定的形狀進行檢測設定。

提供了三個形狀:球形、盒形、膠囊形

【UE4】實體引擎(藍圖)虛幻實體系統

以球形通道檢測為例,是從起始位置到結束位置不斷發射球形:

【UE4】實體引擎(藍圖)虛幻實體系統

Radius是發射球的半徑

【UE4】實體引擎(藍圖)虛幻實體系統

球形預設檢測和球形物體類型檢測和射線部分相同,便不在此贅述。

盒形和膠囊形與球形相同,不在此贅述。

5、作用力

虛幻中,物體開啟實體模拟,即代表收到重力的影響。

虛幻中的力

在虛幻中力的作用方式分為兩種:一種是沖力(impulse),一種是推進力(force)。推進力在虛幻中其實也是叫力,推進力是我們為了便于區分,取的名字。

差別:

​ 沖力:瞬間力,作用結束後直接施加給物體,修正物體在實體引擎中的運動表現。(跑動的人撞到物體,施加的是沖力)

​ 推進力:單幀作用力,目前幀力效果施加後,如下一幀不存在推進力,則作用力無效果。如果推進力是持續增 加力,随着時間推演作用力累加。像是火箭推進器。(用雙手推物體,施加的是推進力)

隻有開啟了實體模拟的物體才能受到力的作用。

沖力

直接将沖力作用在物體質心,給定一個向量,描述方向和力的大小。

在其他引擎中,力不受物體品質影響,但虛幻中的力收到物體品質的影響。比如品質太大的物體,若施加的力太小,則物體不會被移動。決定該力受不受到品質影響,和Vel Change的勾選有關。

添加沖量(Add Impulse):

【UE4】實體引擎(藍圖)虛幻實體系統

Vel Change:不勾選,受品質影響。勾選,不受品質影響。

在位置添加沖量(Add Impulse at Location):

将從物體的質心到Location建構一個連接配接杆,然後再Location發力,作用效果如同是用杆撬動物體。

與添加沖量(Add Impulse)不同的是,在位置添加沖量(Add Impulse at Location)可以選擇發力的位置(Location)。比如,炮彈打到牆上,如果使用添加沖量(Add Impulse),則力永遠都是從質心出發,這顯然不符合實際情況。

【UE4】實體引擎(藍圖)虛幻實體系統

Bone Name:将力用作在骨骼上

推進力

推進力需要持續發力,是以一般我們需要将力放到持續調用的邏輯節點(比如,事件Tick)中才能獲得效果。推進力也分為直接發力質心和通過修改發力點建構作用力杠杆發力。

添加作用力(Add Force):

【UE4】實體引擎(藍圖)虛幻實體系統

和沖力(沖量,Impulse)一樣,添加作用力(Add Force)也有在位置添加作用力(Add Force at Location)。效果和沖力一樣,不再贅述。

繼續閱讀