程序化內容生成框架(Procedural Content Generation Framework,下文簡稱PCG)可謂是UE5.2版本中最令人矚目的新技術之一,老王也是在第一時間就關注了這個技術,以前嘗試過用Houdini來實現(xiàn)UE5中的程序化內容生成,感覺還是很蹩腳的,畢竟Houdini是第三方工具,節(jié)點操作不如UE藍圖順手,而且生成的資源需要插件來解析,調試以及場景資源的交互就更頭疼了。有了原生的PCG,在程序化內容生成方面,可以和Houdini說拜拜了。
引言
網(wǎng)上有不少關于PCG的小教程,但基本都是從“小工具”層次的介紹。深扒《Electric Dreams》項目的代碼,讓我感到Epic Games這次給出的PCG是野心滿滿的,因為它不僅有很高的完成度,而且還為中大型項目直接定義了更加優(yōu)化的PCG開發(fā)工作流程。
什么是PCGSettings
PCGSettings是PCG中的配置文件,PCGSettings有兩種:
- 節(jié)點的PCGSettings
- 關卡的PCGSettings
其中節(jié)點PCGSettings
比較容易理解,把PCGGraph中選中的節(jié)點,右鍵Export Nodes to AssetData
就可以保存成對應的PCGSettings,它的作用就是可以復用這些節(jié)點的設置,直接拖拽到PCGGraph中就可以使用。
下面我們重點聊聊關卡PCGSettings
,在每個Level文件上右鍵通過PCG - Level to PCG Settings
都可以導出一個關卡PCGSettings
文件,它的名字由Level文件名+"_PCG"后綴組成,當我們更新了關卡中的內容,再次導出時,如果已有對應的關卡PCGSettings
文件,它會直接對舊文件進行更新。
關卡PCGSettings中有哪些內容
我們新建一個名為"PCG_DesignLevel"的關卡,在里面隨便擺放一些東西:StaticMesh、SkeletalMesh以及SplineActor。順便給兩個StaticMesh更換一下材質,然后為白色的Actor添加ActorTag:White;為紅色的Actor添加ActorTag:Red
導出關卡PCGSettings
新建一個PCGGraph,里面的內容非常簡單,RCG_DesignLevel節(jié)點就是"PCG_DesignLevel_PCG"的Instance(直接拖拽到PCGGraph即可)
注意:
- 這里StaticMeshSpawner的
Mesh Selector Type
的類型要設置為PCGMeshSelectorByAttribute
-
Attribute Name
設為"Mesh"(字符串類型) - 勾選
By Attribute Material Overrides
并添加"Material"
再新建一個名為"PCG_GameLevel"的關卡,把剛剛寫的PCGGraph拖拽到關卡中。
神奇的事情發(fā)生了,我們發(fā)現(xiàn):
- "PCG_DesignLevel"中的靜態(tài)物體(靜態(tài)幾何體,地面)都顯示出來了,甚至還賦上了材質。
- 生成的靜態(tài)幾何體都成為了PCG_Demo的子組件。
- 但SkeletalMesh和SplineMesh都不見了。
這一切是怎么發(fā)生的呢?我們檢查一下關卡PCGSettings
中點云(Point Cloud)的內容:
- 從列來看,關卡PCGSettings`的點云中包含著原關卡中所有靜態(tài)網(wǎng)格體、層級實例化靜態(tài)網(wǎng)格體(HISM)和實例化靜態(tài)網(wǎng)格(ISM);
- 從行來看,點云中的每個點除包含初始屬性,還包含著上述靜態(tài)網(wǎng)格的體相對根節(jié)點(PCGVolume)的Transform,以及對應的Mesh資源和Material。這就是為什么StaticMeshSpawner可以通過屬性生成網(wǎng)格并賦上材質。我們還可以看到,之前在原關卡中為紅色和白色Actor分別添加的Tag(“Red"和"White”)也作為每個點的屬性儲存在點云中,這是一個Int32/64類型屬性,擁有該屬性的Actor值為1,否則為0。在PCGGraph中,我們可以通過Point Filter來過濾擁有某種Tag的Actor。
工作流
小小的PCGSettings文件,讓PCG開發(fā)有了多元化而且松耦合的工作流程,比如:
- 工作流1:
這是一種縱向的工作流,關卡設計師可以現(xiàn)在一個初始關卡(暫稱之為“錨定場景”),定義出一些重要的錨定網(wǎng)格體,然后導出它的PCGSettings,地編新建一個關卡(暫稱之為“地編關卡”)通過PCGGraph進行視覺上的裝飾
- 工作流2:
這是一種橫向的工作流,《Electric Dreams》項目中大量使用了這種工作流。每個子關卡都分別導出PCGSettings,然后在組合關卡中進行組合,這樣不但降低了各個模塊開發(fā)的耦合度,還大大提升了關卡的復用性和靈活性。
文章來源:http://www.zghlxwxcb.cn/news/detail-497262.html
小結
UE5.2中PCG被稱為框架(Framework)而不僅僅是工具(Tools),是有道理的。因為它不僅僅是houdini的原生版本,還帶來了一套針對PCG開發(fā)的工作流程,使用PCG制作游戲場景,效率實在太起飛了,我相信它會成為未來游戲開發(fā)的必修課。文章來源地址http://www.zghlxwxcb.cn/news/detail-497262.html
到了這里,關于UE5《Electric Dreams》項目PCG技術解析 之 基于關卡PCGSettings的工作流的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!