Monday, September 20, 2010

COD material 解析

前一陣子因為在做 COD map 的讀檔時,發現它們的 material 是以 binary 的格式儲存,這讓我感到很頭痛,因為我不需要完整的 material 像 alpha blending,depth flag 等的設定,但是我需要至少 diffuse 貼圖的路徑,這樣我才能在 Maya 裡建一個基本的材質然後給貼圖在 assign 給物件 (網路上有工具可以將 COD 的貼圖格式轉為 dds 的格式)
,google 了許久,沒看到有關將 COD material binary 格式轉為可讀格式的東西,沒辦法,也不能每次都靠別人,求人不如求已,反正 material 檔也不過就那小小的 1 KB ( lol 天真的想法!! )

於是打開 hex editor 忘記是那一個了,進到破解模式,開始研究 material 的格式,簡單歸納出一些結果,

- 0x00  material name 的位置
- 0x04  color map name 的位置 (也就是我們想要的 diffuse map name)
- 0x34  shader name 的位置
- ox54  normal map name 的位置

順帶的也找出來一些 flag 的資訊

- 0x09  material sort
- 0x12  blending flag
- 0x2c  depth flag

有了這些資訊,加上轉換過後的 dds 圖檔,我們就可以在 Maya 中建出預覽用的材質球,過程雖然瑣碎,但看到成果時,還是蠻有成就感的 ^^V 。

No comments: