关于DNF的多媒体包NPK文件的那些事儿(7) - IMGV5
IMGV5是IMG結構的第五個版本。在所有IMG版本中,IMGV5是最另類的,與其他版本不同,IMGV5采用DDS方案而非像素點陣方式存儲數據。DDS是紋理壓縮圖像文件,廣泛應用于模型設計,系統可以通過Direct3D直接讀取這些文件,并且內存消耗比其他的圖像文件小。IMGV5普遍被各種人物、怪物技能特效所采用,某些物品貼圖也使用IMGV5存儲。
IMGV5包含兩個表,其中一個表包含了DDS圖片的信息,稱為DDS索引項,另一個則是與其他IMG版本一樣作用的普通索引項,盡管IMGV5所使用的索引項占據空間更大。
IMGV5內的圖像數據文件數目等于DDS索引項數,而并非等于普通索引項數,其中每個圖像數據均由一個完整的DDS文件經過ZLIB壓縮后獲得。解壓后的DDS文件無需任何輔助可以直接通過轉換算法轉化為一個點陣圖像(因為這個DDS文件內部也有自己的結構,不像點陣圖像只存儲點陣,尺寸和顏色信息依然需要IMG的索引項給出),DDS索引項的用途無非就是定位壓縮前的圖像數據在IMG文件的位置而已,僅起到便利性而非決定性作用。而普通索引項包含的信息除了其他IMG所應有的信息(圖像長度并不包含因為已經不需要了)之外,還包含了引用DDS的序號以及兩個坐標點;這是由于DDS圖像解出來后一般是個大圖像(如下圖所示),而真正的貼圖幀根據DDS的序號確定使用哪個DDS圖像,并通過兩個坐標點來確定該貼圖屬于這個大的DDS圖像中的哪個區域。這樣,根據對大圖像的裁切,就能獲得該貼圖幀真正的圖像了。
DDS大圖像,紅色區域的位置是由DDS引用型索引項內獨有的IMGV5參數確定的
絕大部分IMGV5所包含的圖片數據都是DDS數據,但有極少數的IMGV5也包含普通的點陣數據,例如“sprite_map_chn_battleship_npc.NPK”(目前僅發現一個特例)內的三個IMGV5文件。這個時候IMGV5依然包含兩個表,但DDS索引項為空,而普通索引項的格式則與其他版本IMG的索引項相同,這里的索引項中顏色格式與IMGV2相同。
另外,IMGV5文件中依然包含一個類似于IMGV4的調色板的信息,但是該信息在IMGV5中沒有任何用途。在絕大部分的IMGV5文件中該調色板的顏色項數為0,也就退化成一個全零雙字;但仍有極少數的例外,例如“sprite_map_infernomode.NPK”(也是僅發現一個特例)中的幾個IMGV5依然保留著帶有顏色項的調色板信息,盡管這些信息沒有任何用途。
?
?
| 文件頭 | 16字節字符串(注意空格)“Neople Img File ” | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 索引表大小 | 4字節,索引表所占空間。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 保留 | 4字節,為0。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 版本號 | 4字節,IMGV5文件結構中的版本號為5。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 索引表數目 | 4字節,索引表的表項(主要是DDS引用型,部分也包括指向型和圖片型) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DDS索引項數目 | 4字節,DDS圖片的數目 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| IMG文件大小 | 4字節,整個IMG文件的大小(不知道有啥用) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 調色板數據 | 首4字節為調色板所包含的顏色數目,之后的4×顏色數目個字節則為具體數據。該數據塊在IMGV5中無用,絕大部分IMGV5該字段退化成1個雙字,即零,但有些IMGV5還是存在調色板數據的。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DDS索引表 | DDS索引項1 | 由若干個DDS索引項構成,每個DDS索引項28字節,用于存儲DDS圖像的信息。 該數據可用于查找DDS圖片在文件中的位置,或者在制作EX的時候起到指示和顯示作用,但DDS文件解析不依賴于該數據。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DDS索引項2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DDS索引項3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| …… | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 索引表 | 索引表項1 | 由若干個索引項構成。索引項包括3種,DDS引用型,指向型和圖片型。圖片型存儲對應圖片的各種信息,指向型只存儲一個數據,即所指向的圖片的幀號。 ?
? ? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 索引表項2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 索引表項3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 索引表項4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| …… | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 貼圖數據 | 圖像數據塊1 | 由首尾相接的圖像數據塊構成。 由于大部分圖像數據由ZLIB進行壓縮,因此經常以“0x78 0x9C”數據開頭(但不可以其為標準作為圖像數據塊的起始點)。 IMGV5圖像數據里大部分都是DDS數據,分別對應DDS索引項,而普通索引項中的DDS引用型索引項不對應任何圖像數據,點陣型圖片索引項對應的點陣圖像數據位于DDS數據之后,指向性索引項不對應任何圖像數據。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 圖像數據塊2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 圖像數據塊3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| …… | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IMGV5圖像數據均為DDS圖像,后續會逐漸介紹DDS圖像的格式,當然,只會介紹DNF里用到的,詳情也可以查看MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/bb943990(v=vs.85).aspx
?
IMGV5文件采取紋理壓縮,因此較難對其進行編輯,一般將其轉化為IMGV2進行編輯。IMGV5文件的好處是節省系統資源消耗,節約內存,但不意味著IMGV5文件的存儲空間會變小,并且將其他貼圖轉化成IMGV5后會丟失一些顏色信息和ALPHA通道信息,因此將補丁或者其他貼圖資源以IMGV5形式發布不是一種值得推薦的做法,除非IMGV5是DNF唯一能夠讀取的版本。
總結
以上是生活随笔為你收集整理的关于DNF的多媒体包NPK文件的那些事儿(7) - IMGV5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java排序算法大全_各种排序算法的分析
- 下一篇: MySQL日期数据类型、时间类型使用总结