Project Wingman

Project Wingman

評價次數不足
如何使用头瞄(OpenTrack)控制视角
由 su灬雅 發表
使用OpenTrack驱动的头瞄,在游戏中实现Pitch和Yaw(更新后:任意方向)方向的视角控制。
   
獎勵
加入最愛
已加入最愛
移除最愛
OpenTrack设置
本教程默认玩家已经拥有摄像头以及头戴发射器,将会直接对软件使用进行讲解。

本教程主要原理为通过OpenTrack实现头瞄对鼠标的模拟,从而在游戏中实现通过头瞄模拟鼠标控制视角的操作。

游戏目前支持头瞄功能,可在设置里打开头部跟踪
实际效果可以看这里:https://www.bilibili.com/video/BV1ca411c7cW
最后的章节是个人参数配置

设置方法:

1、打开OpenTrack软件,出现小章鱼界面。



2、如图所示,可以新建一个配置文件,输入设置为PointTracker(我所使用的),或者其他什么输入设备 ,在旁边的小锤子按钮中完善所持有的头戴发射器的参数。

3、输出选择mouse emulation,



将小锤子进行图示的设置,X axic 设为Yaw、Y axic 设为Pitch。
灵敏度可根据个人喜好自行调整。

4、曲线/映射和过滤器设定

曲线设定:





过滤器设定:



可根据头部活动范围和游戏实际情况自行设定。
所有设定完成后,打开摄像头和软件追踪,可实现控制鼠标移动的操作。

游玩过程中
游戏内可能需要在设置中调整机内或者机外的视角(FOV)到合适值,以保证最好的体验。

在游戏过程中遇到视角不在中间的情况下,只需要使用鼠标移动,配合头瞄把视角调整到觉得舒适的方向即可,不需要使用软件的回中功能。

游戏过程中可能会遇到需要多次回中视角的情况,可以适当调整曲线范围,避免视角超出游戏内视角最大范围来缓解。
个人配置(不保证对所有人的适用性)
以下为配置文件ini内的参数:
[migrations]
last-migration-at=20180428_00~

[modules]
protocol-dll=udp
filter-dll=hamilton

[mouse-proto]
mouse-sensitivity-x=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@n\x1d\x17\x45\xd1t]@9\0\0\0\0\0\0@\x7f@\0\0\0\0\0)
mouse-sensitivity-y=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@m\x83\x8e\x38\xe3\x8e\x39@9\0\0\0\0\0\0@\x7f@\0\0\0\0\0)
mouse-x=4
mouse-y=5
input-method=0

[tracker-pt]
m_01-y=40
active-model-panel=2
m_01-x=10
m_02-x=0
m_02-y=-70
model-centroid-z=108
m_01-z=-30
m_02-z=-80
model-centroid-x=123
camera-name=PS3Eye Camera
model-centroid-y=-94
camera-fps=60
threshold-slider=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@9\0\0\0\0\0\0\0\0\0\0\0\0\0\0@o\xe0\0\0\0\0\0)

[hamilton-filter]
max-radius-smoothing=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@\x15\x9ag\x1e\xf3\nN?PbM\xd2\xf1\xa9\xfc@9\0\0\0\0\0\0)
smoothing-power-rot=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xeb\x8b\x8c\xfb\xfc\x65\x41?PbM\xd2\xf1\xa9\xfc@\x10\0\0\0\0\0\0)
dead-zone-radius-rot=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\x9f\xae\xbc@\x8d\x8e\xc9?PbM\xd2\xf1\xa9\xfc?\xe0\0\0\0\0\0\0)
smoothing-power-zoom=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xea\x43\xf3\xe0\x37\f\xdd?PbM\xd2\xf1\xa9\xfc@\x10\0\0\0\0\0\0)
max-z=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?PbM\xd2\xf1\xa9\xfc?PbM\xd2\xf1\xa9\xfc@Y\0\0\0\0\0\0)
max-distance-smoothing=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@\x10g6\xcd\xf2\x66\xba?PbM\xd2\xf1\xa9\xfc@4\0\0\0\0\0\0)
smoothing-power-dist=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xe9\xa0'RT`\xab?PbM\xd2\xf1\xa9\xfc@\x10\0\0\0\0\0\0)
dead-zone-radius-dist=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\x9f\xae\xbc@\x8d\x8e\xc9?PbM\xd2\xf1\xa9\xfc?\xe0\0\0\0\0\0\0)

[spline-yaw]
points="@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x2@=\0\0\0\0\0\0@P\xc0\0\0\0\0\0@E@\0\0\0\0\0@a\xe0\0\0\0\0\0)"

[spline-pitch]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x2@0\x80\0\0\0\0\0@C\x80\0\0\0\0\0@7\x80\0\0\0\0\0@Q\xc0\0\0\0\0\0)

[opentrack-ui]
keycode-center=Ctrl+Alt+\\
游戏目前支持头瞄了
经过更新后,游戏目前可以在设置里打开头部跟踪功能了,可以达到类似DCS WORLD的视角移动效果。

输出为freetrack 2.0 Enhanced

可以照搬DCS的设置参数,但是俯仰(pitch)轴可能需要反转一下。

以下是个人方案:

[migrations]
last-migration-at=20180428_00~

[tracker-pt]
camera-name=PS3Eye Camera
camera-fps=60
threshold-slider=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@8\0\0\0\0\0\0\0\0\0\0\0\0\0\0@o\xe0\0\0\0\0\0)
min-point-size=2.5
clip-tz=35
clip-by=75
model-centroid-x=67
model-centroid-y=-114
model-centroid-z=119
active-model-panel=2
m_02-z=-80
m_02-x=10
m_01-y=40
m_01-x=10
m_01-z=-30
m_02-y=-70

[opentrack-ui]
keycode-center=Ctrl+Alt+\\
compensate-translation-disable-source-pitch=true
compensate-translation-disable-source-roll=true
compensate-translation-disable-y-axis=true
compensate-translation-disable-z-axis=false
relative-translation-mode=1
use-system-tray=false
start-in-tray=false
keycode-toggle-press=
keycode-toggle=Alt+`
pitch-invert-sign=true

[opentrack-mappings]
yaw-max-value=25
pitch-max-output-value=-90
pitch-max-value=20
pitch-alt-axis-sign=true
roll-max-value=90
x-max-value=15
y-alt-axis-sign=true
z-max-value=30
z-alt-axis-sign=true

[spline-X]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@\b\0\0\0\0\0\0@\"\0\0\0\0\0\0@\x1a\0\0\0\0\0\0@M\0\0\0\0\0\0@!\0\0\0\0\0\0@Q\0\0\0\0\0\0)

[spline-Y]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@\x10\0\0\0\0\0\0@$\0\0\0\0\0\0@\x1e\0\0\0\0\0\0@A\x80\0\0\0\0\0@$\0\0\0\0\0\0@E\0\0\0\0\0\0)

[alt-spline-Y]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x4?\xf0\0\0\0\0\0\0@\x14\0\0\0\0\0\0@\0\0\0\0\0\0\0@0\0\0\0\0\0\0@\f\0\0\0\0\0\0@E\0\0\0\0\0\0@\x12\0\0\0\0\0\0@I\0\0\0\0\0\0)

[spline-Z]
points="@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@\x1c\0\0\0\0\0\0@\x14\0\0\0\0\0\0@*\0\0\0\0\0\0@=\0\0\0\0\0\0@2\0\0\0\0\0\0@A\0\0\0\0\0\0)"

[spline-yaw]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@\x1a\0\0\0\0\0\0@1\0\0\0\0\0\0@(\0\0\0\0\0\0@L\x80\0\0\0\0\0@-\0\0\0\0\0\0@Q\0\0\0\0\0\0)

[spline-pitch]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x4@\x10\0\0\0\0\0\0@(\0\0\0\0\0\0@\x1e\0\0\0\0\0\0@C\0\0\0\0\0\0@$\0\0\0\0\0\0@S\0\0\0\0\0\0@(\0\0\0\0\0\0@V\x80\0\0\0\0\0)

[alt-spline-pitch]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@\0\0\0\0\0\0\0@2\0\0\0\0\0\0@\x1a\0\0\0\0\0\0@S\xc0\0\0\0\0\0@!\0\0\0\0\0\0@V\x80\0\0\0\0\0)

[spline-roll]
points="@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@&\0\0\0\0\0\0@&\0\0\0\0\0\0@=\x80\0\0\0\0\0@K\0\0\0\0\0\0@L\xc0\0\0\0\0\0@e\xe0\0\0\0\0\0)"

[accela-sliders]
translation-sensitivity=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xd3\x33\x33\x33\x33\x33\x33?\xa9\x99\x99\x99\x99\x99\x9a?\xf8\0\0\0\0\0\0)
rotation-sensitivity=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xd6\x66\x66\x66\x66\x66g?\xa9\x99\x99\x99\x99\x99\x9a@\x4\0\0\0\0\0\0)
rotation-deadzone=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\x9e\xb8Q\xeb\x85\x1e\xba\0\0\0\0\0\0\0\0?\xc9\x99\x99\x99\x99\x99\x9a)
translation-deadzone=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xc3\x33\x33\x33\x33\x33\x33\0\0\0\0\0\0\0\0?\xf0\0\0\0\0\0\0)

[alt-spline-Z]
points="@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@\x1c\0\0\0\0\0\0@\x1c\0\0\0\0\0\0@)\0\0\0\0\0\0@=\0\0\0\0\0\0@0\0\0\0\0\0\0@A\x80\0\0\0\0\0)"

[modules]
filter-dll=hamilton
tracker-dll=pt
protocol-dll=freetrack

[mouse-proto]
mouse-sensitivity-x=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@X>\xf\x83\xe0\xf8>@9\0\0\0\0\0\0@\x7f@\0\0\0\0\0)
mouse-sensitivity-y=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@X>\xf\x83\xe0\xf8>@9\0\0\0\0\0\0@\x7f@\0\0\0\0\0)
mouse-y=5
mouse-x=4
input-method=0

[hamilton-filter]
max-radius-smoothing=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@$\0N\xa4\xa8\xc1U?PbM\xd2\xf1\xa9\xfc@9\0\0\0\0\0\0)
smoothing-power-rot=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xf4+\xc4\b\xd8\xec\x96?PbM\xd2\xf1\xa9\xfc@\x10\0\0\0\0\0\0)
dead-zone-radius-rot=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xc3J#9\xc0\xeb\xee?PbM\xd2\xf1\xa9\xfc?\xe0\0\0\0\0\0\0)
smoothing-power-zoom=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xf0\xcf\xd2\x1f\xf2\xe4\x8e?PbM\xd2\xf1\xa9\xfc@\x10\0\0\0\0\0\0)
max-z=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?PbM\xd2\xf1\xa9\xfc?PbM\xd2\xf1\xa9\xfc@Y\0\0\0\0\0\0)
max-distance-smoothing=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@\x1b\x33\xe0\x37\f\xdc\x88?PbM\xd2\xf1\xa9\xfc@4\0\0\0\0\0\0)
smoothing-power-dist=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xf5\x9cPH\x16\xf0\x6?PbM\xd2\xf1\xa9\xfc@\x10\0\0\0\0\0\0)
dead-zone-radius-dist=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xc3J#9\xc0\xeb\xee?PbM\xd2\xf1\xa9\xfc?\xe0\0\0\0\0\0\0)