Nearly every human experiences the world with a pair of eyes that are only in one position for their entire lives. TurkeyDev wanted to change this by creating a VR device that allows people to see themselves in the world from a different perspective. In his first attempt at creating this system, TurkeyDev began by taking a DIY Google Carboard VR headset and pairing it with a Raspberry Pi camera, but in doing so ran into several issues. The main problems with this initial setup was the lack of a good, solid headset and too much latency which could cause motion sickness.
The first prototype for this third-person virtual reality device involved using a Raspberry Pi Zero W that grabbed frames from a camera and sent them over the web to a browser. After doing some digging into the Raspberry-Pi-Cam-Interface program, TurkeyDev discovered that it uses another program called RaspiMJPEG at its heart to capture images at a specified frame rate and send them to a buffer in RAM. Next, these images are sent to a web interface and shown as a preview. In order to display it correctly within the VR headset, the feed had to be shifted slightly to the side to give the illusion of stereoscopic vision. Overall, this approach worked well enough at first, but it eventually caused some viewing discomfort in the form of double-vision and too much latency.
TurkeyDev chose to nearly start over by tossing out his current project and beginning from scratch on version two. He was able to stumble across the WebVR specification which allows for VR experiences within a browser. Although he later found out it was discontinued in 2018, its successor, WebXR, is still around and became the standard for nearly all browser-based AR and VR. He was able to make a port of his code that took advantage of the WebXR API to process the incoming video stream from the Pi and split it into two parts for a much better stereoscopic experience. With all of those issues solved, users could now enjoy the third-person VR camera setup.
This second iteration was a drastic improvement over the previous one, but there are still areas that can be made better. By increasing the bitrate of both the Pi camera's stream and what the web browser outputs, camera quality can be greatly enhanced. TurkeyDev also plans on making the framerate faster which can assist in reducing motion sickness. You can view his demonstration video here for more information on how he built it.