Special Aircraft Service

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1]   Go Down

Author Topic: Head Tracking - how are you set up?  (Read 1027 times)

0 Members and 1 Guest are viewing this topic.

SAS~Ghost129er

  • SAS Team
  • member
  • Offline Offline
  • Posts: I am a geek!!
  • SAS Certified Nuisance
Head Tracking - how are you set up?
« on: June 17, 2020, 03:26:23 AM »

So I've done of of them DIY head tracking set ups using a PS3 eye that's modified and my own IR clip, it's working 'alright' but I wonder how people have place their camera, their clip how offset the camera is on the monitor and if it's in level with your head, above you a little, etc kind of a thing... Reason I'm asking is when I look back I get a stupidly high input in the X translation (not rotation) and I /have/ set curves for this, but it's when rotate my head left, that it only takes X translation to the left - looking right, I have little to no translation input being detected, maybe I mounted my clip wrong/offset to the camera..?

Thanks in advance 
Logged

Stainless

  • Modder
  • member
  • Offline Offline
  • Posts: 1516
Re: Head Tracking - how are you set up?
« Reply #1 on: June 17, 2020, 06:52:02 AM »

Well I have added head tracking to a hell of a lot of games, though not IL2

The hardware I was supporting is the Tobii eye tracker that mounts on the bottom of your monitor(s)

In the game code I combine the estimated head orientation from the tracker with the gaze point to create a yaw and pitch value. This is then applied to the camera.

The two values are combined using a curve defined by the user.

How it is applied to the camera depends on the game, but in general it is very easy.

What are you having a problem with?




https://gaming.tobii.com/games/il-2-sturmovik-battle-stalingrad/
Logged

sniperton

  • member
  • Offline Offline
  • Posts: 1221
Re: Head Tracking - how are you set up?
« Reply #2 on: June 17, 2020, 09:10:12 AM »

I, too, have a DIY cap with PS3 camera. It's positioned on a shelf above my monitor, ca. 100 cm apart and ca. 30 cm above eye level. It's fully centered, but directed slightly downward, pointing exactly to my forehead. No offset for the camera was needed.

If you use a clip, however, the rotation point of your virtual head has to be offset both vertically and horizontally to correctly simulate neck movement. If you use OpenTrack, check PointTracker settings > model > model position.
Logged

SAS~Ghost129er

  • SAS Team
  • member
  • Offline Offline
  • Posts: I am a geek!!
  • SAS Certified Nuisance
Re: Head Tracking - how are you set up?
« Reply #3 on: June 17, 2020, 09:16:47 AM »

I've used a digital vernier to get the offset position of the correct LED and what not for the clip, but I'm still messing around with camera offset, and offsetting the camera and seeing if I can resolve this transformation issue I'm having.

I mean I don't blame the app because either my design is fuck all cause when I look left, I can even see the middle LED MOVING on a TRANSFORM axis rather than a rotate, so me thinks my mounting sprue/how I've made it might be wrong to begin with...


Which is one of the many reason why I want a 3d printer lol.
Logged

sektorao

  • member
  • Offline Offline
  • Posts: 19
Re: Head Tracking - how are you set up?
« Reply #4 on: June 17, 2020, 11:07:04 AM »

I use Aruco tracker, it's the best option i tried. I tried Facetracknoir and Edtracer. Aruco tracker needs only Opentrack software, camera and a tracker marker you put on your head. It is excellent.

Logged

sniperton

  • member
  • Offline Offline
  • Posts: 1221
Re: Head Tracking - how are you set up?
« Reply #5 on: June 17, 2020, 12:47:26 PM »

I know it's somewhat banal to ask, but have you tried disabling translation at all and see how your head behaves?
Logged

SAS~Ghost129er

  • SAS Team
  • member
  • Offline Offline
  • Posts: I am a geek!!
  • SAS Certified Nuisance
Re: Head Tracking - how are you set up?
« Reply #6 on: June 17, 2020, 01:27:11 PM »

I have and it works fine, but I really get a kick out of sticking my head out of the cockpit and being able to look where I'm taxing as well as being able to look behind by moving out of the way of the seat and not just staring at the armored plate.. :-X

It works perfect on Yaw Pitch and Roll, I mean, it does with everything except that little bug in the translation, but I've gotten used to living with it. I just wanted to see if maybe there's a trick to making it perfect, but from how it's made and how I made it, it's as good as it gets unless I 3d print it or something I guess. -shruggie-
Logged

sniperton

  • member
  • Offline Offline
  • Posts: 1221
Re: Head Tracking - how are you set up?
« Reply #7 on: June 17, 2020, 03:53:49 PM »

As a last resort, check Options > relative translation. You should prefer rotation before translation.

Here are my OpenTrack settings. Comparing them to yours might perhaps help you find the tiny detail that makes your life hard.

Code: [Select]
[Curves-tx]
point-count=1
point-0-x=100
point-0-y=100

[opentrack-ui]
button-center=3
button-start-tracking=-1
button-stop-tracking=-1
button-toggle=-1
button-toggle-tracking=-1
button-zero=-1
camera-pitch=-24
camera-roll=7
camera-yaw=-6
center-at-startup=true
centering-method=1
compensate-translation=true
compensate-translation-disable-z-axis=false
filter-dll=Accela
guid-center={4F7ABBD0-3360-11E7-8001-444553540000}
guid-start-tracking=
guid-stop-tracking=
guid-toggle=
guid-toggle-tracking=
guid-zero=
keycode-center=
keycode-start-tracking=
keycode-stop-tracking=
keycode-toggle=
keycode-toggle-tracking=Shift+F10
keycode-zero=Shift+F9
pitch-alt-axis-sign=false
pitch-invert-sign=false
pitch-source-index=4
pitch-zero-pos=0
protocol-dll=freetrack 2.0 Enhanced
roll-alt-axis-sign=false
roll-invert-sign=false
roll-source-index=6
roll-zero-pos=0
tracker-dll=PointTracker 1.1
use-system-tray=true
x-alt-axis-sign=false
x-invert-sign=false
x-source-index=0
x-zero-pos=0
y-alt-axis-sign=false
y-invert-sign=false
y-source-index=1
y-zero-pos=0
yaw-alt-axis-sign=false
yaw-invert-sign=false
yaw-source-index=3
yaw-zero-pos=0
z-alt-axis-sign=false
z-invert-sign=false
z-source-index=2
z-zero-pos=0
start-in-tray=true
use-camera-offset-from-centering=true
compensate-translation-disable-source-pitch=false
compensate-translation-disable-source-yaw=false
compensate-translation-disable-x-axis=false
compensate-translation-disable-source-roll=false
compensate-translation-disable-y-axis=false
keycode-disable-translation-compensation-while-held=Alt+F8
relative-translation-mode=1
neck-depth=10
neck-enable=true
keycode-center-alt=F12

[Curves-tx_alt]
point-count=1
point-0-x=100
point-0-y=100

[Curves-ty]
point-count=1
point-0-x=100
point-0-y=100

[Curves-ty_alt]
point-count=1
point-0-x=100
point-0-y=100

[Curves-tz]
point-count=1
point-0-x=100
point-0-y=100

[Curves-tz_alt]
point-count=1
point-0-x=100
point-0-y=100

[Curves-rx]
point-count=1
point-0-x=180
point-0-y=180

[Curves-rx_alt]
point-count=1
point-0-x=180
point-0-y=180

[Curves-ry]
point-count=1
point-0-x=180
point-0-y=180

[Curves-ry_alt]
point-count=1
point-0-x=180
point-0-y=180

[Curves-rz]
point-count=1
point-0-x=180
point-0-y=180

[Curves-rz_alt]
point-count=1
point-0-x=180
point-0-y=180

[proto-freetrack]
use-memory-hacks=false
used-interfaces=0

[tracker-pt]
active-model-panel=1
automatic-threshold=false
camera-fov=56
camera-fps=60
camera-name=USB2.0 Camera
camera-res-height=480
camera-res-width=640
cap-x=65
cap-y=130
cap-z=130
clip-by=70
clip-bz=80
clip-ty=40
clip-tz=30
dynamic-pose-resolution=true
init-phase-timeout=500
m_01-x=0
m_01-y=0
m_01-z=0
m_02-x=0
m_02-y=0
m_02-z=0
max-point-size=10
min-point-size=1.7
model-centroid-x=0
model-centroid-y=-267
model-centroid-z=0
threshold-primary=128
threshold-slider=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@W@\0\0\0\0\0\0\0\0\0\0\0\0\0@o\xe0\0\0\0\0\0)
blob-color=2

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

[modules]
filter-dll=Accela
protocol-dll=freetrack 2.0 Enhanced
tracker-dll=PointTracker 1.1

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

[spline-X]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3?\xe0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\x12\0\0\0\0\0\0@1\0\0\0\0\0\0@&\0\0\0\0\0\0@R\xc0\0\0\0\0\0)

[alt-spline-X]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x1@>\0\0\0\0\0\0@R\xc0\0\0\0\0\0)

[spline-Y]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3?\xe0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\b\0\0\0\0\0\0@*\0\0\0\0\0\0@\x18\0\0\0\0\0\0@R\xc0\0\0\0\0\0)

[alt-spline-Y]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3?\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@H\0\0\0\0\0\0@\x4\0\0\0\0\0\0@R\x80\0\0\0\0\0)

[spline-Z]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x2@\0\0\0\0\0\0\0@(\0\0\0\0\0\0@\x1e\0\0\0\0\0\0@R\xc0\0\0\0\0\0)

[alt-spline-Z]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x2?\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@>\0\0\0\0\0\0@R\xc0\0\0\0\0\0)

[spline-yaw]
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\0\0\0\0@>\0\0\0\0\0\0@f\x80\0\0\0\0\0@D@\0\0\0\0\0@f`\0\0\0\0\0)

[alt-spline-yaw]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x1@f\x80\0\0\0\0\0@f\x80\0\0\0\0\0)

[spline-pitch]
points="@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x4?\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\x12\0\0\0\0\0\0@7\0\0\0\0\0\0@9\0\0\0\0\0\0@f\x80\0\0\0\0\0@;\0\0\0\0\0\0@f0\0\0\0\0\0)"

[alt-spline-pitch]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@\x4\0\0\0\0\0\0@\x10\0\0\0\0\0\0@\x10\0\0\0\0\0\0@A\0\0\0\0\0\0@\x1a\0\0\0\0\0\0@[\x80\0\0\0\0\0)

[spline-roll]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x3@9\0\0\0\0\0\0@K\x80\0\0\0\0\0@Q\xc0\0\0\0\0\0@b\xa0\0\0\0\0\0@f\x80\0\0\0\0\0@c\xb0\0\0\0\0\0)

[alt-spline-roll]
points=@Variant(\0\0\0\x7f\0\0\0\xfQList<QPointF>\0\0\0\0\x1@f\x80\0\0\0\0\0@f\x80\0\0\0\0\0)

[accela-sliders]
ewma=@Invalid()
rotation-deadzone=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\x84z\xe1G\xae\x14{\0\0\0\0\0\0\0\0?\xc9\x99\x99\x99\x99\x99\x9a)
rotation-nonlinearity=@Invalid()
translation-sensitivity=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0?\xe4\xcc\xcc\xcc\xcc\xcc\xcd?\xa9\x99\x99\x99\x99\x99\x9a?\xf8\0\0\0\0\0\0)
translation-deadzone=@Invalid()
rotation-sensitivity=@Variant(\0\0\0\x7f\0\0\0\x18::options::slider_value\0@\x3\x99\x99\x99\x99\x99\x9a?\xa9\x99\x99\x99\x99\x99\x9a@\x4\0\0\0\0\0\0)
Logged
Pages: [1]   Go Up
 

Page created in 0.127 seconds with 26 queries.