外设天下 - 电脑外设发烧友聚集地

123下一页
我的人缘0

[资料] 关于鼠标的去抖动算法(DRIFT CONTROL)以及衍生出来的画线不直的问题~

22 53217
楼主
跳转到指定楼层
发表于 2009-4-29 13:52 只看该作者 倒序浏览 阅读模式
其实从内心来说,我一再克制自己不再参与到由http://www.pcwaishe.cn/thread-29254-1-1.html这个帖子引发的讨论中~ 同时为什么坛子里的老人们都不愿意参与这个帖子的讨论,是因为这个帖子里提到的问题有些无聊而且对玩家使用的实际意义非常小,偏偏解释起来又比较费时间~  但是很无奈~ 在没有答案的情况下,这帖子不断地被顶起,不断出现在版区的首页上~

现在我们来一次性对这个讨论做个解释,这个解释之中我们会引用到隔壁的一篇精华帖的内容http://www.wuji.org.cn/BBS/thread-23157-1-1.html(也就是上面有一个回帖的坛友提到的那篇史上最强鼠标论),这里必须对原作者的探索思路表示敬意!虽然我并不认同他得出的关于各个引擎的修正角度的数据。另外,当然,说明这个问题还会借用其他的一些相关内容。

首先,我们来做一个简单的计算(为了便于计算,我们假设鼠标移动速率已经被设定在和电脑光标移动速率比例是1:1的情况下):

以400DPI的IE3为例,当你用手将鼠标绝对化平移(仅仅水平位置变化,垂直位置绝对不变)10.16CM时(为了便于计算,选取了这个距离,因为10.16cm=4inch),这是鼠标的SENSOR一共采集并向电脑反应了1600个点的信息~  注意每次鼠标向电脑反馈一个点的信息时,也就是当屏幕上的光标移动一个像素时,你的鼠标平移了2.54cm/400=0.00635cm.

这个距离大家可能没有概念~  举例来说,人的头发的直径一般是在0.004cm~0.009cm之间,也就是说,每次你的鼠标移动大概一个头发丝的距离,鼠标的SENSOR就可以采集到一个点的移动信息。

为了能更形象地说明鼠标移动和光标移动的关系,我们假设鼠标的SENSOR采样的中心是一个点(实际上是一个矩阵),并且我们将鼠标的移动采样的过程看做是这个采样点相对于鼠标垫的移动(实际上鼠标SENSOR是固定的,是鼠标垫相对于SENSOR的反向移动)。 那么上面的这个过程,可以形象地表达为如下的示意图(移动方向由左至右,下同):

图一: 关于鼠标的去抖动算法(DRIFT CONTROL)以及衍生出来的画线不直的问题~

其中每个小的格子,都表明是一个像素点,这个像素点的宽度(对应着鼠标能反映的最小移动距离),以400DPI的IE3为例,应该是0.00635cm

从这种科学计算来看,结果非常完美,鼠标可以准确地表现每一个精细到头发丝一样宽的微移,PERFECT!!! 大家可以收工去HAPPY了~

但是从使用的角度来说,这种设定真的OK吗??




第一个疑问出现在对鼠标经常需要用来平滑移动的领域,比如作图和设计~

当使用者试图进行画出一条平的直线时,他遇到了困难,假如还是以10.16cm平移为例,他的手几乎不可能在10.16cm的平移中,保证在垂直方向不出现哪怕一根头发丝大小的微移。而如果他的手轻微地移动了,那么他会发现他几乎不可能划出绝对平直的横线,他实际上手和鼠标的移动轨迹,以及画出的横线永远是类似下图这样的(类似我们用INTELLIEYE2引擎经常画出来的一样):

图二: 关于鼠标的去抖动算法(DRIFT CONTROL)以及衍生出来的画线不直的问题~

为了克服这种要求绝对精准的算法和无法做到绝对精准的人手之间的矛盾,鼠标的SENSOR必须在真实的采样数据基础上,做出判别,来更真实地给出使用者希望得到的光标移动。这种判别所确定的标准,必须能够分辨在什么时候:虽然使用者操作的鼠标sensor采集到了位移,但是鼠标反馈给电脑的数据应当忽略这些位移(可能是垂直方向,也可能是水平方向),而在另外一些时候,鼠标使用者操作的鼠标sensor采集到了位移,这些位移应当如实地报告给电脑。

那么如何来判定呢,可能实际的判定逻辑非常复杂并且涉及到很多个参数,但我可以肯定的是,这些判定方法里,一定有一部分是与鼠标轨迹的斜率相关或相类似的。

如何实现这种判断呢,一种例子如下:首先鼠标芯片需要对SENSOR采集到的鼠标一次移动中在水平方向和垂直方向的像素量进行分析,起码要分析的是绝对量和比值量,以一个水平横移为主的移动中所采集到的数据为例,SENSOR反馈到鼠标芯片的位移时的数据,可能包括在水平方向上千个像素的移动,和在垂直方向上波幅在几个像素内的波动(类似于我们上面那个图里的鼠标轨迹),这时鼠标芯片内的算法,会通过判断垂直方向的位移像素的绝对量和其与水平位移像素的比值量,是否小于算法中预先设定好的值X和Y,一旦小于,则鼠标芯片会判断出此时使用者是希望画出一条平滑的横线,那么它会将垂直方向上的波动去除掉,仅仅向电脑反馈水平方向上的移动,从而使光标可以给使用者画出一条直线。  如下图:

关于鼠标的去抖动算法(DRIFT CONTROL)以及衍生出来的画线不直的问题~

实际情况下的鼠标芯片内的算法,肯定会比这种方法要更复杂和更精确,并且也不会局限于水平方向和垂直方向,而是可以应用于当你将鼠标向任意方向进行移动的情况下,从而使鼠标无论在任何移动方向下,所得到的光标移动,都能有很好的一致性。

这种判定的算法,我觉得可以比较形象地叫做“去抖动”,也应该就是大家口中传说的DRIFT CONTROL(RAZER并没有官方解释DRIFT CONTROL的概念里面包含哪些东西,所以还不能100%肯定),它在不同的鼠标芯片内,所采用的临界值和具体的算法,应该是有所区别的,并且与鼠标厂家对鼠标的使用环境的预期以及鼠标SENSOR和鼠标芯片的能力都有密切的关系。

在实际的应用中,并不能说加入这种算法和不加入这种算法,到底哪一个更优秀。但是可以确定的是,一个合理的临界值,合理的算法设定,才能真正模拟出使用者需要的光标移动,得到最好的性能。无论将临界值设定过高,或者将临界值设定过低,都是不正确的,也必然会带来副作用。

当临界值设定过高时,也就是说鼠标对于次要方向上的很多微小移动都会直接忽略掉,如下图:

关于鼠标的去抖动算法(DRIFT CONTROL)以及衍生出来的画线不直的问题~


这时使用者会发现他的光标很难画出细微的波动和低斜率的斜线,但是他可以很容易地画出绝对平直的直线。


而当临界值设定过低时,也就是说鼠标即使对于次要方向上非常微小的移动也会如实报告给电脑,则情况相反,如下图:

关于鼠标的去抖动算法(DRIFT CONTROL)以及衍生出来的画线不直的问题~

这时使用者会发现他的光标有些过于敏感了,使他很难画出一条绝对平直的直线。




在现实中,可能有的鼠标的临界值会设定比较高,有些鼠标的临界值会设定比较低。这也是为什么你可以用一些鼠标轻松地画出绝对直线,而用另外的一些却很难的原因了。

无论是设定过高还是设定过低,都不是最佳的状态。但是什么样的设定才是最好的呢?或者说什么样的鼠标是最适合你的呢?  我想说的是:纠结于这个问题没有任何意义!

有人对手的操控更敏感,有人则相对不敏感,有人更希望鼠标完全听从于手的移动,如实地反映给电脑光标,有人则会希望鼠标能“帮助”他一起获得需要的光标移动。 如何选用一款最适合你的鼠标,关键词还是:适应! 因为这些备受大家好评的游戏鼠标中,没有哪一款的设定是有着明显的缺陷的。也就是说,只要你适应了这款鼠标,你就可以灵活地操控它,获得你需要的各种光标移动。IE3也好,518也好,蝰蛇也好。 哪个能画直线,哪个不能画直线,其实不重要! 我只知道IE3也能造就高手,518,蝰蛇也能造就高手。主要是你能不能和你的鼠标相互适应,发挥出最好的状态。




这篇帖子之后,希望大家对于这个旁枝末节问题的纠结,能够告一段落了~

[ 本帖最后由 drocee 于 2009-4-29 19:30 编辑 ]
0
已赞
微信分享 收藏
回复

使用道具 举报

我的人缘0
2
发表于 2009-4-29 13:54 只看该作者
自己留一楼
我的人缘0
3
发表于 2009-4-29 14:24 只看该作者
板凳,听讲
我的人缘0
4
发表于 2009-4-29 14:40 只看该作者
我只想对你说,你辛苦了。。
我的人缘0
5
发表于 2009-4-29 16:34 只看该作者
恩,D版果然是牛人。
我认为razer的drift control应该还包括一些其他的算法,比如说移动后的急停,变向等等,去掉drift control应该就是改变算法的临界值。
至于那个画线的帖子,的确是没什么意义,看线猜鼠标就好像那个著名的看鸟腿猜雌雄一样。
我的人缘0
6
发表于 2009-4-29 16:36 只看该作者
感觉和DPI有关系。。。
我的人缘0
7
发表于 2009-4-29 17:19 只看该作者
仔细研究研究~~
我的人缘0
8
发表于 2009-4-29 19:25 只看该作者
测试
不纠结很久了:mm4:
自从我发贴之后

其实大家并不是想纠结什么
只是自己发现这个问题之后出于兴趣使然想继续探求结果而已

发贴出来说明自己的观点也就是说下自己的感觉而已~

研究这个问题其实并不一定要作为自己选择鼠标的依据~只是自己有了结果希望分享

一如我买来自己喜欢的针对游戏设计的鼠标~但是我真的不一定会用它玩儿游戏,我真的可能只是喜欢这个鼠标,想体验一下它的感觉而已~

既然进来烧圈了,不管硬件、键鼠还是音频也好~凡是无须理智么;mm27:

最后再次膜拜强大的D版~同时感谢:haoxisy:
我的人缘0
9
发表于 2009-4-29 20:08 只看该作者
DRIFT CONTROL 的修正。  关闭修正以后 定位移动更好
我的人缘0
10
发表于 2009-4-29 20:44 只看该作者
测试
适应

只看懂了这个..
:mm48:
123下一页
高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则