warcraft是非常經典的游戲,而由warcraft衍生出來的各種玩法(dota、3C以及各種劇情版的war3游戲),同樣是經久不衰。這些得益於warcraft的牛逼編輯器。
不管是策划還是玩家都夢想着有一套功能強大且使用方便的編輯器來實現自己想法,而WorldEditor(簡稱WE)就是這樣的編輯器。WE應該是本人見過的最強大的地圖編輯器(沒有“之一”),這種強大不僅是建立在精妙的算法上,同時更為重要的是建立在一種開放、規范的機制和流程之上。其中規范化的模型制作流程是這種強大的重要組成部分。
PS:可能有人會問:“你丫一個服務器端程序員,為啥要研究模型呢?”;答曰:“不想當策划的程序不是一個好美術!”
一、背景介紹及所需工具
Warcraft3強大的WE不僅能刷出變化多樣的地形,也能導入遵循一定規范的模型。這使得玩家能利用WE發揮自己的想象,創作出很多不同的場景和玩法。下面就來談談模型。
3D游戲開發中模型制作是美術同學的主要工作量(這里也沒有“之一”),那么一套好用的工具往往能達到事倍功半的效果。什么工具才能稱得上好用呢?美術同學制作3D模型,最熟悉的莫過於3dsmax和maya。但是由於各家的公司的引擎對模型的要求不一致,而且很多細節上實現方法也不盡相同(比如ribbon、Particle、Attachment Point等等)。因此3dsmax和maya導出的模型往往不能直接使用。現今比較流行的工作流程是:3dsmax制作模型並導出 -》對應引擎的模型編輯器修改模型及動作等等 –》 使用模型編輯器導出成引擎可用的模型格式。這種流程實際上就是對MAX這樣的流行開發工具的導出模型做了一次轉化,這樣有一個比較嚴重的問題:非商業化的引擎(比如某些號稱自主研發的山寨引擎)的模型編輯器往往不是很好用,而且編輯器框架定型后由於文檔缺失以及代碼不規范等原因,很少有公司願意會大改這些架構。這就導致“新三年舊三年縫縫補補又三年”的局面。還有沒有別的方法來解決通用建模軟件到特殊3D引擎的格式轉化呢?答案是有!可以在3dsmax上做二次開發,把模型編輯器的功能寫成MAX的插件,這樣就能在3dsmax里使用並導出成3D引擎可用的模型格式,這是一種比較友好的方案。Blizzard就為war3提供了這樣一套工具——War3ArtTools。雖然Blizzard稱不對這套工具提供任何技術支持,也不知道Blizzard內部是不是使用這種方案,但這套工具確實給其他游戲開發公司提供了一種思路。
War3ArtTools是Blizzard官方發布的制作war3 model的工具集,由於年代的原因以及Blizzard並沒有對這個工具集提供直接的技術支持,因此War3ArtTools只能在3dsmax4、3dsmax5上使用。win7用戶肯定郁悶了。
首先來看看War3ArtTools里都有哪些東西:
這是War3ArtTools的工具集列表,除此之外War3ArtTools包里還有一篇pdf文檔、幾個MAX model和幾個samples。使用這套工具完全可以做出風格迥異的模型。
War3ModelExp.dle 模型導出工具
War3bmtls.dlt 材質編輯工具
War3Preview.dlu 模型預覽工具
War3UserProp.dlu 自定義屬性編輯工具
War3BlizardPart.dlo 粒子編輯工具
War3Ribbon.dlo 條帶編輯工具
二、比例尺
使用Max為war3制作模型,第一步要確定的是比例尺問題。在文檔中一開始就給出說明,War3中一個單位等於Max中一個inch(0.0254米),也就是說在3dsmax中:
一個農民70個單位高(1.778米)
war3中最高的建築為300個單位(7.62米)
一個尋路路徑塊(Pathing Cell)寬度為32個單位(0.8128米)
一個地形塊(Terrain Cell 或 Terrain tile)寬度為128個單位(3.2512米)
一級懸崖(Cliff)高度為128個單位(3.2512米)
WE編輯器和游戲中會始終以origin的位置來擺放對象,所以一般會把origin設在任務的腳底下,建築物則設在地板上。
模型的初始朝向則是這么規定的:3dsmax中的前視圖方向就是war3中人物面對的方向,因此一般會把前視圖的方向調成面向制作者。
War3Arttools工具集中提供了預覽工具,在制作過程中可以隨時看到模型在游戲中的效果。這對美術來說無疑是相當方便的。不需要導出模型,然后啟動游戲加載模型。模型預覽工具效果如下:
三、模型的多邊形數及模型優化
為了讓游戲能流暢的運行,游戲引擎都會對模型的多邊形面數做出相應的限制,使得制作出來的模型能最大程度上利用引擎同時不會導致引擎渲染不過來。War3ArtTools定義了一個表格對各種類型模型的多邊形面數、貼圖大小、骨骼數和帶動畫的Geoset數量做出了限定,用以指導模型制作者。
四、材質和貼圖
(1)貼圖要求:貼圖必須是使用diffuse color map channel,並且只能使用24bit或者32bit的tga文件。文件大小必須是2的整數次冪,最大支持512*512的貼圖,長寬比最大不能超過8:1(寬長比同樣不能超過8:1)。
(2)Mip levels:當處理一張紋理的mip map時,War3ArtTools統一使用簡單的雙線性過濾(simple bi-linear filter)。每一級mip levels是上一級的長寬的一半。導出后命名規則是在名字后加后綴及數字:“_mip1.tga”、“_mip2.tga ”
(3)材質要求:只支持自定義的Warcraft III類型和混合材質類型。一個Geometry只支持一張材質,但可以使用組合材質來實現多層效果。(這個地方我也不太理解)
(4)在貼圖的alpha通道上可以繪制團隊顏色(Team Color),或者為模型創建透明區域。白色(1)為完全不透明,黑色(0)為完全透明。
五、動畫片斷划分
war3使用的是MAX -》 Track View中的“Note track” Key來定義每一個動畫的開始和結束,同時定義時間、長度、是否循環播放等屬性,最終連在一個時間軸上。比如阿爾薩斯模型上的一個Note key是這樣的:
Walk
250.0
0
0.0
//KEY:
//Sequence Name
//Move Speed (0:static)
//Loop (0:loop; 1:no loop)
//Rarity (0:no rarity)
“Walk”是動畫名字,War3ArtTools中對動畫序列做出了一些規則限制(包括制作、命名)。
1. 每個動畫的開始位置和結束位置都必須分別用相同名字的key來標識,而且這兩個key之間不能用其他的“note key”。
2. 動畫名由一個或者多個由空格分隔的單詞構成,如果是多個,則必須用引號將動畫名括起來。完整的動畫名字包括primary name 和 secondary name,比如“Stand Ready”
war3引擎內部有一套名字匹配的規則(best-match method),用來選擇最佳的動畫進行播放。比如一個對象進行攻擊行為,這是需要播放攻擊動畫,在兩次攻擊動畫中間會有一個間隙,這時引擎會嘗試播放一個“Stand Ready”的動畫,如果這個動畫不存在,則會回退到“Stand”動畫序列。引擎內的可能有多種動畫組合用於播放。
“Note track”的參數中有一項Move Speed,定義了unit的移動速度。對象的移動速度一般在250 ~ 400個單位之間(6.35 ~ 10.16米),也就是人的正常跑步速度。這個參數在War3ArtTools的預覽工具中使用,游戲里不直接使用這個值。
引用參考文獻[2]:移動速度的調整關系到unit移動時是否會出現“滑步”,這個速度與動畫播放速度之間要協調好。比如一個unit,根據其模型的大小基本上可以確定這個模型每跨出一步所移動的距離,也就是步長,假設為x,這樣在給定的移動速度s之下,便可以計算出一秒內需要跨出s/x步,這個步數包括了左右兩只腳的步數。然后再根據動畫播放幀速率,在Max中默認為30幀每秒,便可以計算出一個跨步動作需要在幾幀之內播完,也就是動畫的播放速度應該有多快。在游戲過程中如果想要加快或減慢unit的移動速度,不僅是加減其位移的變化速度,還要讓動畫播放速度也做相應比例的改變,也就是讓這個unit的動畫在一秒內不是播放30幀,這樣來避免出現滑步現象。
動畫note key還有一個叫Rarity的參數。war3的動畫選擇系統允許一個模型具有多個同名的動畫片斷,這個動畫將被隨機選擇。Rarity就是用來調節概率的,war3規定該值的取值范圍是1~9,數字越高動畫被選中的概率越低。
如上所說war3中有一套動畫的選擇替換規則,War3ArtTools文檔中給出了詳細的規則說明,有些動畫是必須有的,有些動畫是可選的。下面給出文檔中的部分定義:
六、骨骼
War3ArtTools支持MAX骨骼、幾何體(Animating Geometry)和helpers作為動畫的骨骼。一般使用幾何體來充當骨骼。具體的制作過程不再本文的討論范圍,這里不進行展開。在制作完成后找到自定義屬性面板-》Object Type -》Bone選中即可。
需要注意的是:war3的骨骼是預先定義好的,因此制作骨骼時,骨骼的命名必須遵循一定的規定。
七、掛載點
掛載點其實就是綁定在骨骼上的一些特殊定義的box。這些box不需要材質,引擎也不會對它進行渲染。制作時需要在自定義屬性編輯面板上點選“Attachment Point”。
掛載點也是事先定義好的:
八、其他
War3ArtTools中還定義了其他一些模型細節,比如TeamColor,TeamGlow,Trees,Portrait。這些在參考文獻[2]中都給出詳細的說明,本文就不再做解釋。
九、粒子系統
粒子系統由於內容過多,將會寫在另外一篇blog里,盡請期待!
References:
[1] Warcraft III Art Tools Documentation