Thursday, September 16, 2010

Maya COD Map Importer

最近剛裝了 Maya 2011,邊學邊玩之餘也順便整理了一下之前空閒時好玩做的一個 Call of Duty (World at War,也是叫 WOW ) 地圖 plug-in,主要功能其實也很簡單,就是讀取 COD 的 map 檔,然後 parse 地圖裡的資訊,將場景裡的物件轉換為 Maya 中的 polygon 並 assign 貼圖
,大致上就是這樣,由於有研究過 COD 的人大概都知道 COD 是架在 Quake engine 上 ( http://en.wikipedia.org/wiki/Call_of_Duty:_World_at_War 可以找到很多資訊和連結 ),COD6 或是 7 是怎樣的架構,不是很清楚,但 COD5 由於有開放它的編輯器,所以處處可以看到熟悉的影子,場景物件主要還是分為三大類,Brush,Patch 和 Model,另外加上跟遊戲性(功能性?) 相關的 entity 物件

這個 plug-in 只處理 brush 和 patch 的部份,屬於 model 的物件由於 COD 它有自已的 model 格式,網路上雖然我有找到可以將 COD model 輸出成 obj 格式的小工具,但由於是介面工具沒有 command line 模式,一次要轉大量物件實在是太麻煩了,這部份就先忽略,等之後再來處理。

Brush 就是單純的 plane 集合,所以很好 parse,patch (曲面) 稍微麻煩些,因為只有存控制點,要先將這堆控制點建出一個面的 polygon 再 parse 進Maya。 plug-in 是繼承 Maya file translator,只實作讀 map檔的這部份,將 plug-in 載入之後就可以在 import 的選項中看到 .map,如圖


選一個 cassino 的地圖來測試,
只有 wireframe 的


加上貼圖的


看過 COD 的地圖之後,讓我佩服的就是它們給工具用的 map檔是用明碼,清楚明瞭以外,artist 的功力也讓我驚艷,居然只用 brush 或是 patch 可以做出像廢墟,地上的破碎這樣感覺的地圖,真是太厲害了。


Maya 從以前到現在,整體的架構,我實在是很欣賞,同樣的 plug-in 從 Maya 8.5 的版本移植到 Maya 2011 幾乎不用做任何修改,只需改改 link 的 library 和 include 檔就行了,省去了開發上的時間,想想自已開發的工具,若是要換到別的平台 (Linux, Mac),還沒開始就知道是惡夢來臨了 lol 。

No comments: