先解释一个概念叫做控制距离
控制距离在Battlefield 4里面用于在不同缩放倍数下同步灵敏度
意义在于不同的放大倍数下,视角转动相同的屏幕2D距离,鼠标移动的实际距离相等
屏幕2D距离指的是两个离角色相同距离的目标在屏幕上的投影的距离
这个用于同步不同放大倍数的屏幕2D距离就是控制距离,一般是133%屏幕垂直像素

MouseSensitivity的Viewspeed算法缺陷(可能不适合我)在于,得出的低倍灵敏度低,高倍灵敏度高
原因在于他们使用的控制距离是整个屏幕的大小,这样无助于同步桌面灵敏度到FPS的3D控制下
因为FPS是3D的,鼠标移动距离对应着角度的变化,均匀的鼠标移动距离对应均匀的角度变化
鼠标距离是无法在所有的桌面2D距离和FPS中的屏幕2D投影距离保持同步的
所以我们要使用一个控制距离,让一定大小的屏幕内,两者越接近

下面是两段JS,可以在Chrome浏览器的控制台运行,作用是获取实际的鼠标360距离,即转动360度鼠标的水平移动距离
它们计算出的任何FOV下的360距离对应的灵敏度,在控制距离上有相同的鼠标实际移动距离

参数解释:
hfov=视场的水平可视角度(不是弧度)
dpi=鼠标的设置dpi
controlDistance=控制距离,单位是像素
screenHorzontalPixels=屏幕的水平像素大小
[code=js]
function compute360Distance(hfov,dpi,screenHorzontalPixels) {
  return Math.PI/Math.atan(Math.tan(fov*Math.PI/360)*640/screenHorzontalPixels)*640/dpi;     
}

function compute360Distance2(hfov,dpi,controlDistance,screenHorzontalPixels) {
  return Math.PI/Math.atan(Math.tan(fov*Math.PI/360)*controlDistance/screenHorzontalPixels)*controlDistance/dpi;     
}
[/code]

第一个函数的控制距离是Aimbooster的水平像素大小
获取hfov数据可以通过MouseSensitivity网站,修改不同的放大倍数获取不同的hfov,用函数计算,再填写回MouseSensitivity计算实际灵敏度

DSC0000.png

DSC0001.png

测试这个方法适合不适合自己可以通过3daimtrainer.com
设置不同的FOV,计算该FOV下的灵敏度,测试肌肉记忆是不是尽可能接近
[url]https://www.3daimtrainer.com/science.html
分享到 :
0 人收藏

1 个回复

倒序浏览
Rock  Lv:2 | 2018-4-22 07:05
[tid=13913639]Topic[/tid] Post by [uid=655958]easytolose[/uid] (2018-04-22 01:31):

先解释一个概念叫做控制距离
控制距离在Battlefield 4里面用于在不同缩放倍数下同步灵敏度
意义在于不同的放大倍数下,视角转动相同的屏幕2D距离,鼠标移动的实际距离相等
屏幕2D距离指的是两个离角色相同距离的目标在屏幕上的投影的距离
这个用于同步不同放大倍数的屏幕2D距离就是控制距离,一般是133%屏幕垂直像素

MouseSensitivity的Viewspeed算法缺陷(可能不适合我)在于,得出的低倍灵敏度低,高倍灵敏度高
原因在于他们使用的控制距离是整个屏幕的大小,这样无助于同步桌面灵敏度到FPS的3D控制下
因为FPS是3D的,鼠标移动距离对..

有丶东西
您需要登录后才可以回帖 登录 | 点击注册

本版积分规则

联系我们|关于我们|TAG|手机版|小黑屋|帮助|客服QQ| 希望之地 ( 闽ICP备12024174-1号 )  

返回顶部