UE5管理內(nèi)容-FBX靜態(tài)網(wǎng)格體管線

FBX導(dǎo)入流程中加入?靜態(tài)網(wǎng)格體?支持后,將網(wǎng)格體從3D軟件加入虛幻引擎5的操作便極為簡便。網(wǎng)格體導(dǎo)入后,應(yīng)用到3D軟件中網(wǎng)格體的材質(zhì)紋理(僅限漫反射和法線貼圖)也將被導(dǎo)入,并用于生成應(yīng)用到虛幻引擎5中網(wǎng)格體的材質(zhì)。
利用FBX導(dǎo)入?靜態(tài)網(wǎng)格體?所支持的功能:
帶紋理材質(zhì)的?靜態(tài)網(wǎng)格體
自定義碰撞
多個UV集
平滑組
頂點顏色
LODs
多個單獨的?靜態(tài)網(wǎng)格體(也可以在導(dǎo)入時組合到一個單獨的網(wǎng)格體中)。
當(dāng)前,將多個擁有自定義碰撞的網(wǎng)格體導(dǎo)入一個單一文件中時,只有第一個網(wǎng)格體的碰撞才會被導(dǎo)入。
虛幻引擎FBX導(dǎo)入管線使用?FBX 2020.2。在導(dǎo)出時使用其他版本可能會導(dǎo)致不兼容。
常規(guī)設(shè)置
通常而言,您可以隨意使用任何工具和方法來創(chuàng)建?靜態(tài)網(wǎng)格體。為將網(wǎng)格體順利導(dǎo)出和導(dǎo)入到虛幻編輯器并使其擁有正常功能,在進行UV設(shè)置、網(wǎng)格體放置等操作時需要注意以下幾點。
樞軸點
虛幻引擎中網(wǎng)格體的樞軸點決定了執(zhí)行任意變換(平移、旋轉(zhuǎn)、縮放)時所圍繞的點。?

從3D建模軟件中導(dǎo)出網(wǎng)格體時,樞軸點固定位于原點處(0,0,0)。因此最好在原點處創(chuàng)建網(wǎng)格體,使原點位于網(wǎng)格體的一個角上,以便在對齊到虛幻編輯器中的網(wǎng)格時進行恰當(dāng)?shù)膶R。

三角剖分
因為圖形硬件僅處理三角形,所以必須對虛幻引擎中的網(wǎng)格體進行三角剖分。

進行網(wǎng)格體三角剖分的方法有幾種。
僅使用三角形進行網(wǎng)格體建模。這是最佳方案,能對最終結(jié)果進行最大程度的控制。
在3D軟件中三角剖分網(wǎng)格體。這是較好方案,在導(dǎo)出之前可以進行清理和修改。
讓FBX導(dǎo)出器三角剖分網(wǎng)格體。這是普通方案,無法進行清理,但適用于簡單網(wǎng)格體。
讓導(dǎo)入器三角剖分網(wǎng)格體。這是普通方案,無法進行清理,但適用于簡單網(wǎng)格體。
最好在3D應(yīng)用中手動設(shè)置網(wǎng)格體的三角剖分,控制邊的方向和放置方式。自動三角剖分可能會導(dǎo)致不理想的效果。

UV紋理坐標(biāo)
虛幻引擎4中的FBX流程支持多個UV集的導(dǎo)入。對?靜態(tài)網(wǎng)格體?而言,這通常用于處理漫反射的一個UV集。對使用FBX流程的?靜態(tài)網(wǎng)格體?UV進行設(shè)置時無特殊要求。
創(chuàng)建法線貼圖
創(chuàng)建低分辨率渲染網(wǎng)格體和高分辨率的細節(jié)網(wǎng)格體即可直接在多數(shù)建模軟件中創(chuàng)建網(wǎng)格體的法線貼圖。

高分辨率細節(jié)網(wǎng)格體的幾何體可用于生成法線貼圖的法線。Epic的內(nèi)部工作流中加入了XNormal,在虛幻引擎4中渲染時能夠生成質(zhì)量更佳的法線。
材質(zhì)
應(yīng)用到在第三方軟件中建模的網(wǎng)格體上的材質(zhì)將隨網(wǎng)格體一同導(dǎo)出虛幻引擎。這樣便簡化了導(dǎo)入過程,因為無需再將紋理單獨導(dǎo)入虛幻引擎,也不需要進行材質(zhì)創(chuàng)建和應(yīng)用等操作。使用FBX流程時,導(dǎo)入進程可以執(zhí)行全部操作。
也需要以特定方式對這些材質(zhì)進行設(shè)置,網(wǎng)格體擁有多個材質(zhì)、或網(wǎng)格體材質(zhì)的排序很重要時(舉例而言:角色模型的材質(zhì)0需用于軀體,材質(zhì)1需用于頭部)尤為如此。
碰撞
簡化的碰撞幾何體對優(yōu)化游戲中的碰撞偵測十分重要。虛幻引擎4在?靜態(tài)網(wǎng)格體編輯器?中提供了創(chuàng)建碰撞幾何體的基本工具。但在某些情況下,最佳方案是在3D建模軟件中創(chuàng)建自定義碰撞幾何體,然后將其隨渲染網(wǎng)格體一同導(dǎo)出。通常而言,這適用于對象不需要發(fā)生碰撞的開放或凹陷區(qū)域網(wǎng)格體。
舉例而言:
門道網(wǎng)格體
擁有窗框的墻壁
形狀古怪的網(wǎng)格體
導(dǎo)入器基于碰撞網(wǎng)格體的名稱對其進行識別。碰撞命名語法應(yīng)為:
UBX_[RenderMeshName]_##
盒體?必須使用常規(guī)的矩形3D對象來創(chuàng)建。你無法移動頂點或使其改變形狀,使其變?yōu)榫匦卫庵獾钠渌螤睿駝t其將無法正常使用。
UCP_[RenderMeshName]_##
膠囊體?是兩端半圓的圓柱體對象。膠囊體完全不需要過多分段(8段為佳),因為它將被轉(zhuǎn)換為一個真正的膠囊體進行碰撞。和盒體一樣,不能對單個頂點進行移動。
USP_[RenderMeshName]_##
球體?沒有必要設(shè)置過多分段(8段為佳),因為它將被轉(zhuǎn)換為一個真正的球體進行碰撞。和盒體一樣,不能對單個頂點進行移動。
UCX_[RenderMeshName]_##
凸?對象可以是任何完全封閉的凸型3D形狀。例如,一個盒體也是一個凸對象。下圖說明了哪些是凸對象,哪些不是。?

警告和注意事項
RenderMeshName
?名稱必須與3D軟件中碰撞網(wǎng)格體關(guān)聯(lián)的渲染網(wǎng)格體的命名一致。如果3D軟件中渲染網(wǎng)格體的命名為?Tree_01
,那么碰撞網(wǎng)格體將與渲染網(wǎng)格體處于同一場景中,命名為?UCX_Tree_01
,之后其將隨渲染網(wǎng)格體導(dǎo)出到同一個FBX文件中。如果需要為一個網(wǎng)格體設(shè)置多個碰撞對象,可以使用額外的辨識符對其命名進行擴展,如:UCX_Tree_01_00
、UCX_Tree_01_01
、UCX_Tree_01_02
,以此類推。這些碰撞對象均會和此網(wǎng)格體相關(guān)聯(lián)。當(dāng)前球體僅應(yīng)用于鋼體碰撞和虛幻引擎的零范圍追蹤(如武器),而不應(yīng)用于非零范圍追蹤(如玩家運動)。如?靜態(tài)網(wǎng)格體?并非等分縮放,則球體和盒體將無法正常使用。通常需要創(chuàng)建?UCX?基元。
碰撞對象設(shè)置完畢后,便可以把渲染和碰撞網(wǎng)格體導(dǎo)出到同一個FBX文件中。將FBX文件導(dǎo)入虛幻編輯器時,它將找到碰撞網(wǎng)格體,將其從渲染網(wǎng)格體上移除,并將其轉(zhuǎn)換為碰撞模型。
將非凸面網(wǎng)格體分解為凸面基元是非常復(fù)雜的操作,還可能產(chǎn)生不可預(yù)知的效果。另一個方法是在3D MAX或Maya中將碰撞模型分解為凸面塊。
如一個對象的碰撞由多個凸包所定義,那么這些凸包相互未交叉時產(chǎn)生的結(jié)果為最佳。舉例而言,如果一個棒棒糖的碰撞由兩個凸包所定義(一個用于糖果、另一個用于棒),那么兩者之間應(yīng)留有空隙。詳情如下所示:

UCX_Candy
碰撞表面之間的小縫隙
UCX_Stick
插槽
在游戲中通常使用插槽來將一個對象附加到另一個對象(可以是骨架網(wǎng)格體、也可以是靜態(tài)網(wǎng)格體)。虛幻引擎4中擁有在靜態(tài)網(wǎng)格體編輯器中創(chuàng)建插槽的工具。 有時可能需要在3D建模軟件中對插槽進行設(shè)置,然后再隨渲染網(wǎng)格體導(dǎo)出。 可相對于骨架網(wǎng)格體上的骨骼或靜態(tài)網(wǎng)格體的大小對插槽進行平移、旋轉(zhuǎn)和縮放。?
如要在建模軟件中使用插槽,需要使用一個帶?SOCKET_
?前綴的虛擬或助手對象。?
SOCKET_[RenderMeshName]_##
將此用于建模軟件中的任意虛擬或助手對象,以便將插槽指定到網(wǎng)格體。
警告和注意事項
RenderMeshName
?名稱必須與3D軟件中插槽對象關(guān)聯(lián)的渲染網(wǎng)格體的命名一致。 如果3D軟件中渲染網(wǎng)格體的命名是?Object_01
,則插槽對象應(yīng)與此網(wǎng)格體處于同一場景中,命名為SOCKET_Object_01, 并隨渲染網(wǎng)格體導(dǎo)出到同一個FBX文件中。如果一個網(wǎng)格體需要多個插槽對象,則以額外的辨識符來延展其命名, 如SOCKET_Object_01_00、SOCKET_Object_01_01、SOCKET_Object_01_02,以此類推。這些插槽皆與該網(wǎng)格體相關(guān)聯(lián)。為網(wǎng)格體創(chuàng)建插槽時,可導(dǎo)入虛幻引擎4的插槽只能擁有一個網(wǎng)格體FBX設(shè)置。 舉例而言,如果需要將兩個渲染網(wǎng)格體設(shè)為單獨的資源,則需要將其導(dǎo)入為單獨的FBX文件。 這意味著無法導(dǎo)入多個網(wǎng)格體并將插槽指定到每個單獨的網(wǎng)格體;如果兩組渲染網(wǎng)格體擁有其自身的插槽,其將無法正確導(dǎo)入。 舉例而言,如果Object_01帶SOCKET_Object_01_00,另一個渲染網(wǎng)格體Box_01帶SOCKET_Box_01_00,此時便無法讓插槽隨這些網(wǎng)格體一同導(dǎo)入。 它們需要導(dǎo)出為獨立的FBX文件。
頂點顏色
可以通過使用FBX流程來轉(zhuǎn)移?靜態(tài)網(wǎng)格體?的頂點顏色。無需特殊設(shè)置。

導(dǎo)出網(wǎng)格體
靜態(tài)網(wǎng)格體?可以單獨導(dǎo)出,也可把多個網(wǎng)格體導(dǎo)出到一個單獨的FBX文件中。除非在導(dǎo)入時啟用?組合網(wǎng)格體(Combine Meshes)?設(shè)置,否則導(dǎo)入流程將會將多個?靜態(tài)網(wǎng)格體?在目標(biāo)包中分離為多個資源。
虛幻引擎FBX導(dǎo)入管線使用?FBX 2020.2。在導(dǎo)出時使用其他版本可能會導(dǎo)致不兼容。
導(dǎo)入網(wǎng)格體
點擊?內(nèi)容瀏覽器?中的?添加/導(dǎo)入(Add/Import)?按鈕并選擇?導(dǎo)入。在打開的文件瀏覽器中找到并選中需要導(dǎo)入的FBX文件。
你可能需要在下拉菜單中選擇?

,過濾掉不需要的文件。

導(dǎo)入資產(chǎn)的路徑取決于?內(nèi)容瀏覽器?中的當(dāng)前位置。在執(zhí)行導(dǎo)入前,請確保導(dǎo)航到相應(yīng)的文件夾。你也可以在導(dǎo)入完成后將導(dǎo)入的資產(chǎn)拖入新的文件夾。
2.在?導(dǎo)入?對話框中選擇合適的設(shè)置。大多數(shù)情況下,默認值應(yīng)該就可以了。

3.點擊?導(dǎo)入(Import)?按鈕來導(dǎo)入網(wǎng)格體。如果導(dǎo)入過程成功,將在?內(nèi)容瀏覽器?中顯示最終的網(wǎng)格體、材質(zhì)和貼圖。

雖然紋理和材質(zhì)將隨靜態(tài)網(wǎng)格體導(dǎo)入,但只有?顏色(Color)?和?法線(Normal)?將被自動連接(假定Max/Maya中使用了支持的材質(zhì));高光(Specular)?貼圖也將被導(dǎo)入,但不會連接;其他貼圖(如?漫反射(Diffuse)?槽中的?環(huán)境光遮蔽(Ambient Occlusion)?貼圖)則不會被導(dǎo)入。最好的方法是對材質(zhì)進行檢查,連接所有未連接的貼圖,并檢查哪些貼圖未導(dǎo)入。雙擊?新材質(zhì)并將可用紋理連接到其相應(yīng)的輸入中即可。
在?靜態(tài)網(wǎng)格體編輯器?中查看導(dǎo)入的網(wǎng)格體并啟用顯示碰撞后,即可驗證進程是否正常進行。

另外還可以從Windows點擊并將一個FBX文件拖入?內(nèi)容瀏覽器,此操作將呼出導(dǎo)入對話。
靜態(tài)網(wǎng)格體LOD
為將網(wǎng)格體逐漸遠離相機而產(chǎn)生的性能影響降至最低,可以在游戲中使用?靜態(tài)網(wǎng)格體?的細節(jié)級別(LOD)。通常而言,這意味著每個細節(jié)級別擁有的三角形數(shù)量更少,或?qū)ζ鋺?yīng)用的材質(zhì)更為簡單。

FBX流程可用于導(dǎo)入DCC工具創(chuàng)建的LOD網(wǎng)格體;也可以直接在UE內(nèi)部為導(dǎo)入的靜態(tài)網(wǎng)格創(chuàng)建LOD。
LOD設(shè)置
通常而言,LOD的處理方式是創(chuàng)建復(fù)雜程度不一的模型,從完整細節(jié)的基礎(chǔ)網(wǎng)格體到最低細節(jié)的LOD網(wǎng)格體。這些LOD網(wǎng)格體應(yīng)該全部對齊,擁有相同的樞軸點且占有相同空間。每個LOD網(wǎng)格體可以指定完全不同的材質(zhì),包括不同數(shù)量的材質(zhì)。這意味著基礎(chǔ)網(wǎng)格體可以使用多個材質(zhì)在近處產(chǎn)生理想的細節(jié);但低細節(jié)網(wǎng)格體可以使用一個單獨的材質(zhì),因為細節(jié)不甚明顯。
每個DCC工具都有自己的工作流程來創(chuàng)建靜態(tài)網(wǎng)格體的 LOD,因此請參考你所選工具的文檔,了解如何創(chuàng)建LOD 并將其添加到你的FBX輸出中。
導(dǎo)入LOD
在?內(nèi)容瀏覽器?中,靜態(tài)網(wǎng)格體LOD可隨基礎(chǔ)網(wǎng)格體一同導(dǎo)入,或通過靜態(tài)網(wǎng)格體編輯器單獨導(dǎo)入。
點擊?內(nèi)容瀏覽器?中的?添加/導(dǎo)入(Add/Import)?按鈕并選擇?導(dǎo)入。在打開的文件瀏覽器中找到并選中需要導(dǎo)入的FBX文件。
你可能需要在下拉菜單中選擇??

,過濾掉不需要的文件。
導(dǎo)入資產(chǎn)的路徑取決于?內(nèi)容瀏覽器?中的當(dāng)前位置。在執(zhí)行導(dǎo)入之前,請確保導(dǎo)航到相應(yīng)的文件夾。你也可以在導(dǎo)入完成后,將導(dǎo)入的資產(chǎn)拖入新的文件夾內(nèi)。
2.在?導(dǎo)入(Import)?對話中選擇正確的設(shè)置。默認設(shè)置即可,但必須啟用?導(dǎo)入LOD(Import LODs)。注意:?導(dǎo)入LOD時,導(dǎo)入網(wǎng)格體的命名將遵循默認的命名規(guī)則。在FBX導(dǎo)入對話部分可了解到所有設(shè)置的完整詳情。

3.點擊?導(dǎo)入(Import)?按鈕來導(dǎo)入網(wǎng)格體和LOD。如果導(dǎo)入過程成功,將在?內(nèi)容瀏覽器?中顯示最終的網(wǎng)格體、材質(zhì)和貼圖。

雖然紋理和材質(zhì)將隨靜態(tài)網(wǎng)格體導(dǎo)入,但只有?顏色(Color)?和?法線(Normal)?將被自動連接(假定Max/Maya中使用了支持的材質(zhì));高光(Specular)?貼圖也將被導(dǎo)入,但不會連接;其他貼圖(如?漫反射(Diffuse)?槽中的?環(huán)境光遮蔽(Ambient Occlusion)?貼圖)則不會被導(dǎo)入。最好的方法是對材質(zhì)進行檢查,連接所有未連接的貼圖,并檢查哪些貼圖未導(dǎo)入。雙擊?新材質(zhì)并將可用紋理連接到其相應(yīng)的輸入中即可。
在?靜態(tài)網(wǎng)格體編輯器?中查看導(dǎo)入的網(wǎng)格體時,可使用?細節(jié)?面板中的?LOD拾取器(LOD Picker)?來循環(huán)切換LOD。

為導(dǎo)入的靜態(tài)網(wǎng)格體創(chuàng)建LOD
靜態(tài)網(wǎng)格體導(dǎo)入后,你可以手動為它創(chuàng)建LOD,雖然較為耗時,但會得到最好的結(jié)果(特別是復(fù)雜的網(wǎng)格體);或者你可以使用UE的LOD自動生成工具,當(dāng)你需要為多個簡單網(wǎng)格體生成LOD時,這種方法更快。