梦幻西游人物局部换色初探

作者:leexuany(小宝)

由于我的犹豫不决,到现在我还没有多少游戏编程实战经验,我一直在资源、UI、程序的边缘徘徊。。

小宝一直就很迷惑,为什么梦幻西游的资源中只有一套人物素材,但是梦幻却支持人物染色,我们找不到变异召唤兽的素材,但是它的的确确存在。

一切皆从was/wap格式开始,它是256色的索引图片动画,秘密全在这神奇的调色板上。

每一个hero(就是我们能创建的那12个角色)还有summon(各种能抓到的召唤兽)都有一个配套的配置文件,形式如下:

4 0 64 128 192 256
7
255 0 0
0 255 0
0 0 255
351 0 0
0 256 0
0 0 256
106 5 115
254 254 125
180 148 161
512 14 512
512 512 512
225 340 0
263 512 459
483 502 325
0 0 0
234 134 474
512 435 220
306 512 455
215 268 378
345 402 445
426 0 256
7
255 0 0
0 255 0
0 0 255
378 69 0
161 256 74
0 0 256
256 14 55
0 154 0
0 0 115
52 0 0
53 62 0
0 0 53
154 0 0
0 154 120
24 81 110
0 67 0
244 238 0
431 33 358
349 0 0
0 256 0
0 0 256
7
255 0 0
0 255 0
0 0 255
138 51 9
28 129 69
0 0 55
0 9 0
0 55 60
37 18 52
81 0 0
0 72 0
102 0 0
163 29 0
57 52 0
0 0 52
0 0 38
0 187 0
134 0 311
148 0 48
81 86 0
0 0 148
1
255 0 0
0 255 0
0 0 255

下面我来简单地解释下这个配置文件的含义:

第一行的4表示将调色板划分成4块,0~64,64~128,128~192,192~256
之后的操作全是对这4段调色板进行变换。

第二行的7表示存储了7种不同的配色方案,这七个方案都是对应0~64号调色板的。

接下来是3X7共21行的配色方案内容,每3行表示一个方案。如:
255 0 0
0 255 0
0 0 255
表示的是默认方案,而
351 0 0
0 256 0
0 0 256
表示另一个方案。

7个3行的配色方案之后,又可以看到一个7,它表示与64~128号调色板对应的配色方案数,之后的格式同上。

那么配色方案的含义是什么呢?

如果你用过photoshop的色彩平衡,那么就不难理解了。原理是差不多的,255表示默认,既不加也不减。

至于为什么会有
255 0 0
0 255 0
0 0 255
三行9个数值,恐怕只有网易自己知道,或者等到我能调试mhmain.dll了,但有Themida存在的前提下,这个事件的期望是零。
 
可能有的朋友还要问,“为什么分段的调色板能改变人物造型不同部分呢?”
 
请看一个调色板,这是逍遥生的调色板

看到了吗?0~64号,即前4行的颜色是不是很像头发的颜色?
对啦,游戏使用的图片都是经过辅助程序和美工精心处理过的,完全按照程序的需求定制的。所以头发的颜色全部在前4行,程序在跟美工协商好规格(或者写个程序让他们用)就可以放心大胆的写代码啦。
 
 
最后,“Themida...Themida...”小宝咬牙切齿中。。。

梦幻西游人物局部换色初探相关推荐

  1. 梦幻西游人物局部换色补完

    梦幻西游人物局部换色补完 作者:leexuany(小宝) 小宝上次写文章简单介绍了梦幻西游中人物局部换色使用的方法,但由于没有具体的调色板变换算法,到头来也只是纸上谈兵.所以小宝花了几天时间跟踪梦幻的 ...

  2. 【ps操作】提高清晰度+保留部分颜色+局部换色

    文章目录 提高图片清晰度 保留图片部分颜色 局部换色 提高图片清晰度 方式一: 复制图层之后转化为智能对象. 滤镜-其他-高反差保留. 之后改变混合模式为柔光. 方式二: 滤镜-锐化 保留图片部分颜色 ...

  3. Photoshop“替换颜色”实现局部换色

    http://design.yesky.com/photoshop/318/3270318.shtml

  4. 【前端2】js:原始类型,运算符,调试,页面加载,轮播图,Bom(对象,时钟),Dom(全选全不选,省市级联,隔行/触摸换色,表单校验)

    文章目录 1.js两种引入:js最终要引入到html在浏览器中运行 2.js五大原始类型:undefined 3.js的运算符和流程控制:js不支持单&和单|性能低 4.案例_99乘法表:So ...

  5. cocoscreator中spine局部换皮的探索

    1.需求情况 书之国中需要一个人物捏脸系统,要求可以让用户自由选择身体不同部位的形象,比如头发.眼睛.眉毛.上衣.裤子等.已经支持RegionAttacment和MeshAttachment,而且在r ...

  6. Unity Spine 局部换皮

    1.Spine元素主要包含皮肤(Skin).骨骼(Bone).插槽(Slot).附件(Attachment).及附件下的图片. 2.而皮肤(Skin)包含了插槽信息.附件信息,如果我们有两套相同构成的 ...

  7. 炫酷的汽车换色效果分享——X战警魔形女变身

    炫酷的汽车换色效果--X战警魔形女 原理: 1.使用ComputeShader在汽车网格上散布很多随机点,记下这些点的位置和法线. 2.使用DrawMeshInstancedIndirect在上面计算 ...

  8. 照片换色 使用Python 或者 java

    记录使用第三方api 给照片换底色,智能抠图. 1.第三方接口地址 https://www.remove.bg/api 2.抠图效果 3.使用python 实现的代码 在网页换色是不需要进行注册的,如 ...

  9. SSRS 2012 聚合函数 -- 隔行换色示例

    SSRS 2012 聚合函数 -- 隔行换色示例 有时我们希望报表能够显示出数据笔数的流水序号,如果要使用T-SQL查询来做出这种效果,通常必须使用RANK函数以自动产生编号,在此将介绍如何使用SSR ...

最新文章

  1. 连续低频脑电图解码手臂运动,实现机械手臂的闭环自然控制
  2. sonarqube下安装mysql数据库_本地安装SonarQube之一——win7环境安装mysql
  3. 数据库知识点4——关系代数中易错题的总结
  4. 一看就懂的感知机算法PLA
  5. 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥...
  6. 分布式事务最终一致看这篇“大白话”的实践
  7. JAVA实现N皇后问题(回溯法)
  8. 项目vue2.0仿外卖APP(四)
  9. Magicodes.Admin.Core开源框架总体介绍
  10. 基于物联网的工业分析将席卷制造业
  11. Android Studio 安装配置详细步骤,以及使用的基本操作
  12. base64原理+base64隐写
  13. P02014171 刘天一 作业
  14. java applepay_java后端处理Apple Pay流程
  15. SRAM与DRAM的区别
  16. (转载)程序员应该访问的最佳网站中文版
  17. 自编真假探测游戏来了 好玩
  18. 浏览器快速打开一个可编辑的文本输入域
  19. 有什么好用的股票回测接口?
  20. PHP家长互助的好处,家长互助会的三大促进

热门文章

  1. 轮廓提取之滚球法、凹包算法
  2. [BOST] 你的大脑比你想象的更优秀
  3. 关于android模拟器
  4. 使用WINSOCK的网络通信模拟程序 (客户机端)
  5. PHP中SQL注入与跨站攻击的防范
  6. 智能家居陷入混战,但仍“形式大于内容”
  7. Postgres-XL介绍-性能特征与功能
  8. 百草味抢滩登陆社交电商,业绩喜人
  9. 0欧电阻、电感、磁珠单点接地时有什么区别?
  10. 个人浅谈中国代购行业