RenderWare

RenderWare

Renderware是遊戲業界知名工作室Criterion Software研發公司的看家3D遊戲引擎,據稱此公司授權500多款遊戲使用Renderware, 正因如此,遊戲業界大佬EA於2004年8月將Criterion Software收歸旗下。

前言

RenderWareRenderWare
前言
Renderware是遊戲業界知名工作室Criterion Software研發公司的看家3D遊戲引擎,據稱此公司授權500多款遊戲使用Renderware, 正因如此,遊戲業界大佬EA於2004年8月將Criterion Software收歸旗下。
作為目前遊戲開發界的一款流行的3D引擎工具,Renderware支持了在多個遊戲平台上的許多優秀3D遊戲的誕生,在下表中你可以找到那些獲得過若干榮譽的遊戲,他們都是基於Renderware開發的。
使用Renderware的遊戲列表:
遊戲英文名遊戲中文名 遊戲平台
Grand Theft Auto III 《俠盜車手3》 PS2,PC
Grand Theft Auto - Vice City 《俠盜車手罪惡都市》 PS2,PC
Mortal kombat 5: Deadly Alliance 《真人快打5死亡聯盟》GBA,PS2
Suikoden III《幻想水滸傳3》 PS2
Pro Evolution Soccer 《實況足球歐洲版》 PS2,PC
Burnout 《橫衝直撞系列》 PS2,Xbox
Dream Of Mirror Online 《軒轅2:飛天曆險》 PC
粗看一下讀者也許會很疑惑,Renderware居然在各種遊戲平台上都被廣泛的套用,而且還涉及RCG(賽車遊戲)/ RPG(角色扮演)/SPG(體育遊戲)/ACT(動作遊戲)/FTG(格鬥遊戲)等多種遊戲類型。Renderware為何如此強大?為什麼各大遊戲開發商都對它如此傾心?本文將詳細介紹Renderware各個系統的特點,希望能給國內的遊戲開發人員一些幫助。
筆者撰寫本文的目的是向讀者介紹Renderware的大致特性,並非專門介紹Renderware的3D算法及編程語法,因篇幅所限,所以本文對此不做詳細解釋,若有機會日後筆者會單獨撰文對此進行介紹。目前國內遊戲公司在項目開發中都會考慮採用成熟的遊戲引擎,Renderware作為業界知名的引擎,有許多令人稱道的特性,但也有很多不足之處,希望本文能為開發人員在項目初期考察引擎提供一些參考,讓大家可以結合項目需求考察引擎特性,評價是否Renderware是否適合用於自己的項目。
PC/PS/Xbox/GBA……一個都不能少
Renderware最為人稱道的優勢就是跨平台特性(這與EA的產品線路如出一轍,難怪EA一定要把Renderware收歸旗下),使得開發者可以忽略平台差異利用Renderware接口,高效的開發上層功能,但同時,Renderware也提供了針對不同平台的最佳化接口使其對硬體管線的利用達到最優狀態。
目前Renderware支持的平台有索尼PlayStation2、微軟Xbox、任天堂Game Cube、微軟Windows(Direct3D),、微軟Windows(OpenGL)和蘋果MacOS(OpenGL)。
為了支持多平台特性,Renderware採用C語言編寫,這是因為C在各個平台上都有統一的標準庫,而且編譯也十分方便。而相較之下,C++有太多的新特性和新支持庫,這些新東西並非在所有的平台上都能獲得支持。同時Renderware利用結構體進行了類C++的封裝,使其具有面向對象的特性,所以大部分C++程式設計師對引擎的語法結構都不會感到陌生。
Renderware引擎的功能採用外掛程式定製的概念,相對獨立的功能都以外掛程式的形式提供(大多數是靜態程式庫LIB的形式),而這些外掛程式的契合度很低(除了底層的核心外掛程式)。一方面,遊戲開發者可以根據項目需求有選擇的包含外掛程式,降低代碼規模;另一方面,針對某些平台的特殊模組也能夠包裝到外掛程式中,Renderware的多平台特性不會因為增加新功能而受到破壞;最後,外掛程式的設計是開放的,開發者可以自己實現新功能並以同樣的外掛程式形式運用到項目工程中。
Renderware作為一款強大的3D引擎,支持OpenGL和DirectX8.0及以上版本,對3D程式設計師來說,不管你以前是在OpenGL還是Direct3D下開發,用起Renderware來都會感覺得心應手。
Renderware 3.7 SDK中附帶3ds Max5.0、3ds Max6.0、Maya4.0、Maya5.0的導出外掛程式,可以區分不同平台導出場景、模型、骨骼和蒙皮動畫、變形動畫、貝塞爾曲線等。
總體來說,使用Renderware開發的遊戲,在平台移植上有先天的優勢,因此,在PC遊戲市場和視頻遊戲市場百家爭鳴,Xbox和PS殺得難解難分時,開發商既然猜不出誰會最終成為一統天下的遊戲平台,那么採用在任何平台都能運行的引擎,無疑是最明智的選擇。
創造世界
Renderware沒有大規模室外場景管理的功能,因此,用Renderware作MMORPG遊戲似乎不是一個很好的選擇,原因可能是Renderware更傾向於支持專用視頻遊戲主機平台上的單機遊戲開發,而這部分開發對室外場景的需求不大,因此Renderware在室內場景的管理和渲染部分更有優勢,本節將對此作一介紹。
Renderware的場景基本只能從美術編輯工具中導出(3ds Max或者Maya)中直接導出,如果想自己生成地形或者編輯場景,都需要開發人員按項目需求開發編輯器,Renderware並沒有專門的地圖編輯器。
Renderware在導出時,首先會做BSP分割,之後,場景會根據分割數據被劃分為若干立方體區域。在Renderware中,它被稱作WorldSector,這些立方體有以下作用:
1.渲染時,只有能被看到的WorldSector才會送入下一級檢測。
2.在碰撞檢測中,也只檢測能被看到的WorldSector中的碰撞。
3.所有的物件和燈光都會綁定到各自的WorldSector,只有能看到的WorldSector所連線的物件才會被處理。
此外,開發者還可以對場景進行PVS(Potentially Visible Sets)預處理,針對競速類遊戲,還可以預先定義攝像機軌道,然後再對這條軌道進行PVS預處理。
最後Renderware還具備對場景做入口檢測(Portal Culling)處理的工具。
我們可以看到,Renderware對室內場景儘可能的提供各種最佳化措施,而且這些最佳化都是預處理過程,這代表著Renderware能夠高效的管理和渲染場景。
創造人和動物
Renderware的動畫部分可能是最為強大的部分,這也是很多動作/格鬥/體育類遊戲青睞它的原因,Renderware可以導出剛體動畫、蒙皮動畫、變形動畫並且可以實現複雜的角色骨骼系統。
Renderware骨骼動畫的實時數據是以時間為參數從關鍵幀的插值得到的,這個插值過程是以骨骼的運動插值為依據,因此是非線性的,不會引起模型變形。而變形動畫是操作每個頂點的移動,這種動畫的實時數據是通過頂點線性移動的插值得到的。變形動畫可以很好的表現骨骼動畫難以描述的動作(比如面部肌肉變形產生的表情動畫)。
相對來說,骨骼蒙皮在遊戲中運用的比較多,Renderware的骨骼外掛程式提供以下功能:
1.動作間的平滑過渡:利用骨骼動畫插值器,角色從一個動作變化到另一個動作時,可以根據過渡時間給兩個動作賦予不同的權值,使過渡過程看起來非常平滑。
2.骨骼系統的拆分:可以把角色的骨骼再細分為更小的子骨骼系統,分別讀取各自的動作檔案。這樣一來,各部位分別獨立,組合起來的動作就會顯得非常豐富。
3.動作融合:其原理與動作過渡一樣,角色可以同時進行兩個動作。按權值組合。比如角色中槍的動畫和跑步的動畫融合,看起來就是在跑動中中槍。
4.可以重載插值方式得到自定義的插值數據。
5.可以壓縮骨骼數據,壓縮骨骼數據可以節省大量的記憶體,但解壓縮有額外的時間開銷。
要有光
Renderware的光照分為兩類:靜態和動態。
動態光照包括方向燈、點光源、環境燈、射燈、這些動態燈與DirectX中的燈沒什麼區別,動態燈光能夠有效的模擬動態光源和運動物體在燈光下的表現,而且使用簡單,但無法體現光源遮擋和陰影等細緻的光影效果,因此表現力不佳。同時,由於硬體的限制,這些動態燈的數量也是有限的。動態燈會對效率有較大的影響。
Renderware的靜態燈包括兩種,一種是頂點色記錄光照信息,美術人員可以事先在工具中調整物件和場景的頂點色,用來模擬光照。這種方法簡單、速度快,編程人員幾乎不需要做任何工作就可以得到靜態光照效果。但對於頂點數較少的牆面等幾何物體,如果頂點間的距離太大,頂點色之間的插值融合會形成明顯的硬邊,效果很不自然。
靜態光照的另一個辦法是LightMap,LightMap預計算靜態光照對材質的影響,將光照信息保存到一張或多張紋理圖上,利用多層紋理渲染場景,得到靜態光照效果。
它的優點是:
1.速度快。
2.與光照模型獨立,可以在此基礎上套用不同的光照模型。
3.由於光照圖記錄的光照信息是以像素為單位,而光照圖的大小和精度又可以自由控制,因此效果很好。
缺點:
1.多次紋理渲染的消耗。
2.紋理所占記憶體的消耗。
3.不能套用在動態光源和運動物體上。
4.由於需要兩次貼圖,與Renderware的一些紋理特效可能不兼容。
Renderware生成LightMap有兩種方法,一是在程式中設定若干動態燈光,然後使用LightMap外掛程式對場景光照預計算,這種方法生成的LightMap邊緣不夠柔和,而且計算時間也比較長。
另一種方法是直接在3ds Max中進行材質烘焙,把靜態光照產生的LightMap先生成出來,然後在渲染時再載入這些光照圖。
總體來說,Renderware的光照系統並沒有十分特別之處,應該說是比較薄弱的環節。
材質特效
Renderware的材質特效包括環境映射、凹凸貼圖、雙重紋理映射、紋理動畫。這些材質特效都是在RpMatFX外掛程式中提供的,使用非常簡單。
使用這些材質特效的步驟如下:
1.首先綁定RpMatFX外掛程式。
2.如果有蒙皮動畫的模型,那么蒙皮動畫的包含庫要替換為支持RpMatFX的庫。
3.將需要材質特效的原子設定到指定的渲染管線。
4.為指定材質設定特效。
5.讀取材質特效所需要的附加信息(環境映射紋理、凹凸紋理、第二層紋理、紋理動畫數據等)。
6.渲染該物件。、
同一物件的不同材質,可以對應不同的材質特效。因此,上述紋理特效對一個物件來說是可以並存的,也就是說,我們可以得到一個既有凹凸貼圖,又有環境映射的物件。
卡通渲染
相對來說,Renderware 3.7這個版本比較吸引開發者的是快速、方便的卡通渲染功能,開發者不需要了解卡通渲染的算法和原理,只需做簡單的設定就可以實現卡通渲染的效果。而且Renderware3.7提供了方便的卡通渲染編輯器,可以靈活的對卡通渲染的輪廓線、光照紋理進行編輯。
在Renderware附加的特效包中提供了卡通渲染外掛程式RpToon,這個特效包還包括粒子外掛程式RpPTank和體育遊戲角色渲染外掛程式RpTeam、RpCrow。從這些外掛程式的功能可以看出,它們都是採用可程式渲染管線進行渲染的。在Renderware中,原子的渲染管線可以指定為普通、紋理特效、卡通渲染三種之一,由於有部分可程式渲染管線和蒙皮動畫的計算相關,因此Renderware被迫為蒙皮動畫外掛程式RpSkin分別提供了三種渲染管線的三個外掛程式。要使用卡通渲染,就必須載入卡通渲染所對應的RpSkin外掛程式。

用法

使用Renderware的卡通渲染外掛程式,可以按照以下步驟進行:
1.在3ds Max導出外掛程式的選項中要勾選卡通渲染選項,導出時外掛程式會預計算卡通渲染需要的數據。
2.在Renderware提供的卡通渲染編輯工具里導入這些初始模型,對輪廓線和卡通光照圖進行編輯。
3.在主程式中綁定RpToon卡通渲染外掛程式。
4.如果有蒙皮動畫,蒙皮動畫的包含庫要替換為支持RpToon的庫。
5.將每個待渲染的原子的渲染管線設定為卡通渲染。
6.載入事先編輯好的輪廓線和卡通光照圖數據檔案。
7.渲染此物件。
其他
Renderware Graphic還具有以下特性:
1.高效的粒子系統
2.模型動態LOD
3.支持FLASH檔案的2D界面系統
4.高效的基於面和包圍盒的碰撞檢測系統
5.提供支持PS/VS的接口
另外,Renderware組件中除了Graphic而外,還有Renderware Audio、RenderWare A.I、RenderWare Physics、RenderWare dPVS等其他模組,利用他們可以有效的縮短遊戲項目的開發周期。
Renderware未來版本的展望
Renderware Graphic提供了完善的3D模組,幾乎所有常用的3D功能都能很簡便的被調用,但它也有許多不足之處:
1.沒有室外場景管理,不適合大型MMORPG類型網遊。
2.光照系統薄弱,表現力不高。
4.無法擴展底層,源碼非公開。
5.不支持HLSL。
6.定製的渲染管線只支持兩層紋理融合(可能是考慮到平台一致性)。
筆者認為,Renderware更適合在專用遊戲平台上進行開發,適合於射擊、體育、動作類的遊戲類型,適合於項目周期短,3D技術儲備薄弱的開發公司。
目前Renderware 對外的版本是3.7,但有訊息稱EA公司最新的Renderware版本已經到了4.5,這個版本更開放了可程式管線的接口,支持HLSL語言,靈活性更大。希望Renderware這款有輝煌戰績的老引擎能在新東家那裡成長得更好,走得更遠。

相關詞條

相關搜尋

熱門詞條

聯絡我們