UE5.2_PCG藍(lán)圖公開Static Mesh變量;快速替換模型資產(chǎn) | 無需編輯圖表
當(dāng)我們使用 PCG 時(shí),重要的是利用靜態(tài)網(wǎng)格體生成器來添加我們的模型

在實(shí)際應(yīng)用中,我們可能需要頻繁更換分布的模型。為了便于替換,我們可以將參數(shù)暴露出來

這樣添加或許更加方便,直接將我們模型拖放進(jìn)插槽
接下來,我們將了解如何在關(guān)卡中動(dòng)態(tài)切換網(wǎng)格,而無需進(jìn)入 PCG 圖表節(jié)點(diǎn)進(jìn)行替換
一般情況下我們使用靜態(tài)網(wǎng)格加權(quán)選擇器,通過加號(hào)我們添加需要靜態(tài)網(wǎng)格體,然后再這里修改,這不是很方便

同時(shí)epica提供另一種方式,按屬性選擇網(wǎng)格,你需要給他一個(gè)屬性名,從點(diǎn)上來讀取數(shù)據(jù)
它要求一個(gè)屬性名字和一個(gè)輸出屬性名

我們創(chuàng)建一個(gè)Blueprint元素,然后雙擊打開它

我們要做第一件事就是建立類默認(rèn)值和默認(rèn)變量,然后我們進(jìn)行快速測(cè)試確保你的類默認(rèn)值被選中
Has Default?in?pin(允許所有類型數(shù)據(jù)進(jìn)出)取消勾選我們要自定義
Has?Default?Out?pin(允許所有類型數(shù)據(jù)進(jìn)出)取消勾選我們要自定義

展開輸入,創(chuàng)建一個(gè)標(biāo)簽,它允許點(diǎn)數(shù)據(jù)
+擴(kuò)展,自定義輸出引腳并放上標(biāo)簽,這也是點(diǎn)數(shù)據(jù)
我們將向庫公開此操作,以便在 PCG 圖中將其顯示為,給它一個(gè)類別

這里的基類重寫一些函數(shù),所以讓我們從重寫節(jié)點(diǎn)標(biāo)題開始
AssignMeshToPoints節(jié)點(diǎn)名稱

添加新的變量
網(wǎng)格文件路徑(MeshFilePath)第一個(gè)變量是一個(gè)字符串,然后單擊眼睛圖標(biāo),以便它是可編輯的實(shí)例轉(zhuǎn)到
第二個(gè)(MeshScale),讓我們稱之為一個(gè)網(wǎng)格比例,我們稍后將實(shí)現(xiàn)它,這將是一個(gè)浮動(dòng),再次單擊眼睛圖標(biāo),以便它是可編輯的

現(xiàn)在返回到 PCG 圖表,您可以在左側(cè)有了一個(gè)新的網(wǎng)格類別,我們的節(jié)點(diǎn)在這里,變量以及網(wǎng)格文件路徑和網(wǎng)格比例,我們現(xiàn)在應(yīng)該能夠?qū)⑦@

我們回到藍(lán)圖創(chuàng)建下一個(gè)函數(shù),這是該藍(lán)圖的核心,這是當(dāng)節(jié)點(diǎn)到達(dá)PCG 圖中時(shí)執(zhí)行的內(nèi)容,

①我們首先要做的是解壓縮輸入以獲得點(diǎn)數(shù)據(jù),我們右鍵單擊并將其提升為局部變量,我們稱之為Context

②接下來我們需要做的是我們需要選擇正確的輸入引腳,來從引腳的輸入類型中獲取數(shù)據(jù),并通過引腳獲取輸入并將其連接,我們需要說出我們是哪個(gè)引腳從中獲取數(shù)據(jù),如果您右鍵單擊它并再次提升為局部變量,其拖到此處,我們希望為引腳提供 in 標(biāo)簽,以便它與我們的輸入引腳名稱相匹配,以便將從輸入中獲取數(shù)據(jù)

【Get?Inputs?by?pin】它返回的是一個(gè)頂層數(shù)組,它是 PCG 標(biāo)記的數(shù)據(jù)結(jié)構(gòu),因此您可以在此處連接多個(gè)節(jié)點(diǎn),因?yàn)樗且粋€(gè)數(shù)組,我們需要使用 For Each Loop 依次遍歷每個(gè)節(jié)點(diǎn)對(duì)于每個(gè)循環(huán),現(xiàn)在每個(gè)數(shù)組元素都是一個(gè)數(shù)據(jù)結(jié)構(gòu),我們只需要再次將其分解為我們想要的點(diǎn)數(shù)據(jù),因此在此處進(jìn)行中斷您將看到 PCG?標(biāo)簽數(shù)據(jù)包含三個(gè)部分?jǐn)?shù)據(jù)標(biāo)簽

我們只對(duì)數(shù)據(jù)感興趣取出并轉(zhuǎn)換為空間 PCG 空間數(shù)據(jù),這就是我們想要處理的點(diǎn)信息 連接到循環(huán)體

我們?cè)谶@里要做的最后一件事是創(chuàng)建一個(gè)變量,因此將其提升為局部變量,我們將其稱為空間數(shù)據(jù)

#第一部分完成

接下來我們想做兩件事,我們想要添加一個(gè)名為網(wǎng)格的新屬性,然后我們想要遍歷點(diǎn)數(shù)據(jù)并將其復(fù)制到具有該新屬性的輸出中,因?yàn)槲覀兿胱鰞杉?/p>
①使用序列節(jié)點(diǎn)(Sequence)來組織它所以我們將依次執(zhí)行這些操作
②我們將設(shè)置新的元數(shù)據(jù),因此拖動(dòng)空間數(shù)據(jù)屬性來控制將其拖到此處從
③這里有一個(gè)函數(shù)稱為不可變?cè)獢?shù)據(jù),即點(diǎn)數(shù)據(jù)中的可更改元數(shù)據(jù)并且獲得了我們想要?jiǎng)?chuàng)建新屬性的可更改元數(shù)據(jù)
④因此拖出要?jiǎng)?chuàng)建的返回值,我們想要做的是為我們的網(wǎng)格創(chuàng)建一個(gè)字符串屬性因此屬性名稱將為mesh
⑤然后我們需要輸入字符串的默認(rèn)值,因此在我們的變量中,我們將網(wǎng)格文件路徑設(shè)置為輸入。默認(rèn)值,這樣即使我們不更改點(diǎn)數(shù)據(jù)中的任何內(nèi)容,它也會(huì)將網(wǎng)格文件路徑添加到每個(gè)點(diǎn)這樣這部分就完成了
讓我們對(duì)其進(jìn)行注釋并調(diào)用它添加帶有默認(rèn)文件路徑的網(wǎng)格屬性,并將其連接到第一個(gè)序列

處理所有的點(diǎn)并將他們傳遞回輸出,所以我們需要這里做的是再次將我們的空間數(shù)據(jù),將空間數(shù)據(jù)轉(zhuǎn)換為一組點(diǎn),讓后我們已經(jīng)獲得點(diǎn)數(shù)據(jù),我們將執(zhí)行稱為“點(diǎn)循環(huán)”的操作,它是此標(biāo)準(zhǔn)藍(lán)圖元素的一部分,因此它依次遍歷每個(gè)點(diǎn),因此讓我們將其連接到其他序列輸出

然后需要做的就是將其以反向方式打包,因此當(dāng)我們啟動(dòng)此執(zhí)行節(jié)點(diǎn)時(shí)將其解壓現(xiàn)在我們需要再次將其打包,以便點(diǎn)數(shù)據(jù)我們需要從中再次制作 PCG 標(biāo)簽數(shù)據(jù)然后我們想要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)集合,這就是最初出現(xiàn)的數(shù)據(jù)集合,因此請(qǐng)制作PCG數(shù)據(jù)集合并將其放入其中,這就是我們將作為輸出傳遞的內(nèi)容,然后我們不這樣做 不僅僅需要將它們連接在一起

點(diǎn)循環(huán)
這樣它就會(huì)復(fù)制每個(gè)傳入的點(diǎn)到每個(gè)傳出的點(diǎn),確保單擊返回值√

回到BP_PCG_Test,添加變量公開新變量然后傳遞 到PCG 圖中,所以在我們的變量中,我們將添加兩個(gè)新變量、
Mesh:確保選擇靜態(tài)網(wǎng)格對(duì)象引用
MeshFilePath:網(wǎng)格文件的路徑
MeshScale:網(wǎng)格體縮放

那么如果我們更改中的網(wǎng)格藍(lán)圖我們想要將網(wǎng)格轉(zhuǎn)換
將靜態(tài)網(wǎng)格與控件拖放到圖表;獲取路徑字符串,以便將引用的網(wǎng)格對(duì)象轉(zhuǎn)換為所謂的軟引用(帶有該對(duì)象路徑的字符串),我們要做的最后一件事是設(shè)置網(wǎng)格文件路徑,因此使用Alt鍵拖動(dòng)該路徑 輸出并將其連接并連接到構(gòu)造腳本,因此每次我們更改網(wǎng)格時(shí),它都會(huì)重置與其關(guān)聯(lián)的網(wǎng)格文件路徑,然后我們可以將其傳遞到PCG 圖中,因此編譯并可以將其傳遞到PCG 圖中,因此編譯并

我們回到我們的 PCG 圖我們現(xiàn)在有兩個(gè)可以傳入的字符串,因此我們需要在此處使用的節(jié)點(diǎn)是獲取 actor 屬性,輸入我們需要傳入的參數(shù)

我們需要處理下變換信息
首先我們需要打破pcg節(jié)點(diǎn),展開我們可以看到它具有來自該點(diǎn)數(shù)據(jù)集的所有相對(duì)或相關(guān)數(shù)據(jù),因此讓我們?cè)谶@里進(jìn)行變換,打破變換,變換包括位置旋轉(zhuǎn)和縮放,我們乘以縮放

#方案二
通過pcg圖標(biāo)中圖設(shè)置:在這里有實(shí)例參數(shù),因此如果我單擊添加新屬性

我們可以做的是添加帶有軟對(duì)象路徑的新屬性【soft ob】
然后可以重命名,也可以給他一個(gè)默認(rèn)值

回到藍(lán)圖,讓我們添加屬性節(jié)點(diǎn),我們想要添加網(wǎng)格的新輸出屬性名稱Mesh,讓我們從其中的變換獲取點(diǎn)屬性,我們希望從源參數(shù)執(zhí)行此操作 但首先將其設(shè)置為String,從源參數(shù)中進(jìn)行字符串軟對(duì)象路徑,現(xiàn)在如果您確實(shí)在圖形參數(shù)中獲得了網(wǎng)格,那么我們就可以獲得我們的我們?cè)O(shè)置的參數(shù) 可以插入它,這樣我們就可以在這里獲取參數(shù)并將其添加為名為網(wǎng)格的屬性,然后您可以將其連接到靜態(tài)網(wǎng)格生成器

修改我們靜態(tài)網(wǎng)格生成器類型,屬性修改為Mesh

方案二:我們?cè)O(shè)置的接口在藍(lán)圖pcg下,使用不是很方便還要去選擇一下

接下來我們來到藍(lán)圖解決下這個(gè)問題:
這里為我們的靜態(tài)網(wǎng)格物體,并打開后面小眼睛
此處添加另一個(gè)變量 我們將其稱為網(wǎng)格文件路徑


然后我們回到藍(lán)圖中制作與案例1相同設(shè)置,這樣我們的參數(shù)就可以暴露在藍(lán)圖上

我們還需要更改下藍(lán)圖,不在是使用Mesh要獲取屬性,這個(gè)屬性就是我們藍(lán)圖中創(chuàng)建的變量網(wǎng)格位置文件位置信息MeshFilePath

完整節(jié)點(diǎn)截圖

效果:同樣可以實(shí)現(xiàn)案例一的功能

繼續(xù)添加網(wǎng)格比例變量
然后我們?cè)趐cg圖表中添加變換點(diǎn)控制的屬性

最終效果

堅(jiān)持與您“分享”最有價(jià)值“干貨”內(nèi)容
本期分享就到這里,我們下期見!