你好,歡迎來到川北在線
微信
騰訊微博
新浪微博
以體素建構三維游戲世界:體素游戲原理分析及技術探索
時間:2016-06-24 10:08   來源:GameRes游資網   責任編輯:毛青青

  體素除了能應用于像《我的世界(Minecraft)》形式的游戲,還可以有更細致的表現(xiàn),成為下一代的三維游戲世界構成方式,本文從技術角度分析當中的原理及相關技術。

  引言

  現(xiàn)時,主流三維游戲一般都需要龐大、精致的游戲世界(game world,或稱為游戲關卡/game level、游戲舞臺/game stage)。所謂的游戲世界,不單指玩家可見的三維渲染環(huán)境,也包含游戲性系統(tǒng)(游戲機制、物理碰撞、人工智能等)所需的虛擬環(huán)境。

  多數(shù)三維游戲使用三維三角形網格(3D triangle mesh)建構大部分的游戲世界,包括地形、建筑、植被及其他靜態(tài)物件。一些以自然戶外環(huán)境為主的游戲,如大部分RPG、MOBA類型游戲,會使用到高度場(height field)去表示地形;一些室內為主的游戲,如一些FPS、TPS、ACT等,會使用構造實體幾何(constructive solid geometry, CSG)技術去建構基本的室內環(huán)境(在許多游戲引擎中稱為 BSP/binary space partitioning 筆刷)。

  游戲世界的制作占總制作成本的一大部分,而隨著游戲平臺的性能提升,以及游戲內容需求的膨脹,游戲世界的制作成本也因應不斷提高。以上的制作方法都各有優(yōu)缺點。三維網格是合乎當代硬件的游戲世界表示方式,也是較自由的建模方式,而且有成熟的數(shù)字創(chuàng)作工具(digital content creation tool)如 3ds Max 和 Maya。但其缺點包括建模成本高、僅為表面表示方式(可能無法判斷一個任意點在其外還是其內)、不容易修改(尤其是在展開UV之后)、不容易做連續(xù)或離散級數(shù)的細致程度(level of detail, LOD)等。高度場和 BSP 的制作成本較網格低,而且較容易修改和實現(xiàn) LOD,但其適用場合就非常局限。

  有沒有更好的三維游戲界的制作方式?此問題一直是游戲制作的重要探索方向。

  體素

  自2009年《我的世界(Minecraft)》的空前成功,根據(jù)IGN于2013年9月的報道,Minecraft 在所有平臺上已售出共三千三百萬份。體素(voxel)進入開發(fā)者的眼球,成為另一種建構游戲世界的可行方式,見圖1、2。

  圖1:《我的世界》游戲截屏。

  圖2: 《我的世界》游戲玩家合作制作的《冰與火之歌》中的君臨城。

  簡單類比,體素就是像素的三維版本。在二維中,我們可使用顏色的二維數(shù)組表示一個影像(image);在三維中也可以用體素的三維數(shù)組表示一個柵格化的三維空間,每個體素儲存一個比特,表示該空間是實心還是空心的,如圖3。這種二元體素(binary voxel)是最簡單的體素形式,但體素還可以儲存其他屬性。例如《我的世界》的體素會儲存讓空間的材質(泥土、石、水等),而在醫(yī)學上會把CT掃描得來的X射線不透光性(opacity)儲存在體素中,如圖4。

  相對于高度場地形及BSP,體素可以同時制作一般地表、山洞、建筑物等固體。

  圖3:把一些體素疊起來,灰色立方體是其中之一個體素。(維基百科圖片)

  圖4:以體積宣染方法去可視化CT掃瞄的體素數(shù)據(jù)。(維基百科圖片)

  破壞與建設

  由于體素數(shù)據(jù)的結構簡單而均勻,它相對于網格來說更容易修改。因此,游戲可以讓玩家建設游戲世界(這是一種用戶生成內容/user-generated content, UGC),也可以讓游戲規(guī)則動態(tài)改變游戲世界,例如可破壞物件(destructible object)、地形變形(terrain morphing)等。不單止修改,無中生有也是可能的──《我的世界》和《魔方世界(Cube World)》(圖5)等游戲都包含程序式生成內容(procedurally generated content),后者更可以生成一個大型的RPG地圖及游戲性內容。當然,純粹自動生成的內容不一定合乎游戲設計師的要求,但某程度的程序式生成功能可以大幅降低制作成本。

  圖5:《魔方世界》完全以程序隨機生成內容,讓玩家可以不斷探索無限的世界。整個游戲僅由一對夫妻制作。

  更細致的表現(xiàn)

  前述的游戲例子都是使用二元體素,其棱角非常突出,雖然可視為一種風格(如8位游戲機時代的象素風格),但是否有方法改善呢?其中一個方法,就如二維影像,我們可以提升體素數(shù)據(jù)的分辨率,例如從每立方米一個體素提升至每厘米一個體素,以增強細致程度。然而,體積數(shù)據(jù)是以立方級數(shù)增長的,所需的存儲容量很高。例如一個 2563 大小的體素空間含一千六百多萬個體素(16M個);而 10243 就會增長至過10億個體素(1G 個)。即使每個體素只占1字節(jié),也需要大量儲存空間。當然,我們可以考慮在一般的應用場合中,大量相連的體素是全部空心或實心的,那么我們可以使用一些數(shù)據(jù)結構去壓縮這些原始體素數(shù)據(jù),如八叉樹。2010年 NVidia 就曾發(fā)表研究,展示如何高效地使用 GPU 去光線追蹤以稀疏體素八叉樹(sparse voxel octree, SVO)表示的嘲。在該研究中,每體素還存儲了顏色及法綫的壓縮數(shù)據(jù)。一個大教堂模型(Sibenik)壓縮后以 440MB 存儲 40963 的數(shù)據(jù),被渲染時的光綫追蹤能力達每秒1億光綫(圖6)。GigaVoxels也是相似的技術。Atomontage 引擎也是使用含顏色的體素數(shù)據(jù),但以 的方式進行壓縮,宣稱可以極高幀率實時渲染大型體素嘲(圖7)。

  然而,每體素儲存顏色/法綫的方案,未必符合游戲開發(fā)所需。此方案的重點,是嘲中每個細節(jié)(例如達 1cm 的精度)都可以獨立編輯。對于在科學應用上通過掃瞄真實嘲(例如地形、建筑、生物等)得到的體素數(shù)據(jù),這種 性是必須的。然而,游戲通常只需要虛擬的嘲,玩家并不在乎大教堂中的某幅墻的凹凸是否和現(xiàn)實完全相同。從嘲制作的角度看,雖然嘲能任意雕刻,十分自由,但這種自由度反而難以管理及掌控。情況有如在二維游戲中,可任意繪畫的非常巨大的地圖。這個問題的爭論點類似在id Software的MegaTexture/虛擬紋理(virtual texturing)技術所產生的制作及游戲容量問題。以下將描述利用等值面提取及數(shù)據(jù)擴大解決細致程度及容量問題。

  圖6: 把 Sibenik 模型體素化為40963的稀疏體素八叉樹(SVO),每個體素含顏色及法線,以GPU光線追蹤渲染。

  圖7: Atomontage 引擎實時渲染大型體素嘲,嘲可以被動態(tài)任意破壞。

  等值面提取

  對于上述談到的棱角問題,以光綫追蹤渲染體素時,可以加入一些插值方式及法綫數(shù)據(jù)令效果更為平滑。另一個渲染方法,是在體素中儲存標量數(shù)據(jù),然后提取該標量場的等值面(isosurface),生成三維網格,再以普通的光柵化方式渲染。如果類比二維的情況,就如同提取高度場的等高綫(contour line),再把這些等高綫渲染。在三維的情況,我們可以存儲嘲的物質密度,或是有符號距離(signed distance),作為標量場。

  給定一個標量場,我們可以使用經典的移動立方體(Marching Cubes, MC)算法去提取等值面。MC 算法十分簡單,只需掃瞄體素數(shù)據(jù),若等值(isovalue)介乎兩個相鄰體素的值之間,便使用綫性插值求出中間的等值面頂點,最后使用查表去決定如何把這些頂點連接成等值面三角網格。由于 MC 只能生成圓滑的等值面,不能表示銳利的頂點及棱,后來的對偶輪廓(dual contouring, DC)可以解決此問題,但就需要在體素中加入法綫數(shù)據(jù),效果如圖9所示。

  圖8: 移動立方體(Marching Cubes, MC)算法中的15個立方體組態(tài)。每條棱兩端的值與等值比較后,若一個大于等值,一個小于等值,就在該棱上線性插值生成頂點,然后按這些組態(tài)生成三角面片。(維基百科圖片)

  圖9: 對偶輪廓(dual contouring, DC)算法可以同時保持銳利的頂點及棱

  CryEngine 3和C4 Engine所支持的體素建構嘲功能,都使用了這類等值面提取方式。這兩個引擎都是以體素方式解決高度場地形的缺點(如無法表示山洞)。下一代的《無盡的任務》包括兩個作品《EverQuest Next》及《EverQuest Next Landmark》整合了Voxel Farm Engine ,全面使用了等值面提取方式的體素去建構大型的游戲世界,包括地形、洞穴、建筑物等(圖10),而且還加入破壞/改變游戲環(huán)境的技能設計。

  圖10: 《EverQuest Next》的嘲截屏,地形和建筑物都是用體素建模,生成圓滑或尖銳邊緣的網格,再使用紋理映射加強細節(jié)及營造游戲獨特的美術風格。

  數(shù)據(jù)擴大

  使用等值面提取方式后,不需要高分辨率的體素來產生圓滑的表面,可以說一方面解決了棱角的問題。但另一方面,我們如何在不大幅增加數(shù)據(jù)量的情況下,提升細致程度?其中一個通用技術就是數(shù)據(jù)擴大(data amplification)──用小量數(shù)據(jù)生成大量數(shù)據(jù)。一般高度圖地形簡單地采用多層重復密鋪(tiling)的紋理,也可算是一種簡單的數(shù)據(jù)擴大。這種方法也可以應用到等值面提取上,不過它需要更復雜的紋理映射方式,例如 C4 Engine 可混合三個平面投影去混合紋理采樣(tri-planar mapping)。要避免視覺上的重復問題,還可以考慮 Wang Tile [10] 或者其他紋理生成技術,這可能涉及如何參數(shù)化(parameterize)等值面的問題?梢詤⒖磮D11《EverQuest Next》的例子。

  圖11:《EverQuest Next》混合兩個投影紋理,以映射至任何拓撲結構的生成網格。

  除了表面的紋理外,還可以加強幾何方面的復雜度,例如我們可以使用位移貼圖技術(displacement mapping)去為表面加上更多細節(jié)。

  數(shù)字雕刻與其他建模方式

  之前談及許多體素的表示方式,以下再談可如何建立、編輯這些數(shù)據(jù),用圖形學的述語,就是建模(modeling)。體素非常適合數(shù)字雕刻(digital scupting),即是把體素當作粘土,提供貼土、推入、拉出、磨平、捏造等工具去制作模型。Mudbox(圖12)和 ZBrush 是現(xiàn)成的數(shù)字雕刻工具,但這類工具通常是基于對表面網格幾何作出修改,而不能改變模型的拓撲結構。采用體素就不會出現(xiàn)這種拓撲問題,但相對地其編輯工具還未成熟。

  圖12:使用 Mudbox 在模型網格上進行數(shù)字雕刻,F(xiàn)時這類技術通常用于角色建模及紋理,通過法線/位移貼圖去增加細節(jié)。

  體素的一個特點,是可以簡單地實現(xiàn)構造實體幾何(CSG)。為了更容易建模,可以使用CSG去為建筑等人工物建模,在運行時才體素化。這樣比直接雕刻省時,容易修改,而且更能節(jié)省容量,并更適合一些自動生成算法。以二維來類比,就像在Photoshop中使用矢量形狀編輯,需要時才光刪化成像素。另外,對于普通的三維網格,也可以進行體素化,但并不容易保存原來的紋理映射。

  高級渲染技術

  除了等值面提取及紋理貼圖等技術外,體素在渲染上還有很多可發(fā)展的技術。由于體素適合光線追蹤,近年有一些研究使用了體素為基礎的實時全局光照,例如體素圓錐追綜(voxel cone tracing)。如果游戲世界本身已經是由體素組成,就省卻體素化(voxelization)的步驟。而這種全局光照,除了常見的慢反射表面(diffuse surface)的二次反射,還可以實現(xiàn)面積光源、光澤反射/折射(glossy reflection/refraction)材質等效果,如圖13。

  圖13:利用體素圓錐追綜制造全局光照。光源從上而下,在地面反射至拱門天花,紅布也有滲色(color bleeding)至天花。另外留意地面材質含有光澤反射。(此嘲本身是以三角形網格渲染。)

  游戲性技術

  當然,游戲并不僅是一個實時渲染器,游戲的重點是游戲性(gameplay)。許多二元體素游戲已經展示出一些與別不同的游戲性元素,在此不作詳細分析。但在技術層次上,我們還需要解決一些動態(tài)體素世界的問題,主要有物理和人工智能方面。在物理方面,最基本的要考慮等值面與剛體形撞的碰撞檢測、支撐分析(切割后懸空的部分可能需要掉落,甚至因結構問題而斷裂),此外也可研究相關的流體模擬、燃燒模擬。人工智能方面,最基本是視線查測及路徑搜尋。體素也可利于進行地理上的推理分析。

  結語

  傳統(tǒng)的游戲世界在游戲性、制作上都有一定限制,基于體素的制作方式可帶來各種創(chuàng)新,提高游戲品質并控制制作成本。然而,顛覆傳統(tǒng)需要各方面的配合,游戲設計、關卡設計、美術制作、游戲性編程都要注入新的思維,也必須輔以扎實的工具及制作流程。在引擎技術上,需要解決大規(guī)模世界的多分辨率建模、依 LOD 作資源串流、實時渲染、物理模擬、人工智能等各個方面的需求。

  或許這也是一個機遇,可以開拓另一條游戲技術道路,制作未來具技術壁壘的創(chuàng)新游戲。

   投稿郵箱:chuanbeiol@163.com   詳情請訪問川北在線:http://sanmuled.cn/

川北在線-川北全搜索版權與免責聲明
①凡注明"來源:XXX(非在線)"的作品,均轉載自其它媒體,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責,本網不承擔此類稿件侵權行為的連帶責任。
②本站所載之信息僅為網民提供參考之用,不構成任何投資建議,文章觀點不代表本站立場,其真實性由作者或稿源方負責,本站信息接受廣大網民的監(jiān)督、投訴、批評。
③本站轉載純粹出于為網民傳遞更多信息之目的,本站不原創(chuàng)、不存儲視頻,所有視頻均分享自其他視頻分享網站,如涉及到您的版權問題,請與本網聯(lián)系,我站將及時進行刪除處理。



圖庫
合作媒體
金寵物 綠植迷
法律顧問:ITLAW-莊毅雄律師