1. 程式人生 > >使用UE4進行VR製作的一些經驗分析

使用UE4進行VR製作的一些經驗分析

原始標題:

UE4的演示資源還是很不錯,個個精良,我這邊把UE4的有代表性的演示都跑了一遍,同時也通過Rift確認效果,和裡面的資源製作方式。 

首先,UE4是基於物理渲染的引擎,大部分都是偏向影象真實的。使用的材質和貼圖細節也更多一些。在PC上的品質要比Unity好,效能應該也要比Unity費一些,所以很適合作VR產品的質量和效率標。 

這裡先列出自己的總結,然後再結合每個演示做一些具體分析。這些只是針對PC的高品質製作: 

  1. 渲染風格方面,VR也可以作出基於物理渲染的效果,只要你能貼圖和光照要遵守物理法則,也可以偏卡通一些的。 

  2. VR也可以使用PBR的金屬度/鏡面顏色,法線貼圖,粗糙值等,但在Unity5上,你需要在金屬度/鏡面顏色的工作流中選擇一種。UE4為了效率考慮,最好也能選擇其中一種,而不是兩個同時使用 

  3. 粒子如果是要和視覺互動的,就不能用基於Billboard生成,而是要做成基於Mesh的粒子 

  4. Normal Map在VR中還是可以看出凹凸感的,並不像文件中介紹的那樣沒有作用,但是PC上使用POM(視差對映貼圖)和Tessellation(表面細分)技術可以作出比Normal Map更高的細節。 

  5. PBR的Specular Aliasing的問題,會被VR更加放大,需要使用可以支援Specular Anti-Aliasing的技術才可以(比如Temporal AA)。 

  6. VR的解析度比較小,為了減少鋸齒感,儘量避免一些使用alpha test製作的效果。 

  7. UI和互動的製作也很重要,這部分Unity和UE4上缺少這方面的例項。 

  8. 除錯方面,UE4自帶的命令列工具對效能分析很有幫助,這個Unity自己沒有那麼全面的分析工具,需要自己實現和改造。 

  9. 效能問題的優化問題,最好能保證75FPS 

接下來對這些問題逐一闡述。 

1. 渲染風格 基於物理(PBR)或者卡通風格 

PBR我翻譯和分享的資料裡應該有很多了,這裡只做一個簡單介紹,PBR大概可以分為材質著色(Material Shading),光照(Lighting),後處理特效(Camera Effect)3部分,UE4和U3D都有PBR材質著色支援,但光照和後處理部分效能和效果對VR實現壓力還是過大了。現階段的PBR,主要還是靠基於微平面的BRDF,以及IBL,通過粗糙度來增加效果。動態光源和物理鏡頭因為VR效能的緣故儘量少用。

Order 1886的圖釋,只有材質是PBR的     


最近展示的VR專案裡,真正採用PBR的並不多,大多是卡通,或者是著色模型簡單的,如果在品質要出彩的話,確實是一個突破點。     

PBR風格     



卡通風格的場景



2. VR的美術製作管線     

美術管線方面,VR和普通並沒有太多特別的,卡通的沿用卡通的就可以,PBR的,美術製作時有一定的PBR管線意識,除了需要繪製粗糙度的貼圖外,還需要對金屬和非金屬的顏色有一定的瞭解,而從節省資源和效率考慮,在Metalic或Specular的製作流程中選擇一個就可以了     

如下圖所示,Metal的美術管線和Specular相比,貼圖佔用更小,對美術師製作起來也更直觀和簡單,顏色都繪製在base color上,然後只需要用Metallic的貼圖示識出那些是金屬和非金屬,著色模型就會自動的來確定Diffuse和Specular的顏色。     

而Specular的流水線,需要美術師需要有意識的把金屬的顏色繪製到Specular上。通過Diffuse和Specular的顏色,來區分金屬和非金屬。 


3. 凹凸細節的製作 

UE4的官網提到,因為要左右眼分別渲染的緣故,對視覺依賴的貼圖效果,如Normal Map在VR上會被“平坦化”,但實際從UE4的一些演示上看,Normal Map的效果還是有的,只是沒有普通PC那麼明顯,同時,Directx11的POM(Parallax Occlusion Mapping)和 Tessellation,可以起到比Normal Map更好的效果。這些在Crytek的一些遊戲和演示中都很常見。  

下圖是UE4的VR演示,ShowDown中的機器人Boss,從下面的材質看,也使用到了Normal  




下面是Crytek的POM和TS的效果對比,在幾何體細節的增加上很明顯。 


POM一般可以用來做牆面和地板等平面的凹凸,而Tessellation是則是可以利用Directx11的TS製作各種模型的表面細分。POM製作起來相對簡單,類似Bitmap2Material的工具也能作出不錯的凹凸效果。 

4. 粒子特效 

傳統的Billboard粒子都是一個或大量的板型多邊形朝向玩家視點的方向來模擬出效果,而VR的話,一個是雙眼導致Billboard出現偏差,另外就是當玩家處在粒子附近晃動頭盔瀏覽時,Billboard就會被看出破綻 

Showdown中的導彈火焰的軌跡和爆破碎片,因為軌跡和破片是穿插在玩家視點的前進路線上,玩家可以在正面或者低頭和回頭觀看,所以都是用網格來製作的。 



5. Specular Aliasing的問題 

Specualar Aliasing是PBR的Specular的高頻部分在較遠處因為取樣問題導致,表現就是物體邊緣的高光會跟根據視角移動“晃動”現象。 


左圖是關閉了Specular AA的效果,右邊是開啟的,Specular Aliasing在左圖運動時會更加明顯。所以需要SMAA或Temproal AA這類對支援( subpixel reconstruction AA)的後處理。不過這樣就增加了對GPU的消耗。 


6. Alpha Test AA 

BlackSmtih這Demo裡抖動相當厲害。其中原因,一個是Unity預設的FXAA只有對幾何體的鋸齒有效果,對應畫素的走樣問題並不能很好的對應。下圖中遠處的場景抖動就非常厲害。 


一般渲染植物都是使用貼圖,然後用alpha test來作出植物的邊緣,由於解析度比較小,這種鋸齒感在VR裡也會被放大。 


7. UI和互動的製作

UI方面,U3D和UE4自帶的3DUI在表現力上和Scaleform比還是有很大差距的。如果要製作出科技感強的介面,還是要手動定製一些功能。 


8. 除錯和效能分析 

unity的分析主要是靠Profile,除錯時需要拿下頭戴裝置,在Editor調整後,再用裝置來確認。 


UE4除了有分析工具外,還可以直接在遊戲中使用命令列工具顯示各種效能引數,以及各種顯示特性的引數設定,更方便判斷瓶頸。Unity還是需要自己在編輯器裡設定,或者修改和擴充套件自己的設定外掛。 




8. 效能問題 

為了不產生眩暈感和流暢,UE4建議在Rift DK2可以維持在75FPS,那麼最低硬體配置也是GTX960。在我的GTX660上,UE4的VR專用演示大概是45FPS左右,其他的大概30FPS左右。這個一個和UE4本身的優化不足有關,另外也是UE4演示裡還是使用了高品質材質和特效的緣故。UE4的效能和製作規格對Unity開發還是可以起到參考作用。 

附錄: 最後是UE4自帶的兩個VR專用的演示,Showdown和CouchKnights的一些特性 


場景的平均Draw Call為600 


靜態物體物件的多邊形數50w~70w,骨骼動畫的多邊形數全屏為30w~50w左右 



如果是VR的話,UE4的Draw Call都要翻倍,繪製的多邊形數量自然也翻倍了。實現方式上,這點和Unity是不一樣的。


靜態場景 

大部分的靜態場景,近處的房屋和地面等等都是標準PBR材質,有Roughness和Normal Map,遠景的房屋沒有使用Normal Map,地面使用了bump offset來模擬POM的效果。 

配合Local Cubemap(UE4裡叫ReflectionCapture)做出來地面上水窪的反射效果。 



動態物體 

除了玩家外,場景裡只有士兵和敵方Boss兩種角色。面數為6w和10w面。一個角色都有7,8種材質。 



光影 

場景沒有使用任何動態光源,都是預先烘培的光照貼圖(Lightmap)和Light Probe(UE4裡叫Lightmass) 


角色動態陰影只是一個腳底下的貼片來Fake的。 



粒子特效 車的爆炸特效,是在一個做了高細分( tesselated )的球體上加入了世界空間的噪聲來實現 


導彈的軌跡也細分幾何體。沿著一個樣條曲線來運動



http://www.chinaar.com/UE4/2389.html  這裡有視訊講解
VR資源網整理出品