• Welcome to PiBoSo Official Forum. Please login or sign up.
 
March 28, 2024, 05:14:50 PM

News:

GP Bikes beta21c available! :)


Making use of 6DOF headtracking, among other things

Started by passerBy, April 05, 2017, 07:39:05 AM

Previous topic - Next topic

passerBy

First of all, hello everyone :) I'm not really new here, but it seems that the majority of my previous posts perished with the old forum, and since it's been around 4 years, no wonder :)

As the description says, I would really love to see the headtracking translational movements also implemented in GPB. Why bother, you ask? Well, there can be use for them other than simply being able to shift the viewpoint. For example, we could use the longitudinal and lateral translations to affect the rider's leaning. This would help tremendously those of us who use wheels or other controllers with not enough analog axes to spare. And especially helpful for the direct steering mode while using a wheel.

With that out of the way, further I will try to recall any other new suggestions that was springing into my mind recently.

I think DST needs more love, now that it's proven it can be used without the level of frustration of the earlier betas. It needs a UI option in the settings screen. Preferably, a page of its own. Also, maybe some hybrid mode where the UI rider would do the most of the keeping the bike on the wheels, but the user could request steering position/relative steering position. Yes, the latter would be pretty much the directsteer=2 mode, but with less accidental capsizes. A simulation of the virtual rider's inner ear so that he could better keep the balance?

Would also be nice to have the ability to see the bike's info right next to the bike itself. Or maybe like it's done in Automobilista (for the cars), with the specs being presented on the loading screen. Not everyone prefers kW over bhp, so the better solution here to give both :) Torque and hp curves could be of some use as well :)

More FFB options. I would like to crank it a little higher, but in some cases the FFB gets a little bit violent. An adjustable filter could help with that. Also the "small forces" amplifier setting that made its way into mostly every decent car sim out there.

Can't remember what other things I had on my mind at the moment... Will add them later.

HornetMaX

For the headtracking thing: if you have an head tracking device that can be seen as as a joystick then you're good to go. OpenTrack can do that I think (I use it with a 3dof device to control the view in GPB, but I could easily assign it to the rider lean or any other GPB input).

passerBy

Quote from: HornetMaX on April 05, 2017, 01:00:35 PM
For the headtracking thing: if you have an head tracking device that can be seen as as a joystick then you're good to go. OpenTrack can do that I think (I use it with a 3dof device to control the view in GPB, but I could easily assign it to the rider lean or any other GPB input).
For some reason it doesn't find my vJoy driver. Maybe it has something to do with this OpenTrack being a portable edition. On the other hand, it seem to work fine with other outputs.

Even if it would work, that's hardly a solution, because I want the rotational axes to act as a FreeTrack device, whereas the translational ones should be converted into a 2-axes joystick.

I think I found a solution to that, but it will require some coding. I will try to use FreePIE as a feeder for a vJoy device, hopefully that will enable me to extract the linear half of the DOFs. The problem is, I have a very little idea about what the script should look like...

HornetMaX

Quote from: passerBy on April 05, 2017, 05:08:07 PM
Quote from: HornetMaX on April 05, 2017, 01:00:35 PM
For the headtracking thing: if you have an head tracking device that can be seen as as a joystick then you're good to go. OpenTrack can do that I think (I use it with a 3dof device to control the view in GPB, but I could easily assign it to the rider lean or any other GPB input).
For some reason it doesn't find my vJoy driver. Maybe it has something to do with this OpenTrack being a portable edition. On the other hand, it seem to work fine with other outputs.

Even if it would work, that's hardly a solution, because I want the rotational axes to act as a FreeTrack device, whereas the translational ones should be converted into a 2-axes joystick.
Hmm I haven't tried but maybe you can run two instances of opentrack in parallel, one for 3 rotation dof (freetrack output) and one for the 3 translation dof ones (joystick emulation output).
in any case, you can ask opentrack dev, he's very active.


passerBy

Quote from: HornetMaX on April 05, 2017, 06:23:35 PM
Hmm I haven't tried but maybe you can run two instances of opentrack in parallel, one for 3 rotation dof (freetrack output) and one for the 3 translation dof ones (joystick emulation output).
in any case, you can ask opentrack dev, he's very active.
After some tinkering around I made vJoy work with the app. Made two profiles for OT that I enable in two separate instances of it. Seems to work at least with the sine wave generator. I will check how this behaves with the actual tracker tomorrow.
Thanks for the suggestion, Max. Looks like I won't need to resort to FreePIE after all. 

tchemi

I made this with the TrackIR. You can emulate the mouse with trackir. I used that to at the time TrackIR wasn't supported. I used the mouse as a free look and it was binded to my head.
If you can bind leaning to the mouse, this should be doable, at least with the TrackIR. BUT ! you may lose the head tracking in general :/

passerBy

Quote from: tchemi on April 05, 2017, 09:32:39 PM
I made this with the TrackIR. You can emulate the mouse with trackir. I used that to at the time TrackIR wasn't supported. I used the mouse as a free look and it was binded to my head.
If you can bind leaning to the mouse, this should be doable, at least with the TrackIR. BUT ! you may lose the head tracking in general :/
No, I'm going to use one instance of OpenTrack for rotational headtracking and the other one to drive the rider lean, so that when I approach the camera, the rider would lean forward, and when I shift my head to a side, the rider would lean to that side about as much, but I'm still hoping to retain the ability to look wherever I want to :) If this won't work out, I'll try to figure out how to configure FreePIE to do that for me.

passerBy

Ok, that was a silly idea. No way two programs (or two instances of the same one) could share one camera.
Nonetheless, it was worth checking the headtracking rider lean, even if at the expense of the freelooking.

I can't freaking believe nobody really mentioned this possibility. It's not fun losing the freelooking, but boy, is this way of controlling the rider lean good... If only I knew this before. Now I don't think of what to do every next corner, now I simply ride the bike!

Whoever has a translation-capable headtracker, should give this a go. It's really good.

Piboso, please add the option to have the translational axes drive the rider lean. I can imagine using a VR set this could feel incredibly immersive. 

tchemi

DD has already thought about integrating such a feature in his build. But so far, he is busy with his handle bar and from what I recall, He doesn't want to be dependent of a third party.
But, you are not the first one to have this idea  ;)

Also, When motionJoy was still operational, I used to play GPBikes with my ps3 controller and I tried to use the accelerometer in the pad to lean. First of all, I used it to turn the bike. And to be honest, the progression for begginers was awesome !! Nothing compared to joystick !! You wanted to lean the bike, you leaned the pad and it worked quite well !

But ! There was a huge brake for me. I have not figured out how to restrain those axis. So You would have to lean the pad at 90° to have a 100% lean. It wasn't confortable at all. And also, if you would bank the pad to much (like 110°) the accelerometer would think the pad was coming back to horizontal and you would lose your input. If only I could set the limits of those axis, it would have been a serious way of controlling manual leaning.

passerBy

Quote from: tchemi on April 06, 2017, 05:06:44 PM
DD has already thought about integrating such a feature in his build. But so far, he is busy with his handle bar and from what I recall, He doesn't want to be dependent of a third party.
I remember him thinking of something load-cells based, that could be put on the seat, or something like that :)

QuoteBut, you are not the first one to have this idea  ;)
I never implied that :) In fact, I'm extremely surprised this feature is not used by pretty much everybody. It made so much difference for me, I keep asking myself, "where the heck have you been before with this idea?" :)

QuoteAlso, When motionJoy was still operational, I used to play GPBikes with my ps3 controller and I tried to use the accelerometer in the pad to lean. First of all, I used it to turn the bike. And to be honest, the progression for begginers was awesome !! Nothing compared to joystick !! You wanted to lean the bike, you leaned the pad and it worked quite well !

But ! There was a huge brake for me. I have not figured out how to restrain those axis. So You would have to lean the pad at 90° to have a 100% lean. It wasn't confortable at all. And also, if you would bank the pad to much (like 110°) the accelerometer would think the pad was coming back to horizontal and you would lose your input. If only I could set the limits of those axis, it would have been a serious way of controlling manual leaning.
We need more ideas on how to translate our upper body movement into analog axes that could be used in the sim. That PS3 controller might be good, but I suppose it's accelerometers based? Maybe some gyros too... Not sure if that would allow for enough precision. Not to mention it's bound to have drift over time. That's why I think camera-based trackers might be better suited for picking up translational motion. I wonder if we could utilize Kinect :) Proved useful enough, I might theoretically buy one...

Anyway, have you tried to make your headtracker control the rider's lean yet? :) If you need help with vJoy, just ask.

HornetMaX

Quote from: tchemi on April 06, 2017, 05:06:44 PM
But ! There was a huge brake for me. I have not figured out how to restrain those axis. So You would have to lean the pad at 90° to have a 100% lean. It wasn't confortable at all. And also, if you would bank the pad to much (like 110°) the accelerometer would think the pad was coming back to horizontal and you would lose your input.
I'd try with Joystick Gremlin (google it).

I can give a try strapping my edtracker to my chest/back and see if I can control rider lean moving my torso.

passerBy

Quote from: HornetMaX on April 06, 2017, 06:48:42 PM
I'd try with Joystick Gremlin (google it).
That appears to be a really handy piece of software. Thanks, Max.

QuoteI can give a try strapping my edtracker to my chest/back and see if I can control rider lean moving my torso.
I didn't think you had EDTracker. Most likely it won't be as useful for rider lean (won't hurt to try, though). However, I think there's a better solution. If you are good with DIY, why not add three LEDs to the enclosure? Preferably, so that all the devices are powered by the same USB source.
Alternatively, you could get a ready-made LED clip. That's what I have. I'm planning to get EDTracker and assign it for the rotational movements, while using the clip solely for translation.

HornetMaX

Quote from: passerBy on April 06, 2017, 07:12:19 PM
I didn't think you had EDTracker. Most likely it won't be as useful for rider lean (won't hurt to try, though).
I gave it a quick try: it seems to work but it's not trivial to setup. I need to use vJoy/Joystick Gremlin or vJoy/OpenTrack, otherwise you don't have enough parameters to play with.
EdTracker is seen as a normal joystick by Win (and hence by GPB), but once you calibrate it, then you have no way to adjust the curves (and that makes it useless).

Quote from: passerBy on April 06, 2017, 07:12:19 PM
However, I think there's a better solution. If you are good with DIY, why not add three LEDs to the enclosure? Preferably, so that all the devices are powered by the same USB source.
Alternatively, you could get a ready-made LED clip. That's what I have. I'm planning to get EDTracker and assign it for the rotational movements, while using the clip solely for translation.
No thanks. I don't want to use an additional camera/ir camera with all the troubles it brings. Too much hassle for a little result.
I already find the wired EdTracker bothersome so ....

passerBy

Quote from: HornetMaX on April 06, 2017, 08:30:06 PM
I gave it a quick try: it seems to work but it's not trivial to setup. I need to use vJoy/Joystick Gremlin or vJoy/OpenTrack, otherwise you don't have enough parameters to play with.
EdTracker is seen as a normal joystick by Win (and hence by GPB), but once you calibrate it, then you have no way to adjust the curves (and that makes it useless).
I had to use vJoy as well. Hopefully, Piboso will implement what I was asking for in this thread :)
Why did you feel like adjusting the curves? Does it also have 180 degrees span? Then I guess it's rather the range that needs to be adjusted.
But if you insist on the curves, why not just use the linearity settings in GPB? Also, from what I can tell, Gremlin allows to do that and then some. I have yet to make it work, but at least based on the info from the site, this piece of software is quite promising.

Quote
No thanks. I don't want to use an additional camera/ir camera with all the troubles it brings. Too much hassle for a little result.
I already find the wired EdTracker bothersome so ....
You don't know what you are missing :) Then again, you don't have a wheel yet... And I feel like this kind of rider lean control could only be useful a lot with the angular direct steering (plus FFB) in particular.

HornetMaX

I can configur vjoy+Joystickgremlin all fine: the virtual joystick behaves well in Windows but somehow weirdly in GPB. The strange thing is that my plugin sees the virtual joystick just fine.
There's a GPB bug somewhere.