PDA

View Full Version : Sixaxis head tracking


cliffbo
03-27-2008, 07:29 PM
Viper, notice in the first video how he uses the Sixaxis as a pointing device.


Back to main
PS3 Sixaxis VR stuff


see the vids here:http://joelclemens.colinr.ca/stuff.html



This first video is my attempt at cheap head tracking. The second video here is a better illustrated version that properly demonstrates the 360 degree tracking, along with an attempt at motion tracking. (see bottom of page for the GlovePIE script used in 1st video)

The GlovePIE script I used is different in this video, it is specific to my modded version of the darkplaces engine. You can download my windows exe here. (you'll need nexuiz 2.3 for this to work, also keep in mind there are some command line variables that I changed for the demonstration) Here is the GlovePIE script for the second video.

Using the playstation 3 sixaxis controller, along with a free program called GlovePIE, I am building a cheap, accessible VR system. The helmet shown is a retrofitted HMD (head mounted display), HMDs are much cheaper than VR helmets because they don't have head tracking. (which can now be substituted with a PS3 controller for a mere 40$ instead of hundreds. [recently it has come to my attention that there is such thing as a gyro mouse, which can be used for head tracking. I was somewhat relieved to see that the ps3 controller is still cheaper than the mouse in question]

This is my undergraduate thesis project; my ultimate goal is to build a map where the player must cross an abyss by means of a narrow plank. In real-life, the player is simply walking across a floor. But to do this, I need to include more motion/position tracking. The sixaxis has accelerometers and should be capable of position tracking, but alas, I don’t have time to derive the correct math to sort out all the force vectors. (remember, it measures acceleration, not speed)

You may ask,
What about all the wires?
Well, yes, currently the system is covered in wires; the sixaxis does have Bluetooth, and should eventually be implemented on windows. Also, the HMD that I am using plugs into my video output on my laptop, so it is just a standard composite video signal that can easily be transmitted with an inexpensive RF transceiver.

The other reason I think this is better than conventional head tracking, is that, because of GlovePIE, it is universal. The up/down, left/right motion is mapped onto the mouse. So any 3d engine that uses the mouse to look around (just about all of them) can use this.
The trick comes with rolling and motion tracking. I needed an engine that properly supports joysticks. (games like HL2 don’t implement a joystick properly).
Nexuiz is an open source version of the Quake1 engine. It had disabled code for Roll that I was able to re-enable and modify slightly to work better with the joystick. It also reads joystick axis much more readily than modern game engines.

Currently I have a theory that I may be able to use a mouse wheel to enable motion tracking. The user would have to have something on the floor at all times when walking, (like a stick with a trackball on the end of it). The mouse wheel data can easily be mapped onto a virtual joystick axis. A second mouse wheel would be required for side to side motion, or a trackball like the one on the Apple Mighty Mouse.

Shown in the second video, I’m sure you've noticed that there seems to be some motion tracking. Unfortunately, this is not from the sixaxis, but rather from an up-side-down mouse so the mousewheel is on the floor. Glovepie is being used to convert the mousewheel data into joystick data, which the game uses to move forward and backward. I can’t yet get side to side motion, any help or suggestions for this would be greatly welcomed. (I'd love to use an optical mouse, but any motion on the sideways axis interferes with the head tracking, this is easy to block on out a ball mouse)

I’ve already gone as far as to re-wire a cordless ball mouse so the left/right axis (windows driver is used to control pitch in the game so it is unavailable) is putting data into the mousewheel. However, this didn’t work as the logitech cordless mice that I'm using have some sort of issue where the mousewheel and mouse axis cannot be moved at the same time without causing some sort of horrid lag. (wish I knew that before I went though the trouble of reverse engineering it)
I used a ball mouse because it is easier for me to re-wire the mouse rather than re-writing my own windows driver, and opitical mice’s forward/side motions are not measured separately like a ball mouse

Another issue I’m having with motion tracking is that it seems that the darkplaces engine seems to be non-linear when it comes to joystick sensitivity. (which I’m relying on for motion tracking) That is why in the video, there is more ground covered in the game than in real-life.

Some other issues I’m still working on and am open to suggestions are:

While in the game, When I look down, I cannot see my legs/feet. Nexiuz has a 3rd person camera available, but the polygons of the upper portion interfere with viewing.
A possible solution is to create a custom model that is only legs.

The player model in Nexuiz is animated to run only at 1 speed, so it looks really silly when walking slowly.

I’d really prefer to have motion tracking with accelerometers, but I will not be able to do this myself within my time limit. (this project is due at the end of march)

And finnally, if you want the GlovePIE script that was used in the first video above, its right here. It is essentially mouse emulation for the sixaxis and should therefore work with any 3d game that uses the mouse to look around.

Viper
03-27-2008, 08:42 PM
So the first video is a complicated set up to get the sixaxis to do what the Wii-mote does standard?

The second video is simply a motion capture mapped to a first person viewpoint.

cliffbo
03-27-2008, 08:46 PM
So the first video is a complicated set up to get the sixaxis to do what the Wii-mote does standard?

The second video is simply a motion capture mapped to a first person viewpoint.

the point is that the Sixaxis CAN be used as a pointer, which i've pointed out several times... and i think that part is very very simple to do. Warhawk in effect is a pointer that makes your ship go in certain directions the only difference is that the background moves, it would be easy to make a cross-hair move instead

Viper
03-27-2008, 10:21 PM
So the point of this thread is to prove to me the 6ax can point?

Well obviously it can simply because it can read acceleration from a home position. The difference is the home of reference. The 6 ax has the same fault as default home for an analog stick. Start a game with the stick pressed to the right and you'll understand my point. You can have the 6ax pointed straight up in the air but the cursor would star mid screen. That isn't pointing.

Also, if were such an easy thing to implement, then why do so very few games on PS3 utilize it? What FPS on PS3 uses the 6ax to aim with?

Sephiroth_VII
03-27-2008, 10:26 PM
I think the reason why the SIXAXIS hasn't been used as a pointer for fps' has more to do with its shape than anything else.

It just doesn't feel natural to aim a gun like that, imo.

LiquidEagle
03-27-2008, 10:26 PM
MGS4 did but I think they removed that function...

cliffbo
03-27-2008, 10:27 PM
So the point of this thread is to prove to me the 6ax can point?

Well obviously it can simply because it can read acceleration from a home position. The difference is the home of reference. The 6 ax has the same fault as default home for an analog stick. Start a game with the stick pressed to the right and you'll understand my point. You can have the 6ax pointed straight up in the air but the cursor would star mid screen. That isn't pointing.

Also, if were such an easy thing to implement, then why do so very few games on PS3 utilize it? What FPS on PS3 uses the 6ax to aim with?

lol... no, i thought it was nice tech, and put that in as an afterthought.

Viper
03-27-2008, 10:32 PM
OK.

The demo itself is nice. I enjoy seeing people take an existing product and make it go beyond its intended means.

VG Aficionado
03-27-2008, 10:51 PM
Old (http://forums.e-mpire.com/showthread.php?t=84099). Old (http://forums.e-mpire.com/showthread.php?t=83363). OLD (http://forums.e-mpire.com/showthread.php?t=66404). Sorry, redundant thread.