Research is key if you want everything to work right for what you're trying to do, and I've done plenty of it. I hope the following doesn't scare you away from trying, but there's a lot to know before attempting to make a DIY HMD.
For a starting point, here's a list of components in an HMD and the order in which you need to consider them. I break this down giving details about each further below, and explaining assuming you have no idea what any of this stuff means (along with anyone else that may be reading this!).
- 1) LCD
2) Driver
3) Lenses
4) Head Tracking Mechanism (optional)
5) Enclosure
6) Software
7) A Powerful Computer
1+2) LCD and Drivers
Oculus DK1 uses a 7" Innolux 1280x800 LCD which is readily available to buy for about $50-75 depending on where you look.
DK2 is actually using a Samsung Galaxy Note 3 screen (there are teardowns of the device showing this!) and they are using a low persistence mode which helps reduce ghosting.
On to some terminology about the most important part of our HMD.
PPI and Resolutions:
PPI is pixels per inch and resolution is the number of pixels on the screen itself.
The higher the PPI, the less "screen door effect" you'll see when your LCD is being magnified by your lenses.
Typically if you're going with a higher resolution on the same size screen (eg. 1280x800 vs. 1920x1080 7" screen) the PPI will be higher.
Things become clearer and more refined with a higher resolution display, and with a higher PPI, the pixels start to disappear becoming almost unnoticeable.
Refresh Rate / Response Time:
Refresh Rate is how often the image is sent from your hardware to the screen itself. 60hz = 60 times per second. 120hz = 120 times per second.
Response Time is how quickly the pixels can change from one color to another, typically measured by going from 50% grey to black, then from black back to 50% grey.
Ghosting / Image Blur: Move your mouse around on your current screen, and you can see how it starts to blur the moment you start moving it even with your eyes tracking it - that blur is caused by the response time of the pixels on your LCD as they are changing from one state to another. This is something harder to control as it is a hardware limitation of the LCD itself. Screens with higher response time will see more pronounced ghosting. Typical TN panel LCDs have 1-5ms response time while IPS is between 5-30. While 30ms doesn't seem like a very long time, our brain still picks it up and we can see it. Having too high of a response time can make the image seem drifty sick feeling as ghosting images isn't what we are used to seeing in the real world and our brain doesn't like it if our virtual reality isn't behaving like normal reality.
Low Persistence / LightBoost:
Standard displays just constantly display whatever light the pixels want to let through as the backlight is always on. Low persistence or LightBoost is basically strobing the backlight on and off during the periods of time the pixels are being changed, thus removing the blurriness we would normally see as the pixels are changing. The downside to this is that if the backlight is strobing at less than 60hz, the flicker becomes perceptible to the human eye much like old CRT monitors used to do. This is where 120hz LCDs shine. At 120Hz we are then free to potentially have the backlight off for 50% of the refresh rate in which our pixels can transition freely, while the other 50% is used to display the actual image while still being at a high enough frequency that would be undetectable to our eyes. The downsides to this are 1) there are no small screens available that run at 120hz and 2) you need to pump 120FPS out of your game to get the best effect (see the section about the powerful computer about why this is important).
Your screens will also require power. Most of the drivers out there use 12V DC for input, but I've seen some that can also accept 5V which you could potentially grab from a USB port (typ. 500ma max).
An ideal screen would be 3840x2160 resolution, 120hz refresh rate with 1ms resonse time with a low persistence/light boost mode, but it's unlikely you'll find anything like that currently available in the size of screens we're working with. 1920x1080, 60hz and 15-30ms IPS screens are about all you're going to find right now and apparently it's not too bad.
Potential sources for LCDs are ebay, aliexpress, hacking up a portable DVD player, etc.
BONUS LINK!
Check out this neat Oculus Rift simulator too so you can get an idea of what it looks like at different resolutions and it also has a low persistence setting:
http://vr.mkeblx.net/oculus-sim/
3) Lenses
Depending on the size of the screen and the distances involved between where your eyes are and where the screen is, you'll need to find out which are the right lenses to use. Certain lenses provide
greater FOV as well. I haven't looked much into this aspect yet (still figuring out screen!) so I can't really comment, but as you want to do a double-screen, from what I read, they appear to be using Fresnel lenses.
Potential sources are ebay, amazon and the like.
4) Head Tracking Mechanism
This is an optional component only if you want a real VR experience. If you're just watching 3D movies or looking at 3D pictures or just want to see your games in 3D (not recommended), this isn't required.
When describing head tracking, there are different degress of freedom, or DOF , which describes the number of ways in which your head could be tracked.
3DOF would be Roll, Pitch and Yaw
6DOF would be the 3 above, including Up/Down, Left/Right, Back/Forward
9DOF would be the 6 above, along with a compass (magnetometer).
10DOF are the above along with a barometer which would only be useful if you wanted to know exactly how high off the ground your HMD is.
11DOF are the above along with a GPS unit which would only be useful if you wanted to know exactly where your HMD is on earth.
3DOF is enough to get a feel of being in a Virtual Reality as this is the freedom your neck has on its own.
6DOF would be able to simulate your head being in the a 3D space. For example, you could move your head in closer to look at an object in your HMD and the screen zooms in closer too.
9DOF would be able to know precisely which orientation your head is in.
The Oculus DK1 and DK2 use a 9DOF IMU
The Oculus Crystal Cove prototype uses an array of LEDs all around the head with a camera for tracking, but it also has a 9DOF IMU in case your head goes out of view of the camera.
As for what you can use and or get...
i. WiiMote/Gyroscopic Mouse/Cell Phone that has Gyroscopes/Other wireless "hackaround" means
You can use these to provide 3DOF head tracking without having to deal with electronics, though a bit of programming may be involved through an application known as FreePIE.
I've messed around with the Wiimote myself and it does work quite well with FreePIE for providing motion tracking. Wiimotes alone are only 3DOF devices, but they also have their little IR detector as well which can be used to provide 6DOF.
This is the easiest option as most of these items are already set up to connect to computers, are wireless, and use their own batteries. All you would have to do is find some way of attaching the device to your HMD, power it on, connect it to your PC and run whatever controlling software required.
Sources: Just about anywhere that sells electronics.
ii. AHRS/IMU w/ Arduino or the like
These are small circuit boards dedicated to providing spatial positioning using accelerometers, gyroscopes and magnetometers and can provide 9, 10 or 11DOF. You'd have to hook it up to something that can interface to a PC, such as an Arduino. The good thing about using these is that it's easy to integrate into your HMD so that it is a one piece unit, as they're just little circuit boards and are usually more accurate than using a hackaround. Unless you have a bluetooth or WiFi module to hook up to the Arduino, this would require USB or network connectivity to send the data to your PC. This would require some programming knowledge for programming the Arduino itself, though I'm sure there is code readily available online. These can be purchased for roughly $30-$60 or even upwards of $100 depending on the accuracy required.
From what I understand an IMU cannot be used on it's own for full position tracking, with exception of maybe an 11DOF IMU. So if you want to be able to track your head actually moving around in the space, you'll need to use something else to ascertain your head's position.
Again, these devices require power, but it's probably something you can siphon off of the power you're using to power your LCD driver - you'll just need to figure out where on the board you can pull the right voltage from.
Sources: Adafruit has a small tutorial using an IMU and Arduino they sell and how to get it hooked up for just such a purpose. Other electronic component shops online may have these devices, but be prepared to not have instructions on how to use them or hook them up.
iii. IR LED Tracking
3 IR LEDs attached to your HMD and a web camera with no IR filter can be used to provide 6DOF head tracking. Minimal soldering would be required to hook the LEDs up on your HMD. Depending on the camera used you can get really good 6DOF tracking and it's a very simple solution, however, you're limited to tracking within the field of view of the camera itself. I believe you would need to use a piece of software called FreeTrack to get this working and again, maybe a bit of FreePIE.
This solution would require some power on your HMD as well. You can try to pull from your LCD driver or from a separate battery pack attached to your HMD.
Sources: Any electronic component shops will carry LEDs, resistors and a battery holder for just such a project.
5) Enclosure
This can consist of just cardboard, foamcore or other easily obtainable "stiff" and easy to work with material to build your prototypes with hot glue, or you could have it 3D printed. Point is, it needs to contain all the other parts that make your HMD.
This would need to be made to size for the screens you're trying to use and has to have the correct dimensions set up for the distance between the lenses and the screen(s) and the user's face. I see people using ski goggles or welding helmets as part of their enclosures to to ensure a good fit and comfort.
For designing your enclosure, I'd highly recommend looking through these forums some more, and also look into the threads regarding the Infiniteye for suggestions on how to build it.
Potential sources are your recycling bin for cardboard, art stores for foamcore, and there are places online that can do 3D printing for you if you don't have one yourself, and some guides offer their models for 3D printing too!
6) Software
There's two types of software you'll need, control software and rendering software.
I use the term control software to refer to anything that your Head Tracking component uses to provide movement on-screen. For example, if you're using a Wiimote, you'd need FreePIE. FreeTrack if you're using LEDs etc. What you use is based upon what you decide to work with and what's compatible with the hardware.
Rendering software is either the application you're using itself that natively supports HMDs (like Half-Life 2) or software that hooks on to the game processes and forces a specific rendering of the scene to provide the correct image to your screens. This is why when you view Oculus videos on Youtube and the like, they always look a bit distorted or roundish - that's the application rendering it specifically for the intended lenses so that the image fills your view.
There's freely available software that'll help with hooking on to game processes to deliver 3D images, but some work better than others (if at all!) on some games, so you may need to get different software for different games.
Again, not something I've looked too much into as of yet, but I know there are solutions out there for doing this work. I also don't have any details about the rendering software used with the Infiniteye, so I'm not sure what's really needed if you wanted to do dual screens.
7) A Powerful Computer
Gaming on low-res, low quality settings, and barely obtaining 15 Frames Per Second (FPS) is not really a big deal when using a normal monitor, and it's nothing more than an annoyance. When using an HMD it's a completely different ball game. While you can get away with it for a short while, you'll find yourself not wanting to play on an HMD for very long...
When your vision is completely immersed by an HMD, your brain starts to readjust and assume what you're seeing is really right there in front of you, rather than interpreting it as just being a screen. "Virtual Reality" really is a good term to describe it as your brain is actually assuming what you're seeing is real. Just to elaborate on my own experience with how integrated my brain can get into a VR setting, while I was messing around with the Wiimote trying out some head tracking in a 3D game on my standard monitor, IT STILL messed with my head. The "Roll" formula I was using for tracking was reversed, meaning I tilted my head one way and the screen actually rolled the other. My mind was having a hard time trying to piece this together and I couldn't move my neck for a couple of seconds as I was trying to move my neck back up but my brain started to send signals to move my neck down even further to attempt to reorient my view!
It's not much more than annoyance to see lag or stuttering when gaming on a normal screen as your vision has access to other queues it can pick up on to determine your orientation. While wearing an HMD, your brain will perceive any visual lag or stuttering you're seeing as something being wrong with you internally, similar to when you start to hallucinate. Your brain starts to trigger feelings that make you want to vomit to get out anything bad in your system you may have ingested which could have caused said said hallucinations, whether it's real or not. Random stuttering or other weirdness generated by your game from trying to push your computer too hard can also trigger those feelings, so because of this, you need to have a good enough computer to pump out 60 FPS at the native resolution of the screen(s) with minimal graphical issues as possible. Why 60FPS? This will match the refresh rate (60Hz!) of the LCD you're using which then provides extremely smooth, non-tearing rendering with V-sync turned on, which drastically reduces any strange artefacts that your brain wouldn't like.
It'll be more difficult for you if you do decide to use a dual-display as you're then having to pump more pixels as well - 1920x1080 x2 = 3840x2160 = 4K resolution which requires some big-time GPU processing power. I'm running an i5-4670k with a GTX 980 which can pump out 60FPS on some games at 3840x2160, BUT only with sacrifices to some quality settings (eg. no anti-aliasing). You may not need a better computer if you're willing to sacrifice some quality settings that will help improve your FPS and smoothness of your game.
A really hardcore computer is not at all a requirement if you're just using the HMD to watch 3D movies and the like as there's minimal processing power required as nothing is really being rendered, just being played back, but if you start moving your head around while watching a movie, be prepared to also feel a bit sick or disoriented too. A laptop can be used to playback 3D content without issue, but again, gaming on a laptop with an HMD and integrated graphics is not going to be a good experience.
OTHER ERGONOMIC DESIGN CONSIDERATIONS:
The weight of the device needs to be kept low as you'll be having to hold up and move your HMD around with your neck, especially if you're using head tracking. It might be tough to keep weight down on a dual screen HMD without trying to move the drivers to a separate pack you could have attached to your waist. The materials used to make your HMD can play a big role in this as well.
IPD (Interpupillary Distance) is the distance between your pupils - there is an average for humans, but not everyone is built the same. When dealing with a single screen set up, this distance should be known based upon the user of the device and the lenses positioned such that the center of the two lenses matches the IPD of the user. The same applies for the distance between the lenses and the screen - some people's eyes may be further back in their skull and the light needs to be focused correctly for them. If the lenses are off by a few millimeters it can start to distort the image enough to cause eyestrain and again that sickness in your stomach from the image being warped incorrectly. I think this may only apply while using a single screen since the lenses are round and focusing the rounded rendered image for us, whereas if you were to use dual screens and Fresnel lenses I believe you're just getting magnification. So if you're going with single screen, try to make the lens spacing adjustable if you want others to be able to use it.
As for how to put it all together, well... I'm not there yet and there's no 100% guide on how to build these things. A lot of it is trial and error. There are guides out there that can give you some info, you just need to search. I hope I've given you enough info to get you going and take into consideration what I've mentioned in this abhorrently long forum post.
Cheers!