梦幻西游人物局部换色补完
作者:leexuany(小宝)
小宝上次写文章简单介绍了梦幻西游中人物局部换色使用的方法,但由于没有具体的调色板变换算法,到头来也只是纸上谈兵。所以小宝花了几天时间跟踪梦幻的代码。
Themida真是一个强壳,不过好在“山重水复疑无路,柳暗花明又一村”,花的工夫都没有白费,算法已经弄清楚了。但算法简单的让人苦笑不得,请往下看。
假设用于变换调色板的参数矩阵是
C11 C12 C13
C21 C22 C23
C31 C32 C33
(不知道什么意思的去看上半篇http://blog.csdn.net/leexuany/archive/2008/06/02/2504913.aspx)
需要变换的颜色为RGB
变换算法如下:
R2=R*C11+G*C12+B*C13
G2=R*C21+G*C22+B*C23
B2=R*C31+G*C32+B*C33
R2=R2>>8
G2=G2>>8
B2=B2>>8
最后由于梦幻使用的是高彩565模式,所以R,G,B三个颜色分量都有自己表示的上限,R和B是0x1F,G是0x3F,如果运算得到的R2,G2,B2大于了自己的上限,则取最大值。
按照此算法我得到了变异野猪的图片,如图:
稍后我会使用这个算法写一个梦幻西游的人物染色工具,到时候大家就不用为给动态人物上色发愁了,哈哈。