龔柏茂
(浙江師范大學 文化創意與傳播學院,浙江 金華 321004)
Unreal 3引擎技術在實現虛擬場館設計中的疑難問題剖析
龔柏茂
(浙江師范大學 文化創意與傳播學院,浙江 金華 321004)
虛擬場館設計在現實生活中的應用越來越廣泛,但在設計中經常會遇到3Max文件和Unreal不相融、材質貼圖容易出錯、燈光設置不理想和測試文件時死機等現象,給設計者帶來了許多困擾.鑒于此,結合虛擬場館設計了實際案例,系統地將3DMax和Unreal 3軟件之間文件互換、材質貼圖技巧、燈光設置和測試時應注意的事項等問題進行了梳理,并提了出一系列解決辦法,以便于設計者更好、更快地開展虛擬相關項目的研發.
Unreal 3引擎;UDK;虛擬場館;模型
Unreal引擎技術(Unreal Engine)是全球應用最廣、技術最頂尖的游戲引擎之一,曾被評為年度最受歡迎的引擎,在全球游戲引擎市場中占據81%的份額,利用它制作的大型游戲有:《虛幻競技場3》《戰爭機器》《榮譽勛章》和《生化奇兵》等.在歐美地區,Unreal引擎技術主要用于游戲角色與交互等方面的制作,在中國、韓國和日本,許多游戲商家則利用該引擎技術開發一些大型的網絡游戲和一些虛擬場館設計,其代表作有:《TERA》、《戰地之王》、《流星蝴蝶劍》等等.
目前,Unreal引擎技術已發展到第3代,并使用當今全球最成熟的光影追蹤、HDR、交互、虛擬等新技術.與第1代Unreal引擎技術相比,第3代技術能完成每秒兩億多個圖形的運算,比第1代技術快了近110多倍[1].2009年,英佩數碼(Epic)公司正式公開宣布全面開放Unreal 3引擎技術,任何制作團隊或個人皆可免費使用Unreal 3引擎數據包,并發布了UDK免費引擎,里面包括了Unreal 3引擎技術的部分工具和一些特效插件.任何游戲開發、虛擬設計的相關團隊、個人等非商業性人群及教學領域中的教、學人員均可免費使用該引擎數據包(UDK).而且Epic公司和GA國際教育機構共同成立了中國首家虛擬技術教研中心,向一些高等院校的游戲、動漫、新媒體等數字藝術專業提供免費的UDK和部分Unreal 3引擎技術支持,并將UDK和Unreal 3部分引擎技術翻譯形成中文版教程,為游戲開發愛好者和教師、學生提供程序編碼、交互設計等技術學習與交流平臺[2].
然而,在使用Unreal 3引擎制作虛擬場景時,設計者往往會遇到許多疑難問題.例如:Unreal 3引擎與3Dmax模型不相融;材質貼圖錯位或找不到;模擬物體碰撞失效或失真;燈光設置混亂和分機渲染死機等.這些問題給3D虛擬場館的制作帶來了諸多不便.因此,為了便于實際操作,我們將這些經常遇見的疑難問題進行梳理,并給出了完整的解決辦法.
要實現3D虛擬場館設計,可先利用3Dmax創建一個虛擬場館模型,再選用Unreal 3作為引擎平臺.值得一提的是,3Dmax軟件里的基本參數與Unreal 3引擎中的基本參數之間存在差異性,需先做好2個軟件單位之間的互換,以及場館模型導入Unreal 3引擎中的結構調整、材質編輯等基本操作,然后再進行物體之間的碰撞參數調節、場館燈光參數調節和渲染參數調整等.具體操作步驟如下:
1)3Dmax軟件基本參數與Unreal 3引擎基本參數間的單位換算
在3Dmax中創建虛擬模型需要先考慮物體的比例、大小及虛擬場館內部空間等關系,同時應避免將3Dmax場館模型導入到Unreal 3后發生單位不匹配等問題,為此,需要提前對3Dmax和Unreal 3的基本單位進行換算.3Dmax是以米為默認單位,而Unreal 3則是以英尺為默認單位.因此,在用3Dmax建模時,需將“系統單位比例”中的1個單位設置為1.438 cm,這樣在將模型導入Unreal 3時不會出現比例偏差.3Dmax的單位設置如圖1所示.

圖1 3Dmax單位設置
同時還應該注意3Dmax和Unreal 3之間的坐標差異,在制作虛擬場館模型時需要將3Dmax的坐標調整到與Unreal 3相一致的坐標.這樣在導入時才可以避免坐標混亂和模型出錯,影響場館的測試.
2)在Unreal 3中實現物體材質編輯的要點及辦法
Unreal 3引擎中的材質主要由3部分內容構成,分別是:材質節點(Material Nodes)、材質通道(Material Channels)和材質表現(Material Expressions).3個材質編輯器彼此相互關聯,具有遞進式的層次感,且與其他通用的設計軟件不一樣,它們的排序是從右到左排列,在使用時需要改變觀察習慣.下面以Unreal 3中這些材質編輯工具創建一個材質為例,詳細介紹材質的創建與調整辦法.
①打開Unreal 3引擎(UDK版本即可),再打開編輯器中心(Generic Browser).
②在編輯器中心新建一個文件,在對話框里輸入相關參數,此處可以根據自己的喜好設置.
填完后按ok鍵即可,此時可以看到如圖2所示的材質編輯器.在材質編輯器的左側列表中還可以看到新增了一個Introtomaterials的材質文件,點開此文件就可以看到剛剛創建的材質組件,但這個組件并不是材質節點.在材質編輯器中心可以看到新建的材質球.

圖2 材質編輯器界面及其中心
如果此材質不符合編輯要求,就可以直接選中刪除,并再按前一步驟重新建立一個材質直至符合設計要求.直接從3Dmax中導入的模型文件,會隨機帶入3Dmax模型中已賦予的材質,但沒有指定貼圖的空白材質是不會在Unreal 3材質編輯器中出現的,這是由于Unreal 3引擎的自動加速處理功能導致的.但是,在Unreal 3材質編輯器中,輕易刪除不了3Dmax中帶入的或正在使用和被賦予的材質,如要刪除它,就必須先解除相關材質與物體的關聯性.
③再把鼠標移到圖2中的灰色區域,也就是材質編輯器中心,在此單擊鼠標右鍵,單擊New Material按鈕就會出現一個對話框,按自己的要求填入相關基礎信息(與3Dmax創建材質的方法類似),其他相關參數按Factory按鈕默認即可,Factory里的參數會根據第二步創建數據自動記憶保存,填完按ok鍵.此時會彈出如圖3所示的材質表現窗口,進一步對所有創建的材質進行編輯處理.

圖3 材質表現窗口
④創建好材質后,可以在Unreal 3材質編輯面板左下方列表中看見Introtomaterials文件上多了一個星形記號,表示此材質文件可以保存了.點擊Introtomaterials材質文件,在菜單欄里點擊文件保存.Introtomaterials材質文件必須是*.upk類型的文件,保存后星形標記就會立即消失.
3)在Unreal 3實現虛擬物體碰撞相關參數的調節方法
在UDK引擎中,力學碰撞模擬是模仿現實物體之間相互撞擊的最佳辦法.與其他虛擬碰撞軟件相比,UDK引擎可實現三類不同類別的物體碰撞實驗.①箱形體(Box),該類物體可以被任意碰撞變形;②長條體,也被稱為膠囊體,這類物體只能沿著長和寬的方向扭曲變形;③球形體,跟Box體類似,但它在受力后會發生雙向或多向均勻扭曲.這些物體碰撞實驗可以通過系統自動調節和手動調節碰撞參數來實現[3].
①Unreal 3中物體自動碰撞參數調節.在UDK引擎力學碰撞中,提供了一個Phat快捷工具來實現物理碰撞參數調節.以膠囊體碰撞為例,打開Phat中的Phys- Capsule3- Physics命令,發現膠囊物體周邊幾條環繞其腰間的線框,這些線框就是碰撞物體的骨骼節點或變形點,單擊Simulate按鈕,系統會自動調節膠囊體的碰撞參數,便可以看到真實的物體碰撞變形效果,再次點擊Simulate按鈕就可以停止操作(見圖4).利用這個快捷功能,就可以輕松實現物體之間的相互碰撞[3].值得注意的是,為了方便操作,在編輯物體碰撞時,最好先鎖定其他不相干的物體,便于系統在計算時不會影響這些物體.

圖4 碰撞調節實驗
②Unreal 3中手動調節物體碰撞參數的方法.手動調節碰撞參數其實就是反復調節UDK中物體的移動、旋轉和縮放等參數值.繼續以這個膠囊體為例,單擊該膠囊體,在其屬性欄里顯示該膠囊體中心有一個Axis Gizmo命令,這是專門用來移動、旋轉和縮放碰撞物體的命令.單擊Move工具,進入可移動狀態,再單擊并移動藍色的Gizmo Line(顯示在z軸線上),讓物體沿著Axis Gizmo軸移動,可按自己預設的碰撞效果調節具體參數.若需旋轉此物體,則可單擊鍵盤上的e鍵,進入旋轉狀態,此時會看到Gizmo的3種顏色線框.這些線框分別表示x,y,z軸的Rotation Gizmo旋轉線.若屏幕上沒有顯示出Gizmo線框,則可以啟動對象渲染狀態(按鍵盤上的h鍵即可)來顯示Gizmo線框.
對該物體進行縮放碰撞操作的步驟與旋轉操作的步驟類似,區別在于縮放還支持非等比收縮.可以先單擊鍵盤上的r鍵或直接單擊Scale按鈕,把模式調整為Scale Mode,此時可以看到Gizmo移動坐標.單擊物體并拖動Gizmo,將該物體向上或向下擠壓拉升直到預設的碰撞效果為止.同時按住Shift鍵再拖動該物體,可以實現等比縮放.
當需要對某個物體進行約束時,可先點擊Body Mode按鈕并將模式切換到Constraint狀態,此時可以看到如圖5左側面板所示的效果.一般狀態下,若一個物體被約束處理過,則該物體線框的末端會顯示為綠色.對于Swing的約束表現,無論是Swing1還是Swing2,只要沒有給予相關約束參數,都顯示為一條綠色線條(如圖5所示).

圖5 約束調節面板
4)在Unreal 3中實現場館燈光參數的調節方法
在Unreal 3或UDK引擎數據包中布置虛擬場館燈光非常容易,但要設置虛擬仿真的燈光效果卻非易事.它的調節有別于3Dmax中的寫實燈光,因為在Unreal 3中燈光照射不會受到反射、折射等環境光的影響.因此,在調整燈光時需要掌握場景中重點虛擬的地方和了解Unreal或UDK引擎數據包中燈光調節的規則.例如,在應用Unreal 3中的虛擬燈光時,了解以下相關參數的調節方法有助于提高虛擬燈光的虛擬效果:
①盡可能地減少動態陰影,從而降低后臺的數據計算量,可以通過設置輔助光源來模擬一些動態光源的陰影效果.
②盡可能地拉大光源與陰影投射的距離.
③Unreal 3場景中的全部受光表面,都應該有各自的發光源.但有些受光表面看上去像自發光源,其實在渲染過程中是不發光的,必要時應該給這些受光表面加上一些輔助光源.
④如果用到陰影貼圖,就要選用一些像素較高的貼圖文件,以保證陰影細節部分的效果.
⑤當一個靜態光源影響到其他非照射的物體時,可以打開Uselightmap光源貼圖,將此物體的光照“嫁接”到光源貼圖里去,避開其干擾.
⑥在光源貼圖中,盡量不要加入任何光源功能,因為它將增加程序的運算量,并導致文件過大.使用陰影貼圖時,相關物體所使用的貼圖必須保存到原始文件包里,以便使物體與貼圖相互關聯.這是因為,如果運算時找不到陰影貼圖,就會在光源照射到對象物體時自動生成陰影,使得文件增大,導致內存不足無法存儲.
5)利用Unreal 3中Swarm的渲染技術加速實現虛擬場館渲染的解決方法
在完成模型和燈光、材質、動畫等設置后,就需要對最終的照明進行渲染輸出,渲染后才可以快速地進行測試等工作,這時會用到UDK Swarm的相關設置.
Swarm的功能是調動所有局域網絡中的電腦參與到文件渲染中來,相當于分機渲染,Swarm的好處是加速照明渲染、編譯等速度.但是,Swarm渲染僅僅只對場景的照明進行渲染.
Swarm的渲染一般用于高品質的燈光渲染效果,對一些低級別的燈光渲染意義不大.Unreal 3中照明渲染分4個等級:預覽級、中級、高級、產品級.通常,較復雜的場館用預覽級模式渲染,而不用Swarm渲染,整個渲染過程只需花費2~6 min.如果要求達到產品級別的燈光效果,就要使用Unreal 3的渲染技術,一般需要花費1.5 h以上.因此,在這類高級別要求下,一般才會采用Swarm分布式渲染來節約場館的測試時間.
Swarm分布式渲染還包含了2個相關聯的渲染運行程序:一個是Coordinator程序,另一個是Agent程序.Coordinator程序是監控和協調所有參與場館燈光渲染的計算機狀態,負責調動和停止正在渲染的計算機.Agent渲染程序相當于Coordinator程序的執行者,分布在每一臺參與渲染的電腦程序中,一旦關閉,Coordinator程序就會停止該計算機的渲染任務,同時將任務分配給其他計算機[4].
值得一提的是,在設置Swarm Agent.exe時,需要先把Developer Settings中的Show Developer Menu值選擇為True,Developer Settings相關設置菜單才會顯示出來;再把Distribution Settings下的Agent Group Name和Allowed Remote Agent Group參數值重新設置(這個值可以任意填寫,但每個參與渲染計算機中的這些值都必須一樣,否則程序運算時容易出錯).其中,Allowed Remote Agent Name的設置尤為重要,它給Coordinator程序傳達了一個信息,表明這臺計算機中的Agent程序參與了該場館的分布式渲染,Coordinator程序才會保存相關的計算機名.在允許多臺計算機參與的情況下,每臺計算機名用分號隔開即可[5].完成參數調整后,若Agent Version中的State顯示“Available,~”,則代表設置成功,反之就代表設置失敗.
在復雜場館測試時,如果Swarm程序不運行或安裝的UDK數據包不支持所設置的參數,就表示需要降低其渲染分辨率.先找到EngineConfigBaseEngine.ini中的“System Settings”項,把“Full screen=True”改為“Full screen=False”,然后將窗口大小“Res X=1 280,Res Y=720”調整為“Res X=800,Res Y=600”,再進行測試.如果Swarm程序還是不運行或UDK數據包還是不能支持所設置的參數,就需要再降低相關參數,直到測試成功.
1)使用Unreal 3引擎技術實現場館中的單元測試方法
為了最終在引擎中測試時不使模型顯示、場館貼圖和紋理坐標產生錯誤,通常會在3Dmax中作一些簡單的渲染測試和調整.在這個測試環節中,無需加入其他光源,直接采用系統自帶光源即可,這樣做的好處是便于觀看模型在沒有外部光源影響下的原始效果.如果在3Dmax中測試成功,就可以將模型導入到Unreal 3引擎中進行單元測試.
在Unreal 3引擎中測試單個模型時要盡量保證仿真效果.模型的擺設盡可能的自然,盡量不要反復復制;燈光和材質等的相關參數應按前面所強調的要求預設.比如在對場館中超市場景的測試時,通常會將擺放在貨架上的物品模型在角度或者位置上稍作變化;如果部分模型貼圖對位不準確,就應及時調整,增強其虛擬場館的真實感[6].
2)在Unreal 3中實現整體場館組合測試的方法
對場館所有的單個單元進行分批測試和調整,確定無疑后,再對虛擬模型進行整體組合.組合之前需注意以下幾個問題:①確保所有單元的單位比例與位置都準確或相匹配;②檢查所有單元模型的色彩及貼圖、燈光等表現是否合理(仿真效果);③在進行多個單元模型組合時會發現整體模型的面片數量明顯增多的現象,嚴重時還會影響到程序的運行,因此,需要對整體模型進行3次及以上的優化或壓縮;④在整體場館組合過程中,經常會出現材質玻璃反射的運算量增大而導致死機的情況,這時需要調整部分單元模型的玻璃反射方法,如采用一些假貼圖模擬真實反射,既解決玻璃的反射問題又兼顧程序的運算速度,一舉兩得.
Unreal 3引擎技術在fps單擊游戲開發、模仿真實的室內碰撞、人機交互等方面最具特色,在全球游戲、虛擬場館開發、交互設計等領域中,Unreal 3引擎技術和UDK免費引擎已經成為各大商家、教育機構和研發中心使用最多的引擎技術.且在目前軟件市場上,Photoshop,Zbrush,3Dmax,Maya等一些新版本的設計軟件及部分插件先后研發了與UDK引擎數據包相兼容的功能,共同開發一些技術性強且更具人性化的虛擬設計工具,這些新功能、新工具也給設計者帶來了全新的挑戰.以上這些調整技巧只是解決了部分問題,在實際操作過程中可能還會遇到更多的新問題,這就需要設計者平時多練習、多積累,豐富自己的實踐經驗.另外,掌握以上的調整技巧,能幫助設計者在制作虛擬場館時更好地運用Unreal 3引擎技術.尤其是燈光參數調節方法和Unreal 3中Swarm的渲染技術,這些技術使用得好可以得到立竿見影的效果,還可以節約大量的制作時間,提高制作效率.
[1]于水華.淺談RPG游戲開發的關鍵技術[J].電腦與電信,2011(2):66- 68.
[2]朱旦晨,宋桂嶺.基于Unreal 3的虛擬博物館系統的實現[J].計算機與現代化,2010(12):48- 52.
[3]榮琪明.次世代游戲引擎的虛擬現實項目應用研究[D].廣州:華南理工大學,2012:41- 52.
[4]蔣燕萍.虛擬環境漫游中的關鍵技術[D].北京:北方工業大學,2013:36- 38.
[5]黃亞鷹,邵陽.游戲引擎創建虛擬現實校園的研究與應用[J].湖南理工學院學報:自然科學版,2011,24(2):49- 51.
[6]林國偉.建筑三維虛擬漫游系統的研究[D].阜新:遼寧工程技術大學,2007:49- 57.
(責任編輯 陶立方)
Analysis of the difficult problems of Unreal 3 engine technology in the design of virtual stadium
GONG Baimao
(CollegeofCultureandCommunication,ZhejiangNormalUniversity,Jinhua321004,China)
The design of virtual stadium in real life spread more and more widely, it often encountered 3Max files and Unreal blending, texture mapping was error- prone, lighting was not ideal and test file crashed and other problems in the design, brought a lot of difficulties to the designers. In view of this kind of problems, combined with the virtual venue design practice cases, considering the file between 3DMax and Unreal 3 software exchange, texture skills, lighting and test items, it was put forward a series of solutions to R & D designers for better and faster developing of the virtual project.
Unreal 3 engine; UDK; virtual venue; model
10.16218/j.issn.1001- 5051.2017.02.007
2016- 12- 29;
2017- 02- 27
龔柏茂(1981-),男,江西金溪人,講師.研究方向:數字媒體藝術.
TP311.52
A
1001- 5051(2017)02- 0161- 07