虚幻引擎学习之路:粒子系统篇(二)
生活随笔
收集整理的這篇文章主要介紹了
虚幻引擎学习之路:粒子系统篇(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在此,特別感謝Unreal中國團隊對于本篇文章中Unreal引擎相關內容的審核,并在UWA團隊學習其引擎的道路上提供的大力支持。
Required Module是粒子系統Emitter中默認添加且不能刪除的Module。它包含了Emitter以及時間、渲染相關的設置,例如:材質、發射器的位置和朝向等,如下圖所示:
設置不同的粒子系統材質能夠渲染出不同顏色以及紋理的粒子。通常粒子系統材質采用的Blend Mode是Translucent。并且在編輯材質時,需要用到Particle Color節點來修改粒子顏色,如下圖所示:
其中,上圖紅色框顯示了材質設置中Blend Mode的設置,綠色框顯示了使用Particle Color節點獲取并修改粒子顏色。最終渲染結果如下圖所示: 1.2 Light
類似于Unity引擎中粒子系統的Lights組件,Unreal 4引擎粒子系統同樣支持為粒子系統添加光源來照亮場景,如下圖所示:
其中,左圖紅框顯示了Unreal 4引擎中Light Module的設置,右圖紅框顯示Unity引擎中Light Module的設置。下圖顯示了具有光源屬性的粒子系統渲染結果圖:
需要說明的是,在Unreal 4引擎中,Light Module只能用于CPU粒子。GPU粒子暫時還不支持光源的功能。 1.3 Collision
類似于Unity引擎粒子系統中的Collision組件,Unreal 4引擎同樣支持粒子的碰撞檢測,如下圖所示:
其中,左圖紅框顯示了Unreal 4引擎粒子系統的碰撞設置,右圖顯示了Unity引擎粒子系統的碰撞設置。下圖顯示了帶碰撞檢測的粒子渲染結果:
其中,綠色粒子被發射出之后碰撞到地面和Box后會產生反彈。 1.4 Event
類似于Unity引擎中的粒子系統事件處理,買二手手機號平臺Unreal 4引擎同樣支持觸發事件以及事件響應的功能,如下圖所示:
其中,左圖紅色框顯示了Unreal 4引擎中粒子系統觸發事件的設置界面,右圖紅框顯示了Unity引擎中粒子系統觸發事件的設置界面。Unreal 4引擎支持不同類型的粒子事件,包括:粒子生成、發射、消失、碰撞時觸發以及在Blueprint腳本中響應等,可以在左圖中Type參數中設置。并且,可以通過Custom Name參數設置事件名稱。在Event Receiver中可根據事件名稱對不同事件進行處理。 左圖中綠色框顯示了粒子系統發射器中接收并處理事件的兩個Module。其中,Event Receiver Kill All是用于在接收到事件時刪除該Emitter的所有粒子,Event Receiver Spawn則是用于在接收到事件時生成新的粒子。其設置界面如下圖所示:
其中,在Source參數列表中可設置事件的類型和名稱,用于響應指定類型和名稱的事件。一個Event Generator可以生成多個事件,一個Event Receiver只能處理一個事件。但一個Emitter支持添加多個Event Receiver來處理不同的事件,如下圖所示:
Unity引擎也同樣提供了三種事件響應類型:Kill,Ignore,Callback。其中,Kill表示事件觸發時刪除粒子,Ignore表示忽略該事件,Callback表示在C#腳本中對該事件進行處理。 1.5 Camera Offset
Unreal 4引擎中Camera Offset Module可以實現將粒子根據相機位置進行位移的功能。其設置界面如下圖所示:
其渲染效果如下圖所示:
其中,紅色和綠色粒子大小相同,但紅色粒子距離相機距離增加了30個單位。 1.6 Vector Field
Unreal 4引擎支持使用向量場驅動粒子運動。向量場由一組在空間中分布的向量表示粒子在該位置時的速度或加速度。Unreal 4引擎采用體素表示向量場,每個體素中保存了向量的x,y,z分量。引擎支持在Maya中制作向量場并導出成.FGA格式文件然后進行導入。FGA文件為純文本文件,如果不想用Maya制作,僅僅做為測試使用,也可利用Github上的開源工具【1】自動生成。下圖顯示了將向量場導入Unreal 4引擎后的可視化結果:
其中,紅色細線表示了空間中向量的方向。 Unreal 4引擎中向量場僅支持GPU粒子,因此在創建粒子系統時需將Emitter的Type Data設置為GPU Sprites。向量場的類型有兩種,局部和全局。局部向量場只影響該Module所在的粒子系統,而全局向量場則會影響空間中所有粒子系統。本文以局部向量場為例,可在Emitter中添加Local Vector Field Module,如下圖所示:
其中,上圖紅色框顯示了對向量場資源文件的設置。對于全局向量場,需要將資源作為Actor放入場景中。上圖綠色框中的兩個參數:Intensity和Tightness分別用于控制向量場對粒子作用的強度和方式。其中,Tightness取值為[0, 1]之間。當取值為0時,向量場表示了對粒子施加的力,它會將其中保存的向量值累加到粒子速度。當取值為1時,向量場表示粒子的速度,它會將其中保存的向量值賦值給粒子速度。此外,還可通過VF Init Rotation、VF Rotation Rate、Vector Field Scale以及VF Scale/Life等Module對向量場的旋轉和縮放進行調整。下圖顯示了向量場中粒子系統渲染結果:
其中,左圖為粒子系統LOD0設置及渲染結果,右圖為引擎自動生成的LOD1設置及渲染結果。默認情況下,LOD1中除了Spawn之外的其他Module都不能被修改。如果需要修改,則需通過右鍵->Duplicate from Higher菜單將其設置為可修改,然后即可進行編輯,如下圖所示:
其中,紅框顯示了RequiredModule的Details面板為灰色不可編輯狀態。綠色框顯示了通過右鍵菜單可將其變為可修改。如果需要添加更多LOD層級,可點擊工具欄Add LOD按鈕,引擎會在LOD0和已生成的最低級LOD(LOD1)之間生成新的LOD。新的LOD會復制LOD0的設置,但可通上述右鍵菜單進行編輯。 然后,在粒子系統的LOD設置中,可設置不同距離使用不同的LOD,如下圖所示:
其中,上圖紅框顯示了LODDistance的設置,在距離相機[0, 500]范圍使用LOD0,距離相機500以上使用LOD1,渲染結果如下圖所示:
其中,場景中使用了兩個相同的粒子系統。近處的粒子系統渲染出紅色粒子表明其使用了LOD0進行渲染,遠處的粒子系統渲染出綠色粒子表明其使用了LOD1進行渲染。 此外,Unreal4引擎對粒子系統半透明渲染的Overdraw做了優化。在ProjectSetting->Rendering > Optimization中有一個渲染Enable Particle Cutouts by Default選項,如下圖所示:
開啟該選項后,引擎會自動根據粒子紋理可見部分生成相應的幾何面片,從而減少透明度為0的像素浪費情況,如下圖所示:
一、Module 功能
Required Module是粒子系統Emitter中默認添加且不能刪除的Module。它包含了Emitter以及時間、渲染相關的設置,例如:材質、發射器的位置和朝向等,如下圖所示:
設置不同的粒子系統材質能夠渲染出不同顏色以及紋理的粒子。通常粒子系統材質采用的Blend Mode是Translucent。并且在編輯材質時,需要用到Particle Color節點來修改粒子顏色,如下圖所示:
其中,上圖紅色框顯示了材質設置中Blend Mode的設置,綠色框顯示了使用Particle Color節點獲取并修改粒子顏色。最終渲染結果如下圖所示: 1.2 Light
類似于Unity引擎中粒子系統的Lights組件,Unreal 4引擎粒子系統同樣支持為粒子系統添加光源來照亮場景,如下圖所示:
其中,左圖紅框顯示了Unreal 4引擎中Light Module的設置,右圖紅框顯示Unity引擎中Light Module的設置。下圖顯示了具有光源屬性的粒子系統渲染結果圖:
需要說明的是,在Unreal 4引擎中,Light Module只能用于CPU粒子。GPU粒子暫時還不支持光源的功能。 1.3 Collision
類似于Unity引擎粒子系統中的Collision組件,Unreal 4引擎同樣支持粒子的碰撞檢測,如下圖所示:
其中,左圖紅框顯示了Unreal 4引擎粒子系統的碰撞設置,右圖顯示了Unity引擎粒子系統的碰撞設置。下圖顯示了帶碰撞檢測的粒子渲染結果:
其中,綠色粒子被發射出之后碰撞到地面和Box后會產生反彈。 1.4 Event
類似于Unity引擎中的粒子系統事件處理,買二手手機號平臺Unreal 4引擎同樣支持觸發事件以及事件響應的功能,如下圖所示:
其中,左圖紅色框顯示了Unreal 4引擎中粒子系統觸發事件的設置界面,右圖紅框顯示了Unity引擎中粒子系統觸發事件的設置界面。Unreal 4引擎支持不同類型的粒子事件,包括:粒子生成、發射、消失、碰撞時觸發以及在Blueprint腳本中響應等,可以在左圖中Type參數中設置。并且,可以通過Custom Name參數設置事件名稱。在Event Receiver中可根據事件名稱對不同事件進行處理。 左圖中綠色框顯示了粒子系統發射器中接收并處理事件的兩個Module。其中,Event Receiver Kill All是用于在接收到事件時刪除該Emitter的所有粒子,Event Receiver Spawn則是用于在接收到事件時生成新的粒子。其設置界面如下圖所示:
其中,在Source參數列表中可設置事件的類型和名稱,用于響應指定類型和名稱的事件。一個Event Generator可以生成多個事件,一個Event Receiver只能處理一個事件。但一個Emitter支持添加多個Event Receiver來處理不同的事件,如下圖所示:
Unity引擎也同樣提供了三種事件響應類型:Kill,Ignore,Callback。其中,Kill表示事件觸發時刪除粒子,Ignore表示忽略該事件,Callback表示在C#腳本中對該事件進行處理。 1.5 Camera Offset
Unreal 4引擎中Camera Offset Module可以實現將粒子根據相機位置進行位移的功能。其設置界面如下圖所示:
其渲染效果如下圖所示:
?
其中,紅色和綠色粒子大小相同,但紅色粒子距離相機距離增加了30個單位。 1.6 Vector Field
Unreal 4引擎支持使用向量場驅動粒子運動。向量場由一組在空間中分布的向量表示粒子在該位置時的速度或加速度。Unreal 4引擎采用體素表示向量場,每個體素中保存了向量的x,y,z分量。引擎支持在Maya中制作向量場并導出成.FGA格式文件然后進行導入。FGA文件為純文本文件,如果不想用Maya制作,僅僅做為測試使用,也可利用Github上的開源工具【1】自動生成。下圖顯示了將向量場導入Unreal 4引擎后的可視化結果:
其中,紅色細線表示了空間中向量的方向。 Unreal 4引擎中向量場僅支持GPU粒子,因此在創建粒子系統時需將Emitter的Type Data設置為GPU Sprites。向量場的類型有兩種,局部和全局。局部向量場只影響該Module所在的粒子系統,而全局向量場則會影響空間中所有粒子系統。本文以局部向量場為例,可在Emitter中添加Local Vector Field Module,如下圖所示:
其中,上圖紅色框顯示了對向量場資源文件的設置。對于全局向量場,需要將資源作為Actor放入場景中。上圖綠色框中的兩個參數:Intensity和Tightness分別用于控制向量場對粒子作用的強度和方式。其中,Tightness取值為[0, 1]之間。當取值為0時,向量場表示了對粒子施加的力,它會將其中保存的向量值累加到粒子速度。當取值為1時,向量場表示粒子的速度,它會將其中保存的向量值賦值給粒子速度。此外,還可通過VF Init Rotation、VF Rotation Rate、Vector Field Scale以及VF Scale/Life等Module對向量場的旋轉和縮放進行調整。下圖顯示了向量場中粒子系統渲染結果:
二、LOD 功能
?
其中,左圖為粒子系統LOD0設置及渲染結果,右圖為引擎自動生成的LOD1設置及渲染結果。默認情況下,LOD1中除了Spawn之外的其他Module都不能被修改。如果需要修改,則需通過右鍵->Duplicate from Higher菜單將其設置為可修改,然后即可進行編輯,如下圖所示:
其中,紅框顯示了RequiredModule的Details面板為灰色不可編輯狀態。綠色框顯示了通過右鍵菜單可將其變為可修改。如果需要添加更多LOD層級,可點擊工具欄Add LOD按鈕,引擎會在LOD0和已生成的最低級LOD(LOD1)之間生成新的LOD。新的LOD會復制LOD0的設置,但可通上述右鍵菜單進行編輯。 然后,在粒子系統的LOD設置中,可設置不同距離使用不同的LOD,如下圖所示:
其中,上圖紅框顯示了LODDistance的設置,在距離相機[0, 500]范圍使用LOD0,距離相機500以上使用LOD1,渲染結果如下圖所示:
其中,場景中使用了兩個相同的粒子系統。近處的粒子系統渲染出紅色粒子表明其使用了LOD0進行渲染,遠處的粒子系統渲染出綠色粒子表明其使用了LOD1進行渲染。 此外,Unreal4引擎對粒子系統半透明渲染的Overdraw做了優化。在ProjectSetting->Rendering > Optimization中有一個渲染Enable Particle Cutouts by Default選項,如下圖所示:
開啟該選項后,引擎會自動根據粒子紋理可見部分生成相應的幾何面片,從而減少透明度為0的像素浪費情況,如下圖所示:
上圖取自Unreal 4引擎官方文檔【2】
?
三、小結
?
總結
以上是生活随笔為你收集整理的虚幻引擎学习之路:粒子系统篇(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏行业DDoS 6年谈:什么样的架构才
- 下一篇: java信息管理系统总结_java实现科