|
|
首先要声明的是 这完全是一个小白根据他朴(can)素(zhang)的逻辑研究出的大致能推出相似结果的办法
如果有更加科学合理的办法欢迎大佬纠正!
本文记录了我的思路历程,懒得看朴(can)素(zhang)推理的可以直接翻到最后看结论。
--求轻喷--
下面是正文
首先,大家都知道colors中所属色的三个值并不是RGB,在Color Schmes的注释中明确写了三个值表示的是 'hue'(色调), 'saturation'(饱和度),and 'value'(值).也就是大家一般说的HSV
但是,我们会发现,HSV的值一般都是零点几,而游戏里明明是看起来和RGB差不多的0-255的正整数,How?
可能性:将hsv值小数点后移成三位数
--结论:不对,我们观察到游戏里hsv最大为255,以上图hsv为例出现了900多400多的数值。
既然不是简单的移小数点,我们就根据几个参考数值观察一下
原版红色:
DarkRed=0,230,255 ;Red
MO版红色:
Red=0,255,255 ;Red MP02
我们会发现,游戏中hsv的红色数值与RGB红色的255,0,0一看就有千丝万缕的联系
我们首先把rgb转为正常hsv看看结果
OHHHHHHHH
我们立刻就发现了显要的规律
以MO的红色的游戏hsv值来看,游戏hsv的255对应着正常hsv的“1”
那么我们只要知道,把1分为255份的值就可以推算出所有颜色了
1/255约等于0.0039216
那么以第一个LightGold=25,255,255为例,其正常hsv的值就估算得0.09804,1,1
我们验证一下:
根据原版标注可得,确实是橙色,初步能证明对了。
这里再试一个,
原版:
DarkBlue=153,214,212 ; 10 MP Blue
将每个值×0.0039216得正常hsv值约为:0.6,0.8392,0.8314
正确。
那么,把路子反过来走,就能把自己想要的颜色从rgb转换为游戏里的hsv值了。
如果用Mo的值算出来的话还可以与其uimd里写的正常rgb值对照一下,我测试过很多个,最后的值有些许误差但都并不大,肉眼几乎无法辨别颜色差异。毕竟,这一路来有很多估算,有误差是很正常的,这也是这种办法的弊端,如果大佬们有更加科学合理高效的方法敬请分享!菜鸡就在这班门弄斧、抛砖引玉了qwq
有些人可能会有疑问,诶?那我给我的mod添加黑色所属色的时候没发现有啥问题呀?就用的rgb值啊
我们可以来试试,黑色,rgb000,转为正常hsv的值也为0,0,0【这里就不放图了】,再除去0.0039216看看是不是还是0,0,0?这其实只是撞对了而已
--最后声明--
本人是文科生,现在读法学专业(专业未开设高数课)所以其中的数学方法可能显得相当拙劣qwq,求轻喷。当然,更欢迎大佬们用各种更好的办法对我进行降维打击
在最后贴一下图中rgb转正常hsv的工具网站:https://c.runoob.com/front-end/868/
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|