(映維網 2020年01月09日)對于VR游戲開發工作室Arabian Art Studios,其組成人員在游戲行業打滾的歲月加起來超過27年,曾供職過的企業包括西木工作室(Westwood Studios), 藝電(Electronic Arts)和巖石壁畫(Petroglyph Games)等等。為了幫助開發者利用他們的開發流程,這支團隊最近發布了一個全新的Unity VR游戲示例。日前,核心成員以利·阿拉比安(Elie Arabian)和馬特·奧斯特加德(Matt Ostgard)撰文介紹了這個示例及相關技巧步驟。下面是映維網的具體整理:
如需下載所述的Unity游戲示例,請前往Oculus Ogre Sample下載頁面。
我們Arabian Art Studios從2016年開始為Gear VR開發VR游戲,并一直尋求在相關地系統限制下實現我們最佳地視覺效果。最低硬件規格是三星Note 5。所以,我們在與制作階段了進行了一系列地性能測試:最大繪制調用,可持續的頂點/多邊形數量,烘焙照明與動態照明,蒙皮網格性能等等。我們根據相關地測試開發了一個管道,而它為我們的游戲提供了最佳的視覺效果。
利用這一流程開發的首款演示內容是《Cursed Sanctum》(下面第一組圖像)。所述作品于2017年3月發行,并且依然支持Gear VR和Oculus Go。我們的第二款作品《Myth Hunters》已于2019年12月5日與大家見面。這是一款完整的游戲,并且采用了我們先前開發的眾多技術。
隨著時間的流逝,原本專屬于特定軟件平臺的工具開始日漸普遍,尤其是GPU紋理烘焙,所以我們的方法現在可以在大多數流程管道中使用。今天,我們將向大家介紹基于Unity的Oculus Quest演示作品《Ogre Smithy and His Workshop》,并用于展示了我們的工具和流程管道。我們在下面的博文中提供了這個示例的概述,包括如何準備3D asset,Unity管道的設置,以及工作流程的基本教程。我們希望能夠為你提供一定的借鑒參考,從而幫助你不斷創造具有優秀視覺體驗的游戲內容。
1. 包括在場景中的3D asset
所有asset均使用生成游戲美術的標準做法進行建模和構造。創建高細節模型,然后是優化的拓撲網格及紋理處理。我們的管道包括ZBrush,3DS Max,Photoshop,Substance Painter和Unity。
2. 場景構建及管道
在導入Unity之前,我們用于創建場景和紋理烘焙的管道是基于3D Studio Max(Autodesk)和V-Ray(Chaos Group)。然后,我們使用V-Ray的控制和渲染功能將所有照明和高多邊形細節烘焙到低多邊形的游戲內asset。對于《Ogre》演示,我們同時使用Substance Painter對一定的asset進行處理,將高多邊形細節烘焙到低多邊形asset。
為了確保這個過程的成功,高多邊形和低多邊形asset必須共享相同的坐標,并且必須彼此重疊。上面是兩者的視圖,你可以看到高多邊形asset中的幾何細節水平。對于場景構建,模型始終是作為一個asset進行移動。
3. 為3DS Max預備asset
第一步是在3DS Max中使用V-Ray材質獲得基本幾何形狀。我們使用“Vray” Config從Substance Painter導出紋理。
導出紋理后,我們需要將其分配給3DS Max中的V-Ray著色器,并將其應用于烘焙對象。材質類型必須切換為VrayMTL。從Substance導出的所有紋理類型在VrayMtl中都有一個類似命名的字段。對于凹凸貼圖,請確保使用“VrayNormalMap”類型。考慮到我們在演示內容中同時使用了高多邊形烘焙對象和低多邊形烘焙對象,這確實是需要在制作期間做出的決定。由于場景完全依賴于密集的高多邊形烘焙對象,3DS Max文件往往會變得非常大,甚至達到千兆字節。每種方法的決定應視場景而定,我們需要將唯一asset的數量,每個細節的大小+密度,文件大小,以及最終視覺目標都考慮在內。
即便有了從Substance Painter導出至V-Ray的預設,我們發現正常凹凸的綠色通道通常都需要翻轉才能獲得正確的結果。
4. 3DS Max中的場景裝配
一旦預備好所有的asset,并且都具有高多邊形“烘烤”和低多邊形“投影”就緒的asset,我們就可以裝配場景。場景裝配非常簡單,只需將素材放置在3D空間中即可創建完整的環境。我們強烈建議使用實例或引用方法來復制asset,從而將場景文件的內存占用降至最低。設置分層系統非常重要,這允許你輕松選擇場景中的高多邊形和低多邊形對象。最終,低多邊形將作為單個對象組合在一起。在《Ogre》中,由于我們在Substance中烘焙了大量的正常數據,所以我們能夠將項目的低多邊形對象用作高多邊形的基礎。
下圖是High_Exeterior_Terrain_High中的Sand_Floor視圖。asset包含230萬個頂點。
沙漠地面切分成較小的塊狀,從而平衡每個對象的多邊形數量,并且當它不在camera視場中時利用遮擋剔除的優勢。
注意“Bake”圖層asset的命名和層次結構約定;文件組織和asset命名令我們在3DS Max和Unity中執行每個步驟變得更加容易。
對于性能,除了最小化繪制調用,重要的一環是減少多邊形。在確定場景后,請刪除不必要的多邊形,從而減少游戲中的幾何形狀。
建立場景后,我們需要進行紋理烘焙的準備。在這個步驟中,我們將各個游戲asset組附加在一起,并變成一個唯一的對象。通過附加對象,組合對象的UVW坐標將重疊。必須在紋理烘焙之前解決這個重疊問題,而你只需將組合對象的UVW坐標移動到UVW2并擴展即可消除重疊。組合對象的數量通常取決于每個對象的多邊形計數要求,以及最終場景中的總繪制調用。
下圖是對象組合并將坐標重新映射到UVW2的另一示例:
一旦組合所有游戲asset并重新映射,我們接下來就可以進行場景烘焙。前提條件是,必須使用V-Ray照明場景。對于這個階段的可視化,我們可以將其作為高多邊形場景的渲染并使用GPU渲染。
《Ogre》場景演示了兩種紋理烘焙方法,在這里進行區分說明十分重要。在3DS Max中,對象可以自行投影,或通過投影修改器將一組對象投影到另一個對象。要指定紋理烘焙,我們使用“Rendering”選項卡中的“render-to-texture”選項。選擇將為其分配投影紋理的對象。然后,我們需要為紋理烘焙設置所需的設置。對于這個示例,我們的過程要求使用“VrayCompleteMap”輸出類型。有關V-Ray的詳盡指南說明,請參見這個教程:Basic Texture Baking with V-Ray。
5. 自投影
萬分注意:請不要啟用“Mapping”字段,并確保設置正確的UVW通道。
選擇所有場景材質,并將著色器設置回“Lightweight Render Pipeline/Unlit”。
通過Lighting選項卡及“Generate Lighting”按鈕的下拉箭頭烘焙反射探針。然后,保存項目(File > Save Project)。現在,場景已經可以用于游戲之中。
烘焙光探針后及在烘焙反射探針之前,我們必須將材質恢復到標準曝光范圍,這一點十分重要。如果不這樣做,場景中的動態對象在游戲中會太亮。
8. 管道的優勢
我們在三年前就開始構建這個管道流程,目標是減少Gear VR和三星S5的繪制調用并創建最佳視覺效果。我們對這兩種情況的結果都感到滿意。
下面是采用這一管道的其他原因:
- 烘烤單個或多個選定的asset。
- V-Ray強大的控件可用于微調渲染,能夠提高質量和節省制作時間。
- 非常高性能的著色器可用于靜態幾何體。
- 允許高多邊形計數,這在VR中的效果非常好,因為深度細節對視覺影響很大。
- 粗糙表面的視覺效果更好,相當光滑的表面看起來也不錯。
9. 管道的挑戰
我們在使用這個管道時確實有遇過一定的挑戰。下面是采用這一管道的其他原因:
- 當場景接近最終場景時,場景幾何的迭代可能會令人生畏且耗時。
- 要取得滿意的結果,你需要采取許多個步驟并留有出錯的余地,因為場景變大了且越來越復雜。
- 組合烘焙對象和重新映射UVW坐標的過程變得非常耗時,而且分組更加復雜。
- 基礎幾何圖形和烘烤幾何圖形需要保持同步。
- 在環境中使用的動態照明將無法正常工作,或者至少看起來不會很好。
- VRAM/磁盤使用率很高。sparse virtual texture或許可以繞開這個問題。
10. 下載示例項目
首先,你需要下載這個Unity項目。它至少需要Unity 2019.2,并且是嘗試這一示例的推薦版本。打開OculusOgrePrototype.unity。如要構建和部署場景,你需要輸入自己的簽名證書,然后就可以正常地進行開發并部署到Quest。有關如何構建并將將Unity應用部署到Quest的更多信息,請參見這個文檔頁面。
11. 總結
《Cursed Sanctum》顯然受益于這個管道流程,即使已經過去兩年,這款游戲依然憑借視覺效果獲得Gear VR和Go玩家的好評。我們繼續在《Myth Hunters》沿用這一流程管道,而它使得我們的平均紋理烘焙時間從4個小時降低到20分鐘。展望未來,我們將評估Unity的變化以及GPU支持紋理烘焙的實現,從而確定是否可以在場景構建和烘焙過程中更多地利用Unity。另外,隨著VR硬件性能的提升,數年前的多個性能瓶頸將漸漸變得不再重要,并允許我們調整流程,從而更好地開發未來的游戲。感謝你抽出時間閱讀我們的博文,希望這能夠為你提供幫助。
原文鏈接:https://yivian/news/70821.html


