BeAnotherLab / The-Machine-to-be-Another

openFrameworks software for swapping bodies with The Machine to be Another. Currently being ported to Unity.
http://www.themachinetobeanother.org
Other
24 stars 0 forks source link

The-Machine-to-be-Another

Welcome to the repository for The Machine to be Another! This is the part built with openFrameworks. To get the (soon to be deprecated) puredata component go there

The software allows you to run two different kind of setups. The gender swap (or two-way swap setup) requires two oculus rift and two USB cameras. In the two-way setup, both video feeds are fed to the other person's head-mounted display. The classic setup requires building your own open-hardware camera vest. The performer wears the vest so that the user can see from his perspective.

It can be controlled from the keyboard or through a phone or tablet running TouchOSC. The software supports both DK1 and DK2, as well as PS3 cameras (our favorite), ovrvision cameras, and regular USB cameras. Only Windows is supported, but the code should easily be ported to OS X.

alt tag Two-way swap setup

Setting up the software

Here's an overview of the parameters necessary to setup the application. They should be set in the settings.xml file located in bin/data.

Running the software

First you need to install the oculus runtime 0.4.4 and if you're using a PS3 camera, you'll need to buy the CLeye PS3 driver for the classic setup, you need to install the arduino driver if you don't have already

To run the software for the first time, rename the file settingsexample in bin/data to settings.xml then open it with a text editor. Following is a description of the parameters necessary to run each setup.

For the classic (one-way swap) setup :

For the gender swap (two-way swap) setup :

Before running the software, make sure the oculus is detected and if you're using a DK2, that it is set in extended display mode. Remember that you must rotate the DK2 display to be in landscape mode using the windows screen resolution menu.

Once you have set the parameters, run The-Machine-to-be-Another.exe. Use the console to check for error messages. Two windows will show up. One is a debugging view, meant to be displayed on the computer screen, while the other should be dragged onto the Rift display. Press F to switch the selected window to fullscreen.

If you are running the classic setup, check the Servos Control part of this readme. If you are running the body swap setup, you should be ready to go. Check that moving one Rift moves the display in opposite directions on the other computer. If not, you might need some troubleshooting.

Compiling the software

The project was tested with Openframeworks 0.7.4 on Windows 7&8 + Visual C++ 2010 Express.

  1. Download openframeworks 0.7.4 and unzip it
  2. Using the git console executegit clone https://github.com/BeAnotherLab/The-Machine-to-be-Another inside the openframeworks_folder/apps/myapps. If you download the project as a zip file using the github web interface remove the "-master" extension from the name of the folder.
  3. Clone the modified ofxFenster and ofxUI into the openframeworks_folder/addons folder.
  4. Open the project from Visual Studio and compile.

TouchOSC control

alt tag

You can load background music and as many audio samples in mp3 format as you wish with the machine to be another. in settings.xml putting the file names in the <sounds> tag without their extension automatically assigns them numpad keys to trigger them. The music will automaticly loop and the next samples can be triggered by pressing keys 1-9 or sending a trigger on /btnx through TouchOSC. TouchOSC layouts depend on your devices resolution but you can check in this folder for examples. We also include files we used in different installations or performances made through the years. You can also send /dimon /dimoff and /ht to respectively dim the display to black and back and reset the headtracking in case of drift (people must be looking straight for it to work). Also /driftPlus and /driftMinus allow you to nudge drift correction manually.

Building the Vest

We designed a 3D printable vest that you can build yourself. The plastic parts are combined with off-the shelf components so that it is very easy and cheap to replicate. Instructions on how to build it are coming, but here is what you need to get

Servos control

Servo control pure data patch is here run the patch and start the openFrameworks app. check the pitch, yaw, roll faders are moving when you move the oculus plug-in your arduino with firmata servo control example loaded on it https://github.com/firmata/arduino/blob/master/examples/ServoFirmata/ServoFirmata.ino and click on "devices" to see on with serial port your arduino is plugged in. Edit the box that says "open x" to replace x with the COMport and click it to activate it. Check the console for errors.

TODOs ========================
If you wish to contribute, then please consider the following :