本文主要是介绍关于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 ” | |
索引表 |
这篇关于关于DNF的多媒体包NPK文件的那些事儿(7) - IMGV5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!