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.
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.