像看一下CSDN这篇文章,非常感谢

查看 20|回复 2
作者:_style   
关于梦幻西游was\tcp素材文件的分析_was、tcp 素材文件-CSDN博客
会员才能看先谢谢拉!~不知道文章里有没有图片或者表格之类的,想看完整版的。

这篇文章, 看一下

congcongzhidao   

其实一年多之前写过一篇类似的文章,用的是之前的CSDN的账号,但是因为当时其实并没有很用心,于是文章中还是有一些小错误。王大理的文章因为年代久远,轻易也找不到了,所以现在重新写一遍WAS文件格式的博客。
    直接进入正题,was文件格式应该是王大理第一次提出来的。网易内部应该用的是tcp的扩展名,但是这一点对数据影响不大,其中的编码方式还是相同的。
    文件头部分:16个字节。
    第1.2字节:文件标志,所有was文件这里都是'SP',如果不是,说明编码有错误。
    第3.4字节:文件头部分的长度,这里没有包含前4个字节。对于was或者说tcp文件,这个值应该是12。(注1)
    第5.6字节:文件中包含图像的方向数量。
    第7.8字节:文件中每个方向包含的图像数量,也就是常说的帧数量。
    第9.10字节:图片的总宽度。
    第11.12字节:图片的总高度。
    第13.14字节:图片的关键点的X坐标。
    第15.16字节:图片的关键点的Y坐标。
    以上是文件头部分。紧跟着文件头是512个字节的调色板部分。每个颜色占用两个字节,16位,565模式,共有256个颜色。对于图片的绘制,所有颜色都是取自调色板中的定义。
    调色板之后是每张图片的起始位置索引。这个索引是从调色板头部作为0值计算的,文件头并没有算在内。这部分的大小是方向数量*每个方向图片数量*4个字节。每个方向的图片索引都在一起。
    图片索引之后是每张图片的内容。其中每个图片头部有4个4字节的信息值,分别表示图片的关键点X,关键点Y,图片的宽度,图片的高度。(注2)
    之后是每一行像素信息的起始位置索引。这段索引应该是将对应图片数据的开始位置(图片关键点X)作为0值计算。所占用的大小是图片的高度*4个字节。
    之后是真正的图片颜色信息,每个单元具体长度取决于数据的内容。
    第一个字节中  如果前两个比特为00时,若其余6个比特也为0,则表示该行的图像数据结束(注3),否则表示带有alpha层的像素。(注4)
    若第3个比特为1 剩下的5个比特为alpha值 且下一个字节为调色板索引。
    若第3个比特为0 则表示将要重复alpha像素,剩下的5个比特为重复的次数。之后的一个字节为alpha值,下一个字节为调色板索引。
    第一个字节中   如果前两个比特为01时,则表示普通像素,剩下的5个比特表示数据段的长度。之后的每一个在长度中的字节都表示调色板索引。
    第一个字节中   如果前两个比特为10时,表示重复像素,剩下的5个比特为重复的次数,之后的一个字节为调色板索引。
    第一个字节中   如果前两个比特位11时,表示跳过像素,剩下的5个比特表示跳过像素的数量。

    注1:所有was\tcp文件的前4个字节都是相同的。之所以存在这4个字节,应该是因为网易的素材包WDF文件中并没有文件名这个概念,也就没有扩展名的概念。这4个字节可以将tcp文件和其他类型(如png,mp3格式)文件区分开。
    注2:在文件头部已经存在关键点X,Y和图片的规格,在每张图片的头部仍然有这4个元素。具体程序绘制图片的时候应该是这两部分都要参与计算。
    注3:作者无法确定是否有某一行结束时,并没有将一行的所有像素点的数据全部给出。
    注4:was\tcp文件中的alpha的取值范围是0~31。

    写得比较笼统,具体的只要用十六进制编辑器打开一个具体的文件就能弄明白了。
_style
OP
  


congcongzhidao 发表于 2025-10-10 10:48
其实一年多之前写过一篇类似的文章,用的是之前的CSDN的账号,但是因为当时其实并没有很用心,于是文章中还 ...

嗯嗯,我现在就想研究研究自己打包个TCP文件试试,但是一直失败。从DDS精灵图裁剪成每帧,然后打包进TCP文件,结果生成了TCP但是没内容,不知道哪里出了问题。我估计是颜色,对我来说太有难度了。嘿嘿,感谢您的热心帮助。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部