• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.3.1
软件大小:62.5M
更新时间:5-24

按键精灵iOS版
立即下载

软件版本:1.3.5
软件大小:29.2M
更新时间:06-14

最新企业版UiBot
立即下载

软件版本:2.5
软件大小:181M
更新时间:05-20

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
返回列表 12345678» / 21
发新话题 回复该主题

[技术交流] 【院刊】-【201505期】绝杀——从此再也不怕处理偏色问题了 [复制链接]

1#

利用颜色分量来识别处理偏色



本文按键学院提供技术支持



按键学院交流群(1群已满):376122403

零基础学按键精灵群(2群):372671254




关于偏色的处理,一直都是童鞋们在编写脚本的重要部分。相信不少的的童鞋多少都会处理偏色的问题,但是今天小编给大家带来一种很有效的偏色处理方法,
利用这种处理方法,可以很轻松、准确的识别差别比较大的偏色。让偏色不再成为让你头疼的问题。

首先,让大家看几种颜色,看看大家能不能分辨出来

这个是什么颜色: 那这种是什么颜色: 这种呢?

我相信童鞋们很快能分辨的出,这几种都是属于红色。
同样是红色,但是也会分成很多不同的色调,我们在编写代码的时候就需要去考虑把这些颜色都认定成同一种颜色,这样才能进行判断。

有点童鞋看到这里可能就傲娇的说“不就是加偏色识别嘛!很简单啊,颜色命令里都有识别精确度的设置,还有偏色计算器也可以做到处理偏色,你的方法有啥好处!”


确实,通过上面的方法都是可以处理偏色,但是精确度设置如果调低了,那可能会识别出错,并且耗时增加。而偏色计算器,可能有点刚接触按键的同学还不太会用。并且还要各种取色神马的,各种折腾啊……

小编这里介绍的方法只要写成函数丢到代码里,需要的时候调用下就OK了,不需要借助工具,也不用费劲各种取色。

原理分析


要理解这个代码,我们就得对颜色进行一些分析

我们一般使用的颜色都是有 R(红)、G(绿)、B(蓝)构成的,也就是三原色。三个颜色所占的比例不同,也就构成了不同的颜色

比如
这个红色 它的RGB值分别是 255、104、104
这个绿色 它的RGB值分别是 47、210、108
这个蓝色 它的RGB值分别是 67、147、245

童鞋们发现了他们的规律了么?

简单的来说就是如果是红色,那他的R值所占的比例就会比其他的两个值大,同样道理绿色他的G值的比例就会比其他的值大
这样我们就可以通过判断RGB颜色的比例,来识别出他是属于什么颜色的了。


代码部分


方法1
1、先把获取到的颜色拆分成RGB分量
2、分别计算每个分量在颜色中所占的比例
3、对颜色比例进行判断,如果R比例多,那就说明这个颜色是红色
  1. Function 色系识别(颜色)
  2. //使用颜色插件命令把颜色拆分成RGB值
  3. Call Plugin.Color.ColorToRGB(颜色, R, G, B)
  4. //计算每个分量所占的比例
  5. 权值 = R + G + B
  6. CR = R / 权值
  7. CG = G / 权值
  8. CB = B / 权值
  9. //判断每个分量比例
  10. //当分量所占比例大于40%时就表示当前颜色属于对应的颜色
  11. If CR > 0.4 Then
  12. If abs(cg - cb) < 0.1 Then
  13. 色系识别 = "红色"
  14. End If
  15. End If
  16. If CG > 0.4 Then
  17. If abs(cr - cb) < 0.1 Then
  18. 色系识别 = "绿色"
  19. End If
  20. End If
  21. If CB > 0.4 Then
  22. If abs(cg - cr) < 0.1 Then
  23. 色系识别 = "蓝色"
  24. End If
  25. End If
  26. End Function
复制代码
方法2

和方法1是的思路类似,只是判断的条件不同
  1. Function 色系识别(颜色)
  2. //使用颜色插件命令把颜色拆分成RGB值
  3. Call Plugin.Color.ColorToRGB(颜色, R, G, B)
  4. //计算每个分量所占的比例
  5. 权值 = R + G + B
  6. CR = R / 权值
  7. CG = G / 权值
  8. CB = B / 权值
  9. //当分量的值大于其他两个分量的值的时候就表示当前颜色属于对应的颜色
  10. If (CR > CG) and (CR > CB) Then
  11. If abs(cg - cb) < 0.1 Then
  12. 色系识别 = "红色"
  13. End If
  14. End If
  15. If (CG > CR) and (CG > CB) Then
  16. If abs(cr - cb) < 0.1 Then
  17. 色系识别 = "绿色"
  18. End If
  19. End If
  20. If (CB > CG) and (CB > CR) Then
  21. If abs(cg - cr) < 0.1 Then
  22. 色系识别 = "蓝色"
  23. End If
  24. End If
  25. End Function
复制代码
应用场景


这次介绍的处理偏色的方法可以很好的利用在判断血条之类的地方

现在的游戏一般都会对血条蓝条之类的地方“duang~~duang~~duang~~”的加一些特效什么的。比如会加一些液态的流动效果,颜色渐变效果什么的。

比如这种:

这些变化很多,但是基本上有变化也都是会在同一个色系里变化,比如都是红色,只是有的地方是粉红有的地方是暗红。
这种情况下使用这里介绍的偏色处理就非常的简便有效了。


偏色相关院刊:
【院刊】-【201502期】HSV搞定偏色,简单暴-力!
showtopic.aspx?topicid=559642&forumpage=1&page=1

院刊目录
showtopic.aspx?topicid=549014&forumpage=1&page=1




 



谢谢大家阅读,记得给小编送支花花 ! 顺手点个


[tr=rgb(143, 188, 143)]

按键精灵免费公开课

实战班:回合制通用教学火热报名

【听课对象】:对按键精灵感兴趣的同学们都可以来~
【上课地点】:零基础学按键精灵群(372671254)
【上课时间】:周天晚上19:30-21:00
【上课内容】:按键精灵脚本基础经验谈——图色命令

本期重点:回合制游戏--神武
学习时效:终生有效
上课时间:周2、周4、周6的 20:00--22:00
导师:工程师07
技术支持:果儿(院刊编辑)
点我进入按键学院报名啦 招生细节进群咨询招生办主任:2群-372671254(优先加入) 1群-376122403





    已有3评分我要评分查看所有评分

    本主题由 超级版主 n15976906190 于 2017/9/2 8:41:12 执行 审核主题 操作
    按键学院免费交流群:376122403

    按键学院招生计划
    按键学院系统教程
    2#

    先回复,后学习!

    3#

    不好意思 貌似还没看懂这个代码的含义 这到底咋回事

    4#

    学习了。。。。

    5#

    好东西,谢谢分享

    6#

    学习下

    7#

    绝杀——从此再也不怕处理偏色问题了

    8#

    学习

    大话西游2 脚本制作 源码 内存数据 QQ50080338
    9#

    RE:【院刊】-【201505期】绝杀——从此再也不怕处理偏色问题了修改

    10#

    1111111111111

    11#

    ( ̄ ii  ̄;) 吸溜( ̄" ̄;)

    12#

    欣赏一下楼主的思路,谢谢分享。

    13#

    学习

    14#

    【鄞州】

    15#

    区别颜色可以按取值范围不(阈值)?大于某个值就是什么色系。楼主求解答。

    16#

    好东西 学习学习

    17#

    ganxie fenxiang

    18#

    zheg 这个必须顶下 良心啊

    19#

    看看再说

    20#

    6666666666

    发新话题 回复该主题